Моему веб-приложению необходимо зашифровать данные сеанса. Я установил следующее:
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
Все это прекрасно работает и обеспечивает безопасность данных сеанса. Вот проблема: когда я запускаю свои собственные задачи с граблями, он загружает инициализатор и очищает все сеансы. Нехорошо!
Что я могу добавить в свой инициализатор, чтобы он работал ТОЛЬКО при инициализации веб-приложения? Или что я могу добавить в свой инициализатор, чтобы он НЕ запускался для задач с граблями?
Обновление: Хорошо, на данный момент я добавил MYAPP_IN_RAKE = true, если не определено? MYAPP_IN_RAKE
в мой файл .rake. И затем в моем инициализаторе я делаю:
unless defined?( MYAPP_IN_RAKE ) && MYAPP_IN_RAKE
# Web only initialization
end
Кажется, работает. Но я открыт для других предложений.