标签: sinatra

Sinatra 与 Padrino 或 Rails 的 Web API?

我使用 Rails 编程已经大约 7 个月了。主要是一个管理数据库的应用程序,你知道,清理、更新、删除、查找孤立条目等。

我有一个 API 可以与我们用 PHP 编写的桌面程序进行对话。我们现在发现自己想要将所有内容都转移到 Ruby。该 API 需要快如闪电,并且不会有任何类型的视图或 HTML 页面,它只会通过 JSON 与我们的应用程序通信,发送和接收应用程序将显示和使用的数据。

所以,基本问题是,我应该学习 Sinatra 和 Padrino(使用 ActiveRecord)并用它们构建 API,还是在 Rails 中进行?

如果我使用 Rails,我可以保留很多我拥有的代码,甚至可以使用现有的代码,因为所有表都是相同的(数据库是相同的),只需为 API 编写更多方法。

我认为这样做的缺点是双重的:

  1. 这意味着代码更难管理和阅读,因为现在我们有了 API 位和所有维护位。
  2. 这意味着同一个 Ruby 应用程序正在做双重工作,因此 API 的速度不会像在另一个单独的 Ruby 应用程序中运行时那么快。
  3. Rails 应用程序的速度已经不是很好,但我怀疑这与我们的托管解决方案有关,而不是与 Rails 本身有关。

学习 Sinatra 和 Padrino 可能需要更多工作,但会带来更清晰的代码和一个用于 API 的单独 Ruby 应用程序,以及另一个用于维护的应用程序,这听起来更好。

但我对Sinatra和Padrino一无所知,占用空间和速度真的比Rails好吗?

我非常感谢那些实际使用过 Rails 和 Sinatra 以及 Padrino 的人对此的意见。

干杯。

activerecord sinatra padrino ruby-on-rails-3.1

1
推荐指数
1
解决办法
1692
查看次数

Sinatra 对每个请求运行方法

我在 Sinatra 中有简单的会话身份验证。但是,我想在每个请求上运行这个方法,这样如果用户没有登录(例如,用户名等的会话变量没有设置),那么它们将被重定向到登录页面。我怎样才能做到这一点?

ruby sinatra

1
推荐指数
1
解决办法
271
查看次数

如何在 Sinatra 中创建函数?

我有一个 Sinatra 脚本,我有一个通用方法或一组在多个地方使用的操作,我想将其抽象为一个方法。我无法找到帮助我完成此操作的文档,请问有人有任何想法吗?

一个典型的脚本如下所示:

require 'sinatra'

get '/' do
 'Hello world!'
end

get '/statement' do
 'Hello world!'
end
Run Code Online (Sandbox Code Playgroud)

如果我想创建一个函数greetings(),该函数同时显示“Hello world”/和 ,那么语法是什么/statement

ruby methods frameworks function sinatra

1
推荐指数
1
解决办法
1310
查看次数

如何配置 Sinatra classic 以使用 Puma

我有一个带有经典 Sinatra(不是模块化 < Sinatra::Base)的旧项目。如何使它使用 Puma Web 服务器而不是 Thin?

我在互联网上找到的唯一使用 Puma 的例子是模块化 Sinatra。

参考:http : //www.sinatrarb.com/intro.html#Modular%20vs.%20Classic%20Style

sinatra puma

1
推荐指数
1
解决办法
1695
查看次数

如何在 Ruby 和 ERB(不是 Rails)中使用视图和布局?

如何在 Ruby 和 ERB(不是 Rails)中使用视图和布局?

今天我使用这个代码来呈现我的观点:

def render(template_path, context = self)
 template = File.read(template_path)
 ERB.new(template).result(context.get_binding)
end
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但我如何实现相同的功能,但要在布局内呈现模板?我想调用 render_with_layout(template_path, context = self),这样它就有一个默认布局。

ruby rack erb sinatra

1
推荐指数
1
解决办法
7029
查看次数

你如何将 sinatra 应用程序移动到 github 页面?

我创建了一个 sinatra 应用程序,并试图将它放在 github 页面上。我可以在本地主机上运行我的应用程序,但我不知道如何将它推送到实际的网络。

我尝试过谷歌搜索和搜索 stackoverflow,我一直看到人们使用 heroku。这是必需的吗?反正有没有直接从 sinatra 推送到网络?我可以得到一个简单的 index.html 文件在 github 页面上运行,但我不知道如何让我的 sinatra 应用程序运行。任何帮助都会很棒。

ruby github heroku sinatra web

1
推荐指数
1
解决办法
660
查看次数

如何加快我的 AWS RDS Postgres 性能?

我刚刚在亚马逊的 AWS 上设置了一个 db.t2.micro 实例。我正在使用 sinatra 加载本地主机网页。我正在使用 Active Record 进行大约 30~ 次查询,加载需要 92 秒。它非常缓慢。我尝试执行此处列出的自定义参数:http : //docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_BestPractices.html#CHAP_BestPractices.PostgreSQL

这无助于加快速度。我不确定如何加速这个实例。这是我第一次托管数据库。任何帮助,将不胜感激。

当我运行我的 sinatra 应用程序时,它在本地(本地主机)托管。这是 30~ 个查询需要 92 秒才能加载的地方。当我在 Postgres 中运行 select * 语句时,它们只需要几秒钟。

ruby postgresql performance sinatra amazon-web-services

1
推荐指数
1
解决办法
3147
查看次数

如何重定向回 Sinatra 中的路线?

在 Sinatra 中,如何重定向回路线?

require 'sinatra'

get "/A" do
  redirect '/B' 
end

get "/B" do 
  redirect request.referer
end
Run Code Online (Sandbox Code Playgroud)

这是代码,我希望“/B”带我回到“/A”。

现在,在浏览器中,在“/C”中,向“/A”发送​​一个获取请求。然后我会回到“/C”。原因是:
“request.referer”记录的是“/C”,因为“/A”中的重定向是由服务器发起的,不算是目标页面的referrer。

有一种 JavaScript 方法可以解决它(放在 /A 上):

<script type="text/javascript">window.location = '/B';</script>
Run Code Online (Sandbox Code Playgroud)

(从:如何从 Sinatra 中的特定页面重定向网页?

我的问题是如何重定向回服务器端的路由?

ruby request sinatra

1
推荐指数
1
解决办法
2808
查看次数

如何将Sinatra erb模板视图结果调用加载到变量中?是否有render_to_string等价物?

在Rails中我可以使用:

x = ActionController::Base.new.render_to_string( 
            template: "my_module/my_view_template", 
            locals: { my_var: in_my_var})
Run Code Online (Sandbox Code Playgroud)

这会将视图模板结果加载到Rails中的变量.我怎样才能在Sinatra做到这一点?

我对任何模板语言持开放态度,但我更喜欢Erubis.

ruby views ruby-on-rails erb sinatra

1
推荐指数
1
解决办法
248
查看次数

在多个文件上组织 Sinatra 的“路由块”

任何非平凡的 Sinatra 应用程序都将拥有比放入一个大 Sinatra::Base 后代类更多的“路线”。说我想把它们放在另一个班级,什么是惯用语?另一个阶级是什么派生的?我如何将它“包含”在主要的 Sinatra 类中?

ruby sinatra

1
推荐指数
1
解决办法
302
查看次数