0

那是当

def call(env)

通过点击任何 url 来调用方法,我可以在该方法中进行一些 ActiveRecord 查询,使用 lib 中定义的类等等。

或者它更像是一个没有加载 rails env 的 irb 控制台?用 rake 任务示例的另一种方式:

 task :foo => :environment do
    # with env
  end

 task :foo2 do
    # without env
  end

我认为机架类不会获得环境,因此它们速度非常快,并且不会占用普通 rails 请求的所有开销。

但情况似乎并非如此。我可以在我的机架类中进行 ActiveRecord 查询。那么机架有什么优势呢?

4

1 回答 1

1

它出现在http://www.ruby-on-rails-outsourcing.com/articles/2010/05/28/how-to-create-your-own-rack-middleware-class-in-ruby-on-rails /那个“env”是机架“使用”其请求的一部分,所以你无法解决这个问题(但我想你可以使用它来避免运行完整的rails堆栈,如果你愿意的话)。

rails 2中曾经有一个“金属”选项,基本上可以避免所有负载。显然它已在 rails 3 中删除。 http://tektastic.com/2010/07/rails3-rack-and-where-did-my-metal-go.html您必须改用机架中间件。我不确定这是否会导致很大的性能差异(必须使用机架)。

于 2013-06-27T16:18:43.370 回答