2012-01-11 6 views
2

私はHerokuレール上でCedarスタックを実行しています。Heroku uninitialized constant Rails:Initializer(NameError)(noWWW Rack Middleware)

使用して:私はHerokuのにプッシュすると http://trevorturk.com/2009/11/05/no-www-rack-middleware/

は、私が取得:

app[web.1]: => Rails 3.1.3 application starting in production on http://0.0.0.0:15548 
app[web.1]: => Call with -d to detach 
app[web.1]: => Ctrl-C to shutdown server 
app[web.1]: Exiting 
app[web.1]: /app/config/environment.rb:7:in `<top (required)>': uninitialized constant Rails::Initializer (NameError) 

誰もが起こっていただきました!任意のアイデアがありますか?

ここに私environment.rbに(私のアプリのためのAppName =固有名詞すなわちない問題のthats。)

# Load the rails application 
require File.expand_path('../application', __FILE__) 

# Initialize the rails application 
AppName::Application.initialize! 

Rails::Initializer.run do |config| 
    config.middleware.use "NoWWW" if RAILS_ENV == 'production' 
end 

のlib/no_www.rbです:

class NoWWW 

    STARTS_WITH_WWW = /^www\./i 

    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    if env['HTTP_HOST'] =~ STARTS_WITH_WWW 
     [301, { 'Location' => Rack::Request.new(env).url.sub(/www\./i, '') }, ['Redirecting...']] 
    else 
     @app.call(env) 
    end 
    end 

end 

答えて

0

あなたが受信しているエラーがあなたが古いバージョンのRailsを参照していることを伝えています。 Rails 3.1は、2年前に書かれたときとは少し違って初期設定されています。特に、問題は今、このブロックでRails::Initializerをして廃止されました:

Rails::Initializer.run do |config| 
    config.middleware.use "NoWWW" if RAILS_ENV == 'production' 
end 

あなたはrack-rewriteでより多くの運を持っているかもしれません。どちらにかかわらず、現在のconfigurationinitializationの良い内訳については、Railsの公式ドキュメントを参照してください。

+0

ラックリライトをどのように実装したいのですか? githubのREADMEはあまりにもうまく説明できません... – David

0

ミドルウェアファイルがロードされていないようです。アプリケーション/ミドルウェアにミドルウェアクラスno_www.rbを配置します。これにより、Railsによって自動ロードされます。次に、最後にあるapplication.rbにconfig文を追加します。

... 

    # Configure Rack middleware 
    config.middleware.use 'NoWWW' 

    end 
end 
1

Rails 3.1を使用して同じ問題が発生しました。私はこのpostを使用して終了しました。他のソリューションよりも関わっているようですが、実際には2つのステップしかありません。

コード内でyoursite.comを必ず変更してください。私はこれを見落とし、修正後に別の展開を急がなければならなかった。

0

この問題がありました。私はそれが遅い答えだと知っていますが、私はそれを必要とする人のためにこれを追加したかったのです。

OmniauthCallbacksControllerがusersフォルダーにあることを確認してください。 "app/controllers/users/omniauth_callbacks_controller.rb"

関連する問題