如何在rake任务之外的rake文件中访问Rails模型?

4
为了在rake任务中访问Rails模型,您需要将:environment作为依赖项。但是如果您想要动态描述您的任务,并且它们取决于一些数据库日期,该怎么办呢?例如:
end_date = Foo.end_date # the model foo provides some end date

desc "Do something after #{end_date}"
task bar: :environment do
  ...
end

我尝试了Rake::Task[:environment].invoke,但是我得到了Don't know how to build task 'environment'的错误提示。
1个回答

0
我刚刚发现可以手动加载Rails环境更多。我只是将以下代码放在包含Rake任务的文件顶部:
# Pre-load the rails environment so we can dynamically create 
# these tasks. Your path may vary.

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

# Eager load the models so I have access to them, this may be 
# different in your environment.

Zeitwerk::Loader.eager_load_all

1
请注意,您可以始终编写 Ruby 脚本,并使用 bin/rails runner 执行它。这样,一切都可以开箱即用。 - Xavier Noria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接