0

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_failActiveRecord

4

2 に答える 2

4

self.include正しいメソッドがである場合、定義しているのは(4行目下)ですself.included

于 2010-11-23T09:00:23.840 に答える
3

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/

于 2010-11-23T10:29:59.217 に答える