Rails4で本番環境のみ、コントローラー・アクション毎にSSL
参考
RailsでSSLを利用するときのあれこれ [俺の備忘録]
Rails4で
SSLを組み込むとき、
Gemfileに
gem 'bartt-ssl_requirement', :require => 'ssl_requirement'
を書いてから、ターミナルにて
$ bundle install
その後、ApplicationController.rb辺りに
include ::SslRequirement
を記述。
コントローラーやアクションごとにSSLを切り替えたい場合は、
LoginController < ApplicationController ssl_required :login def login User.authenticate(params[:user]) end end
などとする。
ローカル開発環境の場合はSSLが必要ないので
ApplicationController.rbに
protected def ssl_required? Rails.env.production? end
と書くと、本番環境のみSSLが有効になる。
この辺までは参考のURLと変わらないかな。
ただ、この設定だとproductionモードの時は、
全てのアクションで
ssl_required? # =>true
が返って来てしまうことになるので、
アクション毎のSSLの設定が有効にならなくなってしまった...!
production環境の時のみ、ssl_required?はアクションやコントローラに設定した内容に任せたかったので、superを呼び出す
こんな感じ
protected def ssl_required? super if Rails.env.production? end