2

我正在使用 Capistrano 为我的 Rails 应用程序部署定期更新,并将版本号作为字符串保存在全局常量中。

我希望能够为特定更新仅部署/运行一次简单的脚本,它将对数据库执行一些操作(我正在使用mongoid,并且我已经稍微修改了架构)

假设我在 0.1.25 版本下并升级到 0.1.26,我只想为 0.1.25 或更低版本的服务器运行此自定义脚本一次(对于 0.1 等下一次更新,该脚本不会再次运行.26 至 0.1.27)

MyModel.all.each do |instance|
  instance.new_field_with_v26 = somefunction
end

我相信这可以实现为 Capistrano 任务,但是如何检索该常量的先前值?( Application::VERSION_NUMBER)

4

1 回答 1

1

您可以使用迁移系统来执行此操作,然后 Capistrano 可以运行该迁移系统。例如:https ://github.com/adacosta/mongoid_rails_migrations

至少,像这样的东西可以用作模板:

  • 将架构版本存储在数据库中。
  • 当您对架构进行更改时,请在代码中增加架构版本。
  • 编写一个 Rake 任务来运行相关的迁移。

我希望这是有帮助的。

于 2015-08-03T00:26:26.930 回答