在rails app重启时在ruby上执行脚本

时间:2016-09-19 17:48:26

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

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

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

当代码更新时,是否有一种简洁的方式可以说铁路服务器执行脚本(只需一次)。

就像在Gemfile中添加gem一样,服务器在你进行捆绑更新之前不会启动。

2 个答案:

答案 0 :(得分:2)

听起来你可以将这个一次性脚本放在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

答案 1 :(得分:1)

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

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

你应该看看Elle Meredith写的关于data migrations in Rails的帖子,然后为你选择最好的方法。