自动需要Rails 4中的lib文件

时间:2016-02-12 03:18:40

标签: ruby-on-rails ruby-on-rails-4

我试图在我的Rails 4.2应用程序中扩展String类。我创建了一个 lib / string.rb 文件来保存扩展名。

class String
  def testing
    "testing"
  end
end

我将lib添加到a​​pplication.rb。

中的autoload_paths
config.autoload_paths << Rails.root.join('lib')

当我启动rails控制台并执行"".testing时,我得到NoMethodError: undefined method 'testing' for "":String

任何人都可以解释为什么这个方法没有被提取?我有预感,因为String常量已经加载,所以Rails不会#39; t需要自动加载常量。因此,它永远不会尝试加载lib/string.rb文件,我的方法永远不会被添加到String。

当我在初始化程序中明确要求该文件时,我可以加载该方法,但是如果我更改了该方法,我必须重新启动服务器以获取rails以查看更改。感觉我错过了什么。看起来应该有办法让Rails自动读取核心扩展类并在文件更改时重新加载它们。

1 个答案:

答案 0 :(得分:2)

是的,你是对的。它不会自动加载字符串,因为它已经定义了。我通常将核心类扩展放在初始化器中。所以config / initializers / string.rb