我想扩展ruby类,例如,
# lib/core_ext/hash.rb
class Hash
def gop_compact
delete_if{|k, v| (k.blank? || v.blank?)}
end
end
我在/ lib目录中创建了一个单独的文件夹,如下所示,
lib/core_ext/hash.rb
我尝试在load_paths中包含此路径,如下所示,
# config/environment.rb
config.load_paths += %W( #{RAILS_ROOT}/lib/core_ext )
完成所有这些设置后,重新启动服务器并尝试在Hash对象上调用方法,但它会抛出未定义的方法异常。
注意: - Rails版本是2.3.4
我花了很多时间在这上面但没有运气。任何帮助表示赞赏。
提前致谢!
答案 0 :(得分:2)
即使您已将core_ext
文件夹添加到加载路径,您仍然需要使用require 'hash'
。为了最大限度地减少内存使用量,Rails实际上不会因为您将ruby文件添加到load_path
而实际上需要ruby文件。
>> Hash.instance_methods.grep(/gop/)
=> []
>> require "hash"
=> true
>> Hash.instance_methods.grep(/gop/)
=> [:gop_compact]