gpt4 book ai didi

ruby-on-rails - Rails-在初始化时执行rake任务

转载 作者:行者123 更新时间:2023-12-03 16:06:15 26 4
gpt4 key购买 nike

我想执行两个rake任务,以在服务器启动时初始化我的数据库。
因此,我在config/application.rb中放置了以下代码:

config.after_initialize do
Rake::Task[ 'download_csv:get_files' ].invoke
Rake::Task[ 'download_csv:place_in_database' ].invoke
end

但是,出现以下错误:
.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/task_manager.rb:62:in `[]': Don't know how to build task 'download_csv:get_files' (RuntimeError)

我做错了什么?
(我的目标是在启动时初始化数据库)。

最佳答案

Rails任务不会自动加载,您需要先加载它们:

config.after_initialize do
Rails.application.load_tasks # <---
Rake::Task['download_csv:get_files'].invoke
Rake::Task['download_csv:place_in_database'].invoke
end

请注意, #load_tasks不存储状态,如果在其他地方再次调用它,则可能会遇到问题。

另一方面,任务名称表明不需要在每个Web实例(例如Heroku Dynos)上运行它们;但它们将使用上述策略在每台计算机上运行。因此,如果您扩展了Web实例(在多台计算机上运行您的应用程序),则在单个实例(Heroku上的一次Dyno)上运行这些任务作为自动化的部署后任务将更加有效。

关于ruby-on-rails - Rails-在初始化时执行rake任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com