0

コンソール経由で使用するgemファイルのミックスインをインクルードしようとすると問題が発生します。

require "fertilizer/version"

module Fertilizer
  # <-- CONSOLE EXTENSION (CONSOLE ONLY)-->
  # Following part of code is active with the start of IRB console. 
  # Details about features can be seen in console_extensions module.

  if defined?(Rails::Console)
    require 'fertilizer/console_extensions'
    include ConsoleExtensions
  end

  # <-- OBJECT EXTENSIONS (CONSOLE ONLY)-->
  if defined?(Rails::Console)
    require 'fertilizer/object_extensions'
  end
end

Gemには上記のコードを実行するrubyファイルfertilizer.rbがあります。コンソールを起動すると、コードがトリガーされているのがわかります。しかし、ミックスインのメソッドを使おうとすると、コンソールはそれらを見つけることができません。

まったく同じコードを取得して初期化子に入れると、 (以前と同じように)mixinがロードされますが、今回は、consleでmixinのメソッドを使用できます。

gemファイルを修正して、gemが読み込まれたときに、コンソールからミックスインメソッドを使用できるようにするにはどうすればよいですか?

4

1 に答える 1

0

詳細については、次を参照してください。

パスにGemを自動的に含める方法は?

解決策は次のとおりです。

Object.send(:include, self)

解決策に満足していませんが、うまくいきます。

于 2012-06-13T13:57:06.213 に答える