Ruby on rails Rails 4在lib文件夹中重新加载代码
我知道,这个问题至少被问了数百万次,但我仍然找不到正确的解决办法。我的意思是干净和简单,就像Rails应用程序中应该有的那样 假设我是一个应用程序的开发人员,需要lib文件夹中的一些代码。我的应用程序的名称是Xy。我将在lib文件夹中创建一个包含以下内容的文件xy.rb: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
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'
将导致不重新加载版本。