1

我有一个模块文件需要用于我的 rails 项目。当我对任何 Rails 模型、视图、控制器等进行更改时,服务器不需要重新启动。但是当我对该模块进行更改时,我需要重新启动服务器。

module.rb不从 Rails 类继承任何东西。

结构是这样的:

class_1.rb < class_2.rb includes module.rb

class_1.rb, class_2.rb are also not ActiveRecord classes. 它们都位于我的模型目录中。

我的config/enviroments/development.rb文件是正确的,因为它有:

  config.cache_classes = false
4

1 回答 1

1

更新:对于 rails 3.2.9,这应该可以直接使用!
这是我尝试过的,它无需重新启动服务器即可工作:

# ../models/a.rb
class A
  include SomeModule
  def test
    " test:a"
  end
end

# ../models/b.rb
class B < A
  def test
    super + " test:b"
  end
end

# ../models/some_module.rb
module SomeModule
  def call_test
    test + " test:module" 
  end
end

# ../controllers/home_controller.rb
class HomeController < ApplicationController
  def index
    @i = B.new.call_test
  end
end

当您的模块不在自动加载路径中时,您可以将它放在您的 application.rb 中:

# Autoload lib/ folder including all subdirectories
config.autoload_paths += Dir["#{config.root}/your_module_folder/**/"]
于 2012-12-07T11:12:25.653 回答