2013-09-27 104 views
1

我正在嘗試使用我剛纔在Rails項目中寫過的一個愚蠢的小機架寶石,但是我每次調用它時都會收到uninitialized constant錯誤。這讓我瘋狂,因爲我之前有already written Rack gems,而那些在我的Rails項目中工作得很好。在Rails中使用Rack Gem

在我的Gemfile:

gem 'hide_heroku', :git => 'https://github.com/ykessler/hide-heroku' 

在我的application.rb中:

module Tester 
    class Application < Rails::Application 

    config.middleware.use Rack::HideHeroku 

但是從我的本地服務器,我得到:

未初始化的常量架:: HideHeroku(NameError)

寶石:

module Rack 

    class HideHeroku 

    def initialize(app) 
     @app=app 
    end 

    def call(env) 
     @status, @headers, @response = @app.call(env) 
     @request = Rack::Request.new(env) 
     [@status, _apply_headers, @response] 
    end 

    private 

     def _apply_headers 
     if /\.herokuapp\.com\/?.*/ =~ @request.url 
      @headers['X-Robots-Tag'] = 'noindex, nofollow' 
     end 
     @headers 
     end 

    end 

end 

見這裏:https://github.com/ykessler/hide-heroku

回答

2

這裏的問題可能是該項目的結構。你需要有一個lib/hide_heroku.rb文件在您的寶石,它引導了寶石,或者你需要指定你的寶石線的需要路徑,像這樣:

gem 'hide_heroku', :git => 'https://github.com/ykessler/hide-heroku', :require => "rack/hide_heroku" 

(或者你可以require 'rack/hide_heroku'在你的應用程序)。

當您撥打Bundler.setup時Bundler會嘗試要求寶石的名稱,但如果您未使用該文件結構,則無法找到要包含的文件。

+0

Chris-非常感謝 - 那就是它 – Yarin

相關問題