2012-01-11 2 views
2

나는 Heroku 레일에서 시더 스택을 실행 중입니다.Heroku uninitialized constant 레일즈 : 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에의

# 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를 app/middleware에 놓습니다. 이렇게하면 Rails에서 자동로드됩니다. 그런 다음 구성 문을 끝에있는 application.rb에 추가하십시오.

... 

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

    end 
end 
1

레일 3.1을 사용하여 동일한 문제가있었습니다. 이 post을 사용하여 종료되었습니다. 다른 솔루션보다 복잡해 보이지만 실제로는 두 단계 만 있습니다.

코드에서 yoursite.com을 변경해야합니다. 나는 이것을 간과하고 수정 후 다른 배치를 서둘러야했다.

0

이 문제가 발생했습니다. 나는 그것이 늦은 대답 인 것을 안다. 그러나 나는 이것을 누구든지 필요로하는 사람을 위해 추가하고 싶었다.

OmniauthCallbacksController가 users 폴더에 있는지 확인하십시오. "app/controllers/users/omniauth_callbacks_controller.rb"

관련 문제