0

マウント可能なエンジンを Ruby 1.9.3 / Rails 3.2 から Ruby 2.0.0 / Rails 4 に更新しました。名前空間モデルに奇妙な問題が発生しています。正しいテーブル名が見つかりません。この理由は、親モジュールの tablee_name_prefix メソッドの問題であると考えました。見つかりません。

module DynaState::AttributeAccessors
  def self.table_name_prefix
    'dyna_state_attribute_accessors_'
  end

  def self.foo
    'bar'
  end
end

これを Rails コンソールでテストすると、次のようになります。

2.0.0p0 :004 > DynaState::AttributeAccessors.table_name_prefix
NoMethodError: undefined method `table_name_prefix' for DynaState::AttributeAccessors:Module

2.0.0p0 :005 > DynaState::AttributeAccessors.foo
NoMethodError: undefined method `foo' for DynaState::AttributeAccessors:Module

一方、コンソールでオンザフライで定義すると、次のようになります。

2.0.0p0 :002 > module Foo; def self.bar; 'argh!' end; end;
2.0.0p0 :003 > Foo.bar
=> "argh!"

私の推測では、初期化中にモジュールを構成するすべてのファイルを評価しているわけではありません。特に、メソッドが定義されているファイルではありません。しかし、それを修正する方法や、それが問題であるかどうかはわかりません。

これをデバッグする方法や問題は何ですか?

編集: この問題は、ONE モジュールでのみ発生しています。AttributeAccessors モジュール。

4

1 に答える 1