我在项目中创建了一个新的dir和subdirs,就像下面的示例:
app/
--- services/
------ comments/
--------- create_comments_service.rb
但是,对于我在'create_comments_service.rb'中进行的每次修改,我必须重新启动我的服务器(在开发环境中(。
每当我在此DIR/Subdirs内修改文件时,我可以做些什么可以重新启动服务器?
我必须在config/application.rb
中添加以下行,以便Rails可以识别我的自定义DIR中的文件:
Dir[Rails.root.join('app/services/**/*.rb')].each{|rb| require rb}
对不起,我没有足够的积分来发表评论,所以我会添加答案。
在Rails中,app
中的所有文件夹均自动加载。您可以检查所需的子文件夹是否在列表中:
bin/rails r 'puts ActiveSupport::Dependencies.autoload_paths'
如果您在输出中看到services/comments
,那么也许您需要停止导轨服务器,运行spring stop
之后重新启动服务器。如果您看不到 - 尝试将config/application.rb
中的添加行更改为
config.autoload_paths += Dir[Rails.root.join('app', 'services', '**/')]
和一些关于帮助者的话。我不同意马丁 - 助手经常被用来移出与视图相关的代码。但是他是对的,为每个控制器动作做出单独的服务并不是一个普遍的做法。您的create_comments_service.rb
中有什么?
根据您的评论,您正在与铁轨惯例作斗争,这几乎总是在惩罚。
如果您想保持控制器整洁,而不是用冗长的代码混乱,则应将该代码放入助手方法中。
每当生成控制器时,它也会生成一个助手文件。例如,rails g controller static
将创建app/helpers/static_helper.rb
将您的多余代码放在此处,并且在控制器include StaticHelper
中,您将在控制器中可用的辅助人员提供所有这些功能,使其保持良好和清洁。