2

我写了一个简单的 Rack 模块,我把它放在一个我命名为rack_gist.rb. 在我的config.ru文件中的某个地方,我use Rack::Gist用来调用该模块。我知道该模块可以正常工作,并且我知道use Rack::Gist它放置在正确的位置,因为当我将代码放在文件rack_gist.rb顶部时config.ru,一切正常。

我正在使用 Rails 3.2.2。我想将模块的代码分隔在一个rack_gist.rb文件中,所以我config.middleware.use Rack::Gist在文件中添加了该行config/application.rb。我的问题是:我现在应该把rack_gist.rb文件放在哪里?我应该在任何地方要求什么吗?

为了更清楚,这是我的模块

   module Rack
      class Gist
        def initialize(app)
          @app = app
        end
        def call(env)
          status, @headers, response = @app.call(env)
          if html?
            #do something I don't want to bother you with
          end
          [status, @headers, response]
        end
        private
        def html?
          @headers["Content-Type"].include? "text/html"
        end
      end
    end
4

1 回答 1

1

恕我直言,这是你可以做的。将代码放入 lib 目录lib/rack_gist.rb

将 lib 初始化程序添加到初始化程序

#config/initializers/lib_loader.rb
Dir[File.expand_path(File.join(Rails.root.to_s,'lib','*.rb'))].each {|f| require f}

然后您的模块应该可以将其添加到配置中。

于 2012-04-08T17:00:21.017 回答