【问题标题】:Automate a rake task to run on boot on heroku?自动执行 rake 任务以在 heroku 上启动时运行?
【发布时间】:2021-02-15 19:08:12
【问题描述】:

假设有一个任务

rake startupscript

它应该在应用程序启动时运行,我们如何在 heroku 上自动化它?

我知道有一个 heroku 调度程序,但它会每 10 分钟运行一次任务,而不是只在启动时运行一次。我也知道Procfile 并相信这可能是一个解决方案,尽管我还不知道如何实现(可能更重要的是,我不想冒险破坏可以通过 Procfile 配置的任何其他内容,例如网络服务器等)。许多 Procfile 文档专注于使用它来更改 Web 服务器,而不是应用级别的 rake 任务。

如何让 rake 任务在启动时运行?

【问题讨论】:

    标签: ruby-on-rails heroku rake ruby-on-rails-6 procfile


    【解决方案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 是在应用程序为 restarted 时运行,还是在其第一次构建后运行?
    • @stevec 我分享的链接中也提到了。 devcenter.heroku.com/articles/…FWIU,重启web服务器就不会运行了,只有在有变化的时候才会运行
    • 你知道如果无限 rake 任务在启动时启动,它是否会在后台愉快地运行(永远)?如果没有,那么我应该问另一个关于如何做到这一点的问题(我将从这里链接到它)
    猜你喜欢
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    相关资源
    最近更新 更多