Ruby on Rails(レールv4)でアプリを開発しています。Ruby on Railsアプリの再起動時のスクリプト実行
モデルの一部を変更し、運用環境のアプリケーションを更新して再起動すると、スクリプトによってデータを変更する必要があります。
コードが更新されたときに、スクリプトを実行するためにレールサーバーに(一度)スクリプトを実行する方法がありますか。
GemfileにGemを追加すると、バンドルを更新するまでサーバは起動しません。
Ruby on Rails(レールv4)でアプリを開発しています。Ruby on Railsアプリの再起動時のスクリプト実行
モデルの一部を変更し、運用環境のアプリケーションを更新して再起動すると、スクリプトによってデータを変更する必要があります。
コードが更新されたときに、スクリプトを実行するためにレールサーバーに(一度)スクリプトを実行する方法がありますか。
GemfileにGemを追加すると、バンドルを更新するまでサーバは起動しません。
サンディエゴの答えが正しいですが、私は別のアプローチを指摘したいと思います。基本的にデータを更新するには2つの方法があります。最初のものは、Diegoの答えに記載されているような移行です。もう1つはRakeタスクです。それぞれにはいくつかの議論があります。
移行の主な利点は、Rakeタスクがコードに依存しないことです。その結果、新しい開発者がプロジェクトに参加するときに、移行を徹底的に行う必要もなく、スキーマファイルからデータベースを構築する必要もありません。
あなたは、Elle Meredithが投稿した投稿を、data migrations in Railsについて見てから、最適な方法を選択する必要があります。
私はmongomapperを使用しているので、記事を読んだ後、レーキタスクは私の問題のより良い解決策です。移行は、スキーマを変更するときに使用するには便利なツールですが、データには使用しないでください。 – Kerby82
このオフラインスクリプトをレールの移行に配置できるように思えます。ターミナルで次のコマンドを実行します。
rails generate migration NameOfMyDataMigration
次のようになりますdb/migrate
の新しい移行スクリプトを作成します。あなた
に理にかなっている名前でNameOfMyDataMigration
を置き換えます
class NameOfMyDataMigration < ActiveRecord::Migration
def change
# your data modification logic
end
end
プロダクションにデプロイすると、次のように実行できます。
rake db:migrate
移行は1回のみ実行されます。
は、ここではRailsのマイグレーションについては、こちらをご覧ください:http://guides.rubyonrails.org/v4.2/active_record_migrations.html
これはmongomapperでも動作しますか?私はあなたがアクティブなレコードを使用する場合、このソリューションの仕事を知っています。私の場合は、2つのモデルの間に関係を割り当てる必要があり、これが行われていることを確認したいと思います。 – Kerby82
mongoについては、この宝石を使用することができます:https://github.com/cheald/mongrations – DiegoSalazar
これは移行のためのものです。テーブルの構造を変更したり、テーブル内のデータを変更したりすることができます。 –
私はmongomapperを使用しています。 – Kerby82