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

时间:2014-11-27 14:39:16

标签: ruby-on-rails

我知道,这个问题至少被问过几百万次,但我仍然找不到合适的解决方案。我的意思是干净和容易,就像它应该在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文件夹中的更改的正确方法是什么?

提前谢谢。

1 个答案:

答案 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