アクティブレコードのシンプルなRailtie拡張機能
-
27-09-2019 - |
質問
私はRails 3.0.3 Gemを作成していますが、それを機能させることはできません:
# attached.rb
module Attached
require 'attached/railtie' if defined?(Rails)
def self.include(base)
base.send :extend, ClassMethods
end
module ClassMethods
def acts_as_fail
end
end
end
# attached/railtie.rb
require 'attached'
require 'rails'
module Attached
class Railtie < Rails::Railtie
initializer 'attached.initialize' do
ActiveSupport.on_load(:active_record) do
ActiveRecord::Base.send :include, Attached
end
end
end
end
私は得ます undefined local variable or method 'acts_as_fail'
追加するとき acts_as_fail
私のいずれかに ActiveRecord
モデル。助けてください!私はこの一見些細なコードに非常にイライラしています!ありがとう!
解決
あなたは定義しています self.include
(4行目)、正しい方法が self.included
.
他のヒント
使用してコードを簡素化できます extend
直接:
# attached.rb
module Attached
require 'attached/railtie' if defined?(Rails)
def acts_as_fail
end
end
# attached/railtie.rb
require 'attached'
require 'rails'
module Attached
class Railtie < Rails::Railtie
initializer 'attached.initialize' do
ActiveSupport.on_load(:active_record) do
ActiveRecord::Base.send :extend, Attached
end
end
end
end
これは良い読み物です:http://yehudakatz.com/2009/11/12/better-ruby-idioms/
所属していません StackOverflow