Ruby on rails Rails 4在lib文件夹中重新加载代码

Ruby on rails Rails 4在lib文件夹中重新加载代码,ruby-on-rails,Ruby On Rails,我知道,这个问题至少被问了数百万次,但我仍然找不到正确的解决办法。我的意思是干净和简单,就像Rails应用程序中应该有的那样 假设我是一个应用程序的开发人员,需要lib文件夹中的一些代码。我的应用程序的名称是Xy。我将在lib文件夹中创建一个包含以下内容的文件xy.rb: require 'xy/version' module Xy end 之后,我将在lib/xy/中创建名为version.rb的下一个文件: module Xy module VERSION def self.t

我知道,这个问题至少被问了数百万次,但我仍然找不到正确的解决办法。我的意思是干净和简单,就像Rails应用程序中应该有的那样

假设我是一个应用程序的开发人员,需要lib文件夹中的一些代码。我的应用程序的名称是Xy。我将在lib文件夹中创建一个包含以下内容的文件xy.rb:

require 'xy/version'
module Xy
end
之后,我将在
lib/xy/
中创建名为
version.rb的下一个文件:

module Xy
  module VERSION
    def self.to_s
       "1.0.0"
    end
  end
end
到目前为止,一切顺利。然后,我将创建一些控制器并编辑路线:

class IndexController < ApplicationController
  def index
    render text: Xy::VERSION
  end
end

root 'index#index'
class IndexController
我还需要我的代码,在application.rb中我将添加
require'xy'

然后我将运行我的服务器
rails s
,并在浏览器
http://localhost:3000
-看起来不错,我看到了1.0.0

然后,我会将
Xy::version
中的版本字符串更新为
1.0.1
,然后我会刷新浏览器-在这里,我看不到更改。要查看它,我必须重新启动服务器。这是相当令人不安的

所以问题是:在开发环境中,强制RoR 4+在lib文件夹中重新加载更改的正确方法是什么


提前感谢。

将此添加到application.rb:

config.autoload_paths += %W(#{config.root}/lib)
我现在在我的应用程序中使用它,你甚至不需要在任何地方需要lib文件,也不需要重新启动服务器。只需确保文件名称正确即可。例如

/lib/foo/rb

class Foo
/lib/foo/bar.rb

class Foo::Bar

这很好,但是您的lib源代码中不能有任何要求。例如:
lib/xy.rb
中需要'xy/version'
将导致不重新加载
版本。