我的 webapp 需要加密其会话数据。我设置的是:
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 任务时,它会加载初始化程序并清除所有会话。不好!
我可以在我的初始化程序中放入什么以确保它仅在 webapp 初始化时运行?或者,我可以在我的初始化程序中放入什么以使其不运行 rake 任务?
更新:好的,我目前所做的是添加MYAPP_IN_RAKE = true unless defined? MYAPP_IN_RAKE
到我的 .rake 文件中。然后在我的初始化程序中我这样做:
unless defined?( MYAPP_IN_RAKE ) && MYAPP_IN_RAKE
# Web only initialization
end
似乎工作。但我对其他建议持开放态度。