TLDR:哈希扩展可以正常工作,当将其本地包含在我的Mailer中时,返回所需的输出,但是即使从类方法成功执行,从nil
中的模块导入后,它始终返回lib/
。加载。
当我在类定义之前在mailer.rb文件中声明扩展名时,如:
class Hash
def try_deep(*fields)
...
end
end
class MyMailer < ApplicationMailer
some_hash.try_deep(:some_key)
end
它可以完美地工作,但这是不好的做法。我认为最好在/lib/core_ext/hash/try_deep.rb
中声明扩展名,然后在Mailer中要求它,如:
/lib/core_ext/hash/try_deep.rb:
module CoreExtensions
module Hash
module TryDeep
def try_deep(*fields)
...
end
end
end
end
/my_mailer.rb:
require 'core_ext/hash/try_deep'
class MyMailer < ApplicationMailer
Hash.include CoreExtensions::Hash::TryDeep
some_hash.try_deep(:some_key)
end
答案 0 :(得分:2)
您需要将自定义方法注入类之外的Hash
中
my_mailer.rb :
require 'core_ext/hash/try_deep'
class Hash
include CoreExtensions::Hash::TryDeep
end
class MyMailer < ApplicationMailer
some_hash.try_deep(:some_key)
end