Я думаю, что вы думаете об этом неправильно.
Вы добавляете этот модуль в путь загрузки,
, но он будет загружаться, только если вы скажете;
require 'acts_as_lockable'
или
ActsAsLockable
Я бы посоветовал вам никогда по-настоящему не говорить ни одного из них в вашем коде.
Правильная парадигма, которую вы ищете, это"initializer".
Я предлагаю вам создать файл с именем "config / initializers / acts_as_lockable.rb"
В этом файле вы можете включить весь код,
илипросто включите require 'acts_as_lockable'
Обычно я храню подобные вещи в каталоге libs
, чтобы убедиться, что lib находится в пути загрузки
** config / application.rb **
config.autoload_paths += %W(#{config.root}/lib)
** lib / acts_as_lockable.rb **
module ActsAsLockable
def acts_as_lockable
before_create :set_lock
include InstanceMethods
end
module InstanceMethods
protected
def set_lock
now = Time.now.to_s
self.lock = Digest::SHA1.hexdigest(now)
end
end
end
, затем в инициализаторе
** config / initializers / act_as_lockable.rb **
require 'acts_as_lockable'
ActiveRecord::Base.extend ActsAsLockable