せたがやえんじにあぶろぐ

Ruby | Rails | iPhone | Web

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