ruby-on-rails 为什么rake任务存储在lib/tasks/中?

qoefvg9y  于 4个月前  发布在  Ruby
关注(0)|答案(2)|浏览(58)

我对rails中lib/目录的理解是,它存储non-domain specific code as a best practice
然而,我的Rake脚本对我的领域来说是非常具体的,它们可以做一些事情,比如创建新的模型。
那么,有没有比lib/tasks/更好的地方来存储特定于域的rake脚本,或者我在这里遗漏了什么?

uklbhaso

uklbhaso1#

我喜欢这个想法,我同意- lib在某个时候是一个非常垃圾的抽屉,作为一个Rails社区,我们已经移走了一些垃圾,但是是的,Rake任务通常是非常具体的应用程序逻辑。
在你的Rakefile中,你所要做的就是load你的新Rakefiles(读者练习:重新定义文件夹中的文件,而不是显式地指定它。
范例:

require File.expand_path('../config/application', __FILE__)

Rails.application.load_tasks

load('app/tasks/my_task.rake') # <--- my custom task!!!

字符串

368yc8dk

368yc8dk2#

以上是正确的,但您应该添加以下内容以防止zeitwerk创建Tasks常量。(如果不使用zeitwerk加载器,请忽略)

Rails.autoloaders.main.ignore('app/tasks');

字符串
您可以在控制台中通过调用Tasks来检查它,它不应该被定义。
另一种选择是在/tasks中添加rake tasks,而不是app/tasks

相关问题