【问题标题】:Rails-way to execute one-off task on Rails server startup在 Rails 服务器启动时执行一次性任务的 Rails 方式
【发布时间】:2016-05-27 07:27:30
【问题描述】:

我有 Rails 4.2 应用程序,我想在服务器启动时执行一些一次性代码。

我的第一种方法是使用config/initializers 中的初始化程序来运行代码。但在这种情况下,所有 rake 任务和 Sidekiq 进程也正在执行代码。

所以我创建了一个 rake 任务来运行我的代码。现在我想知道如何与 rails 服务器启动一起执行它。当然,我可以创建一个 shell 脚本来执行我的 rake 任务,然后启动服务器。但是有什么方法可以实现这一点吗?

Foreman 是 SO 的另一种方法advised,但它对我不起作用,因为我的任务不是守护进程,并且进程在完成后立即终止。显然 Procfile 中的所有进程都必须被守护。

【问题讨论】:

  • 嗨,我不知道,但你试过在 config.ru 中调用 rake 吗?
  • 为什么不将服务器启动和 rake 任务封装在 shell 脚本中?

标签: ruby-on-rails ruby rake foreman


【解决方案1】:

可以通过在与守护任务相同的进程中运行 Foreman 来实现(例如,使用 rails server)。

如果一次性任务是rake lego:update_all

那么对应的Procfile就是

web: rake lego:update_all && rails s
sidekiq: bundle exec sidekiq

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多