Webアプリケーションはセッションデータを暗号化する必要があります。私が設定したものは次のとおりです。
config/initializers/encryptor.rb:
require 'openssl'
require 'myapp/encryptor'
MyApp::Encryptor.config[ :random_key ] = OpenSSL::Random.random_bytes( 128 )
Session.delete_all
app/models/session.rb:
require 'attr_encrypted'
class Session < ActiveRecord::Base
attr_accessible :session_id, :data
attr_encryptor :data, :key => proc { MyApp::Encryptor.config[ :random_key ] }, :marshal => true
# Rest of model stuff
end
それはすべてうまく機能し、セッションデータを保護します。問題は次のとおりです。カスタムrakeタスクを実行すると、初期化子がロードされ、すべてのセッションがクリアされます。良くない!
初期化子をWebアプリの初期化でのみ実行するようにするには、何を入れることができますか?または、初期化子をレーキタスクで実行されないようにするために何を入れることができますか?
更新:MYAPP_IN_RAKE = true unless defined? MYAPP_IN_RAKE
わかりました。今のところ、.rakeファイルに追加しています。そして、私の初期化子で私はします:
unless defined?( MYAPP_IN_RAKE ) && MYAPP_IN_RAKE
# Web only initialization
end
動作しているようです。しかし、私は他の提案を受け入れています。