[解決済み] rake db:schema:load vs. migrations(マイグレーション
質問
アプリが複雑になるにつれ、マイグレーションが遅くなり、面倒になるのでは?
rake db:schema:load
を呼び出すことができるのに、なぜマイグレーションが存在するのでしょうか?
上記の答えが、マイグレーションはバージョン管理(データベースへの段階的な変更記録)のために使われるということであれば、アプリがより複雑になるにつれ、そして
rake db:schema:load
は、その主要な機能を維持し続けるのでしょうか?
注意
この質問の回答から
rake db:schema:load
はデータを削除します
を使用する場合は注意が必要です。
解決方法は?
マイグレーションは、データベースに対して前方および後方ステップの変更を提供します。本番環境では、デプロイ中にデータベースの増分変更を行う必要があります。マイグレーションは、ロールバックフェイルセーフとともにこの機能を提供します。もしあなたが
rake db:schema:load
を本番サーバーで使用すると、本番データをすべて削除してしまうことになります。これは危険な習慣です。
とはいえ、時折マイグレーションを "collapse"することは、適切なプラクティスであると思います。これは、古いマイグレーションを削除し、単一のマイグレーションに置き換えることを意味します。
schema.rb
ファイル)を更新し
schema_migrations
テーブルで、この変更を反映させることができます。
この作業を行う際には、十分な注意が必要です! 気をつけないと、簡単に本番データを消してしまうことになります。
余談ですが、マイグレーションファイルには絶対にデータ作成を入れてはいけないと強く思っています。その
seed.rb
ファイルを使用するか、カスタム rake または deploy タスクを使用することができます。マイグレーションファイルにこれを入れると、データベーススキーマの指定とデータの指定が混在し、マイグレーションファイルを実行する際にコンフリクトが発生する可能性があります。
関連
-
[解決済み】コレクションをDESCで並べる方法
-
[解決済み] Railsです。NameError: 初期化されていない定数
-
[解決済み] erbでコメントを追加する最適な方法
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] Ruby on Railsでsimple_formを使うさまざまな方法|何が違うの?
-
[解決済み] railsでcheck_boxをcheckedにする方法は?
-
[解決済み] rake db:migrate db:reset とdb:schema:loadの違いについて
-
[解決済み] bundle exec rakeとはどういう意味ですか?
-
[解決済み] Rails 3 のマイグレーション。参照列を追加する?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bundler: コマンドが見つからない
-
[解決済み】Rails。Ruby on Railsの移行でデータベースカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] Rubyの文字列から日付への変換
-
[解決済み] rake db:migrateを使って1ステップだけロールバックする方法
-
[解決済み] Oauth2 Instagram API "リダイレクトURIが登録されたリダイレクトURIと一致しない"
-
[解決済み] Ruby: public static メソッドを作るには?
-
[解決済み] rspecにおけるassignsの意味
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある
-
[解決済み] Heroku Error R14 (Memory quota exceeded): How do I solve this?