繁体   English   中英

Rails 扩展 Date 类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM