2011-05-26
Rails3でSSL Requirementを使う
Rails3でSSL対応可能にするライブラリです。forkされたもののようです。
Powは現時点ではSSLには対応していない*1ので、Passengerでローカルでの動作確認をしました。
環境
- Mac OS X 10.6.7
- Ruby on Rails 3.0.7
- bartt-ssl_requirement 1.2.5
- Apache 2.2.17 (MacPorts)
- Passenger 3.0.7
使いかた
Gemfile
gem 'bartt-ssl_requirement'
これでbundle installによりインストールはされますが、動きません。
Routing Error
uninitialized constant SslRequirement
このようなエラーになります。正しい記述は以下です。
gem 'bartt-ssl_requirement', :require => 'ssl_requirement'
ruby - Alternative for ssl_requirement plugin for Rails 3? - Stack Overflow
ライブラリ本体との名前が異なるため、「:require」を追加する必要があります。これがわからなくてしばらく悩みました。
Controller
class ApplicationController < ActionController::Base include ::SslRequirement end class AccountController < ApplicationController ssl_required :signup, :payment ssl_allowed :index def signup # SSLアクセスのみ end def payment # SSLアクセスのみ end def index # SSL/通常アクセスどちらも可 end def other # 通常アクセスのみ end end
ApplicationControllerでSslRequirementをincludeして、各Controllerでアクションを指定すればokです。
Apache+PassengerでSSL
MacPortsのApacheであればデフォルトで有効になっていると思われますが、SSLのモジュールmod_sslが必要です。鍵と証明書の作り方は以下参照ください。
Passengerと80番ポートの設定は済んでいるものとして、以下SSLを動作させる最小限の設定です。
Listen 443 NameVirtualHost *:443 #VirtualHostを複数利用する場合 <VirtualHost *:443> ServerName myapp.dev DocumentRoot "/path/to/myapp/public" SSLEngine on SSLCertificateFile "/opt/local/apache2/conf/server.crt" SSLCertificateKeyFile "/opt/local/apache2/conf/server.key" </VirtualHost>
これで設定を再読込(sudo apachectl graceful)すればSSLの確認ができます。
ちなみにRails3.1からはもともとSSL対応になっているようです(アクションごとの振り分けはできないかも?)。

Ruby on Rails 3 アプリケーションプログラミング
関連記事
トラックバック - http://d.hatena.ne.jp/deeeki/20110526/rails3_ssl_requirement
リンク元
- 52 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=11&ved=0CCMQFjAAOAo&url=http://d.hatena.ne.jp/deeeki/20110526/rails3_ssl_requirement&ei=H5kvT5KGHMOKmQXExbUD&usg=AFQjCNHcMNC1QdVMUEF74oY8w6tLZqA4Lw&sig2=L3z-fE1hgW-mG6PWxqaEFA
- 38 http://www.google.co.jp/url?sa=t&rct=j&q=rails3 ssl&source=web&cd=1&ved=0CCoQFjAA&url=http://d.hatena.ne.jp/deeeki/20110526/rails3_ssl_requirement&ctbs=lr:lang_1ja&ei=eEmETr2wH-PkmAX9u-gR&usg=AFQjCNHcMNC1QdVMUEF74oY8w6tLZqA4Lw
- 16 http://d.hatena.ne.jp/ema25/20110719/1311086374
- 16 http://www.google.co.jp/url?sa=t&rct=j&q=namevirtualhost *:443&source=web&cd=1&ved=0CCsQFjAA&url=http://d.hatena.ne.jp/deeeki/20110526/rails3_ssl_requirement&ei=VEqETsuTHKfRmAWLhlU&usg=AFQjCNHcMNC1QdVMUEF74oY8w6tLZqA4Lw
- 11 http://www.google.co.jp/reader/view/
- 11 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cts=1331215167441&ved=0CDMQFjAB&url=http://d.hatena.ne.jp/deeeki/20110526/rails3_ssl_requirement&ei=O7tYT-GMK8aWiQeX1JG7DQ&usg=AFQjCNHcMNC1QdVMUEF74oY8w6tLZqA4Lw&sig2=CjBpIBIplet
- 11 http://www.google.co.jp/url?sa=t&rct=j&q=actioncontroller::routingerror (uninitialized constant&source=web&cd=2&ved=0CDMQFjAB&url=http://d.hatena.ne.jp/deeeki/20110526/rails3_ssl_requirement&ei=kcjDTpT0IMOOmQX09oyOCw&usg=AFQjCNHcMNC1Qd
- 11 http://www.google.co.jp/url?sa=t&rct=j&q=bartt-ssl_requirement&source=web&cd=4&ved=0CDoQFjAD&url=http://d.hatena.ne.jp/deeeki/20110526/rails3_ssl_requirement&ei=vxu9TryiMZHGmQWHzfC_BA&usg=AFQjCNHcMNC1QdVMUEF74oY8w6tLZqA4Lw&cad=rja
- 11 http://www.google.co.jp/url?sa=t&rct=j&q=uninitialized constant applicationcontroller lib rails3&source=web&cd=1&ved=0CCsQFjAA&url=http://d.hatena.ne.jp/deeeki/20110526/rails3_ssl_requirement&ctbs=lr:lang_1ja&ei=ppCmTsfVCcPEmAWrkZS-D
- 9 http://bit.ly/lp2yGX




