我正在使用rails上的ruby开发应用程序(rails v4)。
我对模型进行了一些更改,一旦生产中的应用程序更新并重新启动,需要通过脚本修改数据。
当代码更新时,是否有一种简洁的方式可以说铁路服务器执行脚本(只需一次)。
就像在Gemfile中添加gem一样,服务器在你进行捆绑更新之前不会启动。
答案 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的帖子,然后为你选择最好的方法。