2

Capistrano を使用して Rails アプリケーションの定期的な更新を展開しており、バージョン番号をグローバル定数の文字列として保持しています。

データベースでいくつかの操作を実行する、特定の更新に対して1回だけ簡単なスクリプトを展開/実行できるようにしたいと思います(私はmongoidを使用しており、スキーマを少し変更しました)

バージョン 0.1.25 未満で、0.1.26 にアップグレードしているとします。0.1.25 以下のサーバーに対してこのカスタム スクリプトを1 回だけ実行したいと思います (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 に答える