自动执行 rake 任务以在 heroku 上启动时运行?
Posted
技术标签:
【中文标题】自动执行 rake 任务以在 heroku 上启动时运行?【英文标题】:Automate a rake task to run on boot on heroku? 【发布时间】:2021-02-15 19:08:12 【问题描述】:假设有一个任务
rake startupscript
它应该在应用程序启动时运行,我们如何在 heroku 上自动化它?
我知道有一个 heroku 调度程序,但它会每 10 分钟运行一次任务,而不是只在启动时运行一次。我也知道Procfile 并相信这可能是一个解决方案,尽管我还不知道如何实现(可能更重要的是,我不想冒险破坏可以通过 Procfile 配置的任何其他内容,例如网络服务器等)。许多 Procfile 文档专注于使用它来更改 Web 服务器,而不是应用级别的 rake 任务。
如何让 rake 任务在启动时运行?
【问题讨论】:
【参考方案1】:您可以在启动应用程序服务之前向 Procfile 添加类似的内容
# Run pre-release-tasks here
release: bundle exec rails db:migrate
# Then run your application
web: bundle exec puma -t 5:5 -p $PORT:-3000 -e $RACK_ENV:-development
任何标记为release
的东西都会在启动脚本运行之前运行
https://devcenter.heroku.com/articles/release-phase
【讨论】:
非常感谢,它有效。web: bundle exec puma -t 5:5 -p $PORT:-3000 -e $RACK_ENV:-development
让我有点紧张,我不想不小心重新配置东西。你知道它们是否是默认值吗?此外,“发布”可以有多行吗?
哦,这只是一个例子。您不必使用web
行
您是否知道 Procfile 是在应用程序为 restart
ed 时运行,还是在其第一次构建后运行?
@stevec 我分享的链接中也提到了。 devcenter.heroku.com/articles/…FWIU,重启web服务器就不会运行了,只有在有变化的时候才会运行
你知道如果无限 rake 任务在启动时启动,它是否会在后台愉快地运行(永远)?如果没有,那么我应该问另一个关于如何做到这一点的问题(我将从这里链接到它)以上是关于自动执行 rake 任务以在 heroku 上启动时运行?的主要内容,如果未能解决你的问题,请参考以下文章
Rails 3 和 Heroku:推送时自动“rake db:migrate”?
在 Heroku 上执行 rake db:migrate 时出错
如何将参数传递给使用 Heroku Scheduler 调用的 rake 任务?