在App中的自定义DIR/在Rails 5.1上的开发环境中重新加载的文件



我在项目中创建了一个新的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中,您将在控制器中可用的辅助人员提供所有这些功能,使其保持良好和清洁。

最新更新