私はRailsのデータベースのデータにルビーの完全な発展を持っています。私はすべてのコンテンツを削除し、データベースを再構築したいです。私のようなものを使用して検討しています:
rake db:recreate
それは可能ですか?
#1階
私は今日、私はレールのアーキテクチャの変更の多くを行います。私は他の人がモデルを削除する必要がありますが、階層内の二つの追加モデルを追加するために必要な実現しました。モデルとコントローラは、多くの小さな変更が必要です。
私は2つの新モデルを追加し、以下の方法を使用して作成します。
rake db:migrate
私はその後、schema.rbファイルを編集しました。私は手動で少しだけを並べ替え、私はより明確にしましょう、必要に応じて外部キーフィールドを変更、古いモデルが不要になった削除されません。私は削除されたすべての移行をした後、次の方法で再ビルドを実行します。
rake db:reset
これは非常にうまく機能します。もちろん、すべてのデータを再ロードする必要があります。Railsのマイグレーションが削除されたことを認識し、ハイウォーターマークをリセットします。
-- assume_migrated_upto_version(20121026094813, ["/Users/sean/rails/f4/db/migrate"])
ハウス#2
あなたは、次のコマンドラインを使用することができます。
rake db:drop db:create db:migrate db:seed db:test:clone
ハウス#3
よるRailsのガイドラインを、あなたは、このいずれかを使用する必要がありschema.rb
、それがからになるので、schema.rb
移行ファイル1つのリロードによって代わりに一つでロードされます。
rake db:reset
#4階
手動でそれを行うことができます。
rake db:drop
rake db:create
rake db:migrate
それともrake db:reset
、それは、上記の手順を実行しますが、また、実行されdb/seeds.rb
たファイルを。
追加のニュアンスがありrake db:reset
、直接schema.rb
の代わりに、再びすべての移行ファイルを実行しているのは、ファイルをロードします。
すべての場合において、あなたのデータが吹き飛ばされます。
ハウス#5
特定のデータベースを削除するには、レールのコンソール上でこれを行うことができます。
$rails console
Loading development environment
1.9.3 > ActiveRecord::Migration.drop_table(:<table_name>)
1.9.3 > exit
その後、再びDBを移行
$bundle exec rake db:migrate
ハウス#6
コマンドラインから実行します
rake db:migrate:reset
#7の構築
Railsの4日、すべての必要とされています
$ rake db:schema:load
これは、データベース上のすべてのコンテンツを削除し、個別にすべての移行を適用することなく、schema.rbファイルからパターンを再作成します。
#8の構築
単純に、次の手順を実行します。種子がまかれている場合は、データベース、データベースを削除し、データベースを再作成し、データの移行:
rake db:drop db:create db:migrate db:seed
以来rake
デフォルト設定がある開発するあなたはスペックテストで例外を見れば、あなたはする必要がありますテスト以下のように、DB環境を再作成します。
RAILS_ENV=test rake db:drop db:create db:migrate
ほとんどの場合、テスト・データベースをテストするので、無渡し中に播種されたdb:seed
タスクの操作。そうしないと、データベースを準備する必要があります。
rake db:test:prepare
若しくは
RAILS_ENV=test rake db:seed
また、当社は、利用したい再作成するタスク、あなたに次のコードを追加することができRakefileに:
namespace :db do
task :recreate => [ :drop, :create, :migrate ] do
if ENV[ 'RAILS_ENV' ] !~ /test|cucumber/
Rake::Task[ 'db:seed' ].invoke
end
end
end
次に問題:
rake db:recreate
ハウス#9
などで
rake db:drop db:create db:migrate db:seed
行のすべて。環境は、何度も何度も再読み込みされることはありませんので、これは高速です。
DB:ドロップは -データベースを破棄します。
デシベル:作成 -データベースを作成します(ホスト/ DB /パスワードのconfig / database.ymlをから取得されます)
DB:移行 -ディレクトリから(デシベル/移行/ .RB)*を実行し、既存の移行。
DB:SEED -ディレクトリから(デシベル/移動/ seed.rb) 、ランシード・データ。
私は通常のように:
rake db:reset
すべてを行うための時間。
乾杯!
ハウス#10
アップデート:Railsの5、次のコマンドを使用してこのコマンドにアクセスすることができます。
rails db:purge db:create db:migrate RAILS_ENV=test
開始からレールの最新バージョン4.2、あなたは今、実行することができます。
rake db:purge
出典:提出
# desc "Empty the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV it defaults to purging the development and test databases."
task :purge => [:load_config] do
ActiveRecord::Tasks::DatabaseTasks.purge_current
end
上述したように、それを併用してもよいです。
rake db:purge db:create db:migrate RAILS_ENV=test
ハウス#11
4.2レールの上に、すべてのデータを削除してもデータベースを保持
$ bin/rake db:purge && bin/rake db:schema:load
https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md
ハウス#12
開発中に、あなたは常に再作成するデータベースにしたいので、あなたはlibに/タスクフォルダにrakeタスクを定義することができます。
namespace :db do
task :all => [:environment, :drop, :create, :migrate] do
end
end
最後に、あなたが実行されます
rake db:all
それはあなたのデータベースを再構築します
ハウス#13
私は、このコマンドを実行するための最良の方法だと思います。
**rake db:reset** it does db:drop, db:setup
rake db:setup does db:create, db:schema:load, db:seed
ハウス#14
あなたのニーズに応じて、使用することができます......
rake db:create
...からconfig/database.yml
スクラッチビルドにconfig/database.yml
、あるいは......
rake db:schema:load
...からschema.rb
データベースを構築するために最初からファイル。
ハウス#15
私はライナーターミナルで次のように使用します。
$ rake db:drop && rake db:create && rake db:migrate && rake db:schema:dump && rake db:test:prepare
私はそれはシェルのエイリアスと名前として使用しますremigrate
今までは、あなたは簡単に「リンク」タスクをレールできます。
$ rake db:drop db:create db:migrate db:schema:dump db:test:prepare # db:test:prepare no longer available since Rails 4.1.0.rc1+
ハウス#16
私はこれを行うには、2つの方法があることを知っています:
これはあなたのデータベースをリセットし、すべてのリロードを現在のスキーマを使用します。
rake db:reset db:migrate
これは、あなたの現在のモードを移行し、それを作成し、データベースを破壊します。
rake db:drop db:create db:migrate
すべてのデータは、両方のケースでは失われます。
ハウス#17
あなたは使用することができますdb:reset
-デシベルを実行するために:ドロップとDB:セットアップまたはdb:migrate:reset
-実行デシベル:ドロップ、デシベル:作成し、DB:移行を。
それは使用にあなたが望むものに依存してschema.rbが存在します
ハウス#18
あなただけ実行することができます
rake db:setup
あなたはシードファイルを作成するために、特定のデータを使用する場合は、新しいデータベースを作成し、データベースを削除し、種子からデータベースを作成します。
ハウス#19
3オプション、同じ結果:
1.すべての手順を実行します。
$ rake db:drop # deletes the database for the current env
$ rake db:create # creates the database for the current env
$ rake db:schema:load # loads the schema already generated from schema.rb / erases data
$ rake db:seed # seed with initial data
2.リセット:
$ rake db:reset # drop / schema:load / seed
3.移行:リセット:
$ rake db:migrate:reset # drop / create / migrate
$ rake db:seed
注意:
- スキーマを使用する場合:実行速度が速く、同じ結果より、すべての移行をロードします。
- すべてのデータが失われます。
- あなたは、行で複数の熊手を実行することができます。
- 図3は、ガイドレールに適用されます。