0

したがって、次のように、同じモジュールのクラスをそれぞれ含む複数の lib ファイルを持つ gem を作成しています。

メイン「ローダー」ライブラリ

#lib/jobhandler.rb

require 'jobhandler/job'

module JobHandler
end

別のファイル内の同じモジュールの別のクラス

#lib/jobhandler/job.rb

module JobHandler
  class Job < ActiveRecord::Base
    def self.class_thingy
      return "I am a class method"
    end

    def instance_thingy
      return "I am an instance method of a class inside a module that extends AR"
    end
  end
end

問題

# These work fine....
Autocrat::Job.new # <Autocrat::Job:0x7fd9b017a138>
Autocrat::Job     # Autocrat::Job(id: integer....) < ActiveRecord::Base

#But this doesn't
Autocrat::Job.class_thingy # NoMethodError: undefined method `class_thingy'
Autocrat::Job.new.instance_thingy # NoMethodError: undefined method `instance_thingy'

#it doesn't even see the methods
Autocrat::Job.methods - ActiveRecord::Base.methods # []

問題は、Job クラスのクラスまたはインスタンス メソッドにアクセスしたり呼び出したりできないことです。Job を問題なくインスタンス化できますが、メソッドが存在することを認識していないようです。

何か案は?

4

0 に答える 0