1

我有一些自定义中间件包含在我的堆栈顶部,我需要在其中做的是访问 rails 缓存。如何从中间件加载/访问 rails 缓存而不必先加载整个 rails 应用程序?

4

2 回答 2

1

Rails on Rack Rails 应用程序的机架对象

ApplicationName::Application 是 Rails 应用程序的主要 Rack 应用程序对象。任何兼容 Rack 的 Web 服务器都应该ApplicationName::Application object用于为 Rails 应用程序提供服务。Rails.application 指的是同一个应用程序对象。导轨服务器

rails server 完成创建 Rack::Server 对象和启动 webserver 的基本工作。

下面是 rails server 如何创建 Rack::Server 的实例

Rails::Server.new.tap do |server|
  require APP_PATH
  Dir.chdir(Rails.application.root)
  server.start
end

Rails::Server 继承自 Rack::Server 并以这种方式调用 Rack::Server#start 方法:

class Server < ::Rack::Server
  def start
    ...
    super
  end
end

以下是它加载中间件的方式:

def middleware
  middlewares = []
  middlewares << [Rails::Rack::Debugger] if options[:debugger]
  middlewares << [::Rack::ContentLength]
  Hash.new(middlewares)
end

礼貌: http ://guides.rubyonrails.org/rails_on_rack.html ,你也可以关注:https ://devcenter.heroku.com/articles/rack-cache-memcached-rails31

于 2014-01-08T16:47:36.797 回答
0

我刚刚做了一个测试,然后

Rails.cache.fetch('test') { 'A test' }

在自定义中间件内部,它工作得很好。

你能试试吗?

于 2014-01-08T16:47:29.017 回答