Rails 3.1: как запустить инициализатор только для веб-приложения (rails server / unicorn / etc)

Моему веб-приложению необходимо зашифровать данные сеанса. Я установил следующее:

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

Кажется, работает. Но я открыт для других предложений.

7
задан sbutler 22 September 2011 в 01:53
поделиться