[英]Rails extending Date class
我创建了一个文件lib/ext/date.rb
,它用一个方法扩展了Date
类。
class Date
def self.next_(weekday_string)
// code here
end
end
在我的application.rb
文件中,我自动加载此ext
文件夹中的所有内容
config.autoload_paths << "#{Rails.root}/lib/ext"
但是我不断收到错误undefined method next_ for Date:Class
从控制台内调用此方法工作正常
load 'lib/ext/date.rb'; Date.next_('wednesday')
=> Wed, 07 Oct 2015
是的,在尝试使用此扩展方法之前,服务器已重新启动。
我猜,你对 Rails 自动加载机制的理解是模糊的。
当 rails 尝试解析未定义的常量时使用autoload_paths
。 假设您是第一次访问User
。 没有加载这样的类,所以 rails 会查看它的自动加载路径并尝试在那里找到User
。
你的情况不同。 Date
肯定存在(因为它是一个系统类)。 因此 rails 将没有理由访问自动加载路径中的文件。
显式加载文件。 例如,在初始化程序中
# 00_monkey_patching.rb
Dir["#{Rails.root}/lib/monkey_patching/*.rb"].each do |file|
require file
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.