Для SSL используйте rack-ssl .
# config/environments/production.rb
MyApp::Application.configure do
require 'rack/ssl'
config.middleware.use Rack::SSL
# the rest of the production config....
end
Для WWW создайте промежуточное программное обеспечение для вашей стойки.
# lib/rack/www.rb
class Rack::Www
def initialize(app)
@app = app
end
def call(env)
if env['SERVER_NAME'] =~ /^www\./
@app.call(env)
else
[ 307, { 'Location' => 'https://www.my-domain-name.com/' }, '' ]
end
end
end
# config/environments/production.rb
MyApp::Application.configure do
config.middleware.use Rack::Www
# the rest of the production config....
end
Чтобы проверить это в браузере, вы можете отредактировать файл /etc/hosts
на локальном компьютере разработки
# /etc/hosts
# ...
127.0.0.1 my-domain-name.com
127.0.0.1 www.my-domain-name.com
запустить приложение в производственном режиме на локальном компьютере разработки
$ RAILS_ENV=production rails s -p 80
и перейдите к http://my-domain-name.com/
и посмотрите, что произойдет.
Во время теста вы можете закомментировать строку, перенаправляющую вас на сайт HTTPS.
Возможнотакже есть способы проверить это с помощью стандартных инструментов модульного и интеграционного тестирования, которые используются во многих проектах Rails, таких как Test::Unit
и RSpec
.