Ruby on rails RubyonRails应用程序重启时的脚本执行
我正在用RubyonRails(RailsV4)开发一个应用程序 我对模型做了一些更改,一旦生产中的应用程序更新并重新启动,数据就需要通过脚本进行修改 有没有一种简洁的方法可以告诉rail服务器在代码更新时执行脚本(只执行一次)Ruby on rails RubyonRails应用程序重启时的脚本执行,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,我正在用RubyonRails(RailsV4)开发一个应用程序 我对模型做了一些更改,一旦生产中的应用程序更新并重新启动,数据就需要通过脚本进行修改 有没有一种简洁的方法可以告诉rail服务器在代码更新时执行脚本(只执行一次) 这就像在gem文件中添加gem时,服务器在执行包更新之前不会启动。听起来您可以将此一次性脚本放入rails迁移中。在终端中运行此命令: rails generate migration NameOfMyDataMigration 将MyData Migration的名
这就像在gem文件中添加gem时,服务器在执行包更新之前不会启动。听起来您可以将此一次性脚本放入rails迁移中。在终端中运行此命令:
rails generate migration NameOfMyDataMigration
将MyData Migration的名称替换为对您有意义的名称
这将在db/migrate
中创建一个新的迁移脚本,该脚本如下所示:
class NameOfMyDataMigration < ActiveRecord::Migration
def change
# your data modification logic
end
end
该迁移将只运行一次
在这里了解有关Rails迁移的更多信息:虽然Diego的答案是正确的,但我想指出另一种方法。基本上有两种方法来更新数据。第一个是Diego回答中描述的迁移。另一个是Rake任务。每一种观点都有几个论点 与迁移相比,Rake任务的主要优点是不依赖于代码。因此,当新开发人员加入项目时,您不需要挤压迁移或从模式文件构建数据库
你应该看看Elle Meredith写的关于迁移的帖子,然后选择最适合你的方法。这就是迁移的目的。您既可以更改表的结构,也可以更改表中的数据。我正在使用mongomapper。这在mongomapper中也适用吗?我知道如果您使用active record,此解决方案会起作用。在我的例子中,我需要在两个模型之间分配一个关系,我希望确保这一点。因为我使用mongomapper,并且在阅读了本文之后,rake任务是解决我的问题的更好的方法。迁移是一种很酷的工具,仅在您更改模式时使用,但不应用于数据。
rake db:migrate