2011-09-13 49 views
1

我想爲整個應用程序提供https。Rails,Rack:SSL不能在瘦客戶端上工作

我決定用這種寶石:

https://github.com/tobmatth/rack-ssl-enforcer

在結束

gem 'rack-ssl-enforcer' 

中的Gemfile和

config.middleware.use Rack::SslEnforcer 

application.rb在年底加入後不過,我得到的錯誤:

/path_to_app/www/.ruby/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:77:in `send': undefined method `Rack' for #<App1::Application:0xf6dcb314> (NoMethodError) 
    from /path_to_app/www/.ruby/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:77:in `method_missing' 
    from /path_to_app/www/stolikarnia/config/application.rb:57 
    from /path_to_app/www/.ruby/gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:21:in `require' 
    from /path_to_app/www/.ruby/gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:21 
    from script/rails:6:in `require' 
    from script/rails:6 

正如你從日誌中看到的,我使用Rails 3.0.9。由於依賴關係,我無法升級到RoR 3.1.0。

回答

2

在你Gemfile變化的要求

gem 'rack-ssl-enforcer', :require => 'rack/ssl-enforcer' 

然後,在你application.rb把類名作爲String採取懶惰的評價優勢。

config.middleware.use "Rack::SslEnforcer" 

作爲便箋,我建議您檢查https://github.com/josh/rack-ssl。這是Rails 3.1中引入的中間件。您已經可以在Rails 3.0中使用它,並且您將升級到Rails 3.1後無需更改它。

+0

謝謝。在添加'require'並將const更改爲字符串後,它可以工作。但是,可能證書沒有正確安裝,因爲Firefox瀏覽器不顯示證書已通過驗證。 –

相關問題