无法覆盖 Rails 2.3.4 中的核心 ruby class
Cannot override core ruby class in Rails 2.3.4
我想扩展 ruby class,例如,
# 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 )
完成所有这些设置后,重新启动服务器并尝试在哈希对象上调用方法,但它抛出未定义的方法异常。
Note:- Rails version is 2.3.4
我在这上面花了很多时间,但还没有运气。感谢任何帮助。
提前致谢!
即使您已将 core_ext
文件夹添加到您的加载路径,您仍然需要使用 require 'hash'
来要求它。为了最大限度地减少内存使用,Rails 实际上不需要 ruby 文件只是因为您将它们添加到 load_path
.
>> Hash.instance_methods.grep(/gop/)
=> []
>> require "hash"
=> true
>> Hash.instance_methods.grep(/gop/)
=> [:gop_compact]
我想扩展 ruby class,例如,
# 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 )
完成所有这些设置后,重新启动服务器并尝试在哈希对象上调用方法,但它抛出未定义的方法异常。
Note:- Rails version is 2.3.4
我在这上面花了很多时间,但还没有运气。感谢任何帮助。
提前致谢!
即使您已将 core_ext
文件夹添加到您的加载路径,您仍然需要使用 require 'hash'
来要求它。为了最大限度地减少内存使用,Rails 实际上不需要 ruby 文件只是因为您将它们添加到 load_path
.
>> Hash.instance_methods.grep(/gop/)
=> []
>> require "hash"
=> true
>> Hash.instance_methods.grep(/gop/)
=> [:gop_compact]