在 rails 应用重新启动 ruby 时执行脚本

Script execution upon ruby on rails app restart

我正在 ruby rails (rails v4) 上开发应用程序。

我对模型进行了一些更改,一旦更新并重新启动生产中的应用程序,就需要通过脚本修改数据。

有没有一种巧妙的方法让 rail 服务器在代码更新时执行脚本(仅一次)。

这就像您在 Gemfile 中添加一个 gem 并且在您执行捆绑包更新之前服务器不会启动。

听起来您可以将这个一次性脚本放在 rails 迁移中。 运行 终端中的这个命令:

rails generate migration NameOfMyDataMigration

NameOfMyDataMigration替换为对您有意义的名称

这将在 db/migrate 中创建一个新的迁移脚本,如下所示:

class NameOfMyDataMigration < ActiveRecord::Migration
  def change
    # your data modification logic
  end
end

当您将其部署到生产环境时,您可以通过以下方式执行它:

rake db:migrate

该迁移只会 运行 一次。

在此处了解有关 Rails 迁移的更多信息:http://guides.rubyonrails.org/v4.2/active_record_migrations.html

虽然 Diego 的回答是正确的,但我想指出另一种方法。基本上有两种更新数据的方法。第一个是 Diego 的回答中描述的迁移。另一个是 Rake 任务。每个参数都有几个参数。

与迁移相比的主要优势是 Rake 任务不依赖于代码。因此,当新开发人员加入项目时,您不需要压缩迁移或从模式文件构建数据库。

你应该看看 Elle Meredith 写的关于 data migrations in Rails 的 post,然后选择最适合你的方法。