Rails, Rack: SSL не работает на тонких - PullRequest
1 голос
/ 13 сентября 2011

Я хочу иметь https для всего приложения.

Я решил использовать этот драгоценный камень:

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 из-за зависимостей.

1 Ответ

2 голосов
/ 13 сентября 2011

В вашем 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.

...