包括来自gem的mixin,不工​​作?

时间:2012-06-12 13:18:30

标签: ruby-on-rails ruby ruby-on-rails-3 rubygems

尝试将gem文件中的mixin包含在控制台中时,我遇到了问题。

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的方法时,控制台无法找到它们。

如果我使用完全相同的代码并将其放入初始值设定项,则mixin会被加载(如前所述),但这次我可以在consle中使用mixin中的方法。

如何修复我的gem文件,以便在gem加载时,可以通过控制台获得mixin方法?

1 个答案:

答案 0 :(得分:0)

可在此处找到更多讨论:

How to automatically include Gem in the path?

解决方案是:

Object.send(:include, self)

对解决方案不满意但有效。