我知道,这个问题至少被问过几百万次,但我仍然找不到合适的解决方案。我的意思是干净和容易,就像它应该在Rails应用程序中一样。
让我们假设我是一个需要lib文件夹中的代码的应用程序的开发人员。我的应用程序名称是Xy。我将在lib文件夹中使用以下内容创建一个文件xy.rb:
require 'xy/version'
module Xy
end
之后,我将在名为lib/xy/
的{{1}}中创建下一个文件:
version.rb
到目前为止,这么好。然后我将创建一些控制器,我将编辑路线:
module Xy
module VERSION
def self.to_s
"1.0.0"
end
end
end
我还需要我的代码,在application.rb中我将添加class IndexController < ApplicationController
def index
render text: Xy::VERSION
end
end
root 'index#index'
然后我将运行我的服务器require 'xy'
,我会在浏览器rails s
中浏览应用程序 - 看起来不错,我看到1.0.0。
然后我会将http://localhost:3000
中的版本字符串更新为Xy::VERSION
,然后我会刷新浏览器 - 在这里,我不会看到更改。要看到它,我将不得不重新启动服务器。这非常令人讨厌。
所以问题是:在开发环境中强制RoR 4+重新加载lib文件夹中的更改的正确方法是什么?
提前谢谢。
答案 0 :(得分:1)
将此添加到application.rb:
config.autoload_paths += %W(#{config.root}/lib)
我现在在我的应用程序中使用它,您甚至不需要在任何地方都需要'lib文件,也不必重新启动服务器。只需确保正确命名文件即可。 E.g
/ LIB /富/ RB
class Foo
/lib/foo/bar.rb
class Foo::Bar