0

尝试从 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 文件foil.rb,它执行上面的代码,当我启动控制台时,我可以看到代码被触发。但是当我尝试使用 mixin 中的方法时,控制台找不到它们。

如果我采用完全相同的代码并将其放入初始化程序中, mixin 会被加载(如前所述),但这次我可以在控制台中使用 mixin 中的方法。

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

4

1 回答 1

0

更多讨论可以在这里找到:

如何在路径中自动包含 Gem?

解决方案是:

Object.send(:include, self)

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

于 2012-06-13T13:57:06.213 回答