尝试将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方法?
答案 0 :(得分:0)
可在此处找到更多讨论:
How to automatically include Gem in the path?
解决方案是:
Object.send(:include, self)
对解决方案不满意但有效。