9

同じ名前のクラスとモジュールがあります。

module Pushover
  def configure
    ..
  end
end

module MyModule
  class Pushover
    def blah
      Pushover.configure
    end
  end
end

Pushover.configure呼び出しが含まれているクラスに向けられるため、これは機能しません。さて、明らかな修正は、クラスの名前を変更することです。ただし、モジュールは gem からのものであり、クラスは DSL で必要な命名規則に準拠しています。したがって、理想的には、両方が同じままであるべきです。2 番目のヘルパー クラスを作成し、それを介して呼び出すこともできますが、それは少しハックに思えます。私の推奨する解決策は、モジュール メソッドを直接参照することです。

この分野に関する既存の質問はすべて、反対の方向に明確になっているようです。つまり、モジュールではなくクラス参照を取得したいのです。

指定するときにクラスではなくモジュールを意味することを Ruby に通知する方法はありますPushoverか?

4

1 に答える 1

16

現在のスコープに関連する定数を検索したくない場合は、絶対パスを使用してください。

::Pushover.configure
于 2012-11-11T17:30:18.937 に答える