我有一个充满数据的Ruby on Rails开发数据库。我想删除所有东西,重建数据库。我正在考虑使用类似的东西:

rake db:recreate

这可能吗?


当前回答

我认为运行这个命令的最好方法是:

**rake db:reset** it does db:drop, db:setup
 rake db:setup does db:create, db:schema:load, db:seed

其他回答

因为在开发过程中,您总是希望重新创建数据库,所以可以在lib/tasks文件夹中定义一个rake任务。

  namespace :db do
      task :all => [:environment, :drop, :create, :migrate] do
   end 
end

在终端中运行

rake db:all

它将重新构建数据库

只需发布以下步骤:删除数据库,然后重新创建它,迁移数据,如果有种子,则播种数据库:

rake db:drop db:create db:migrate db:seed

由于rake的默认环境是开发环境,如果您在spec测试中看到异常,您应该为测试环境重新创建db,如下所示:

RAILS_ENV=test rake db:drop db:create db:migrate

在大多数情况下,测试数据库在测试过程中被播种,因此db:seed任务操作不需要通过。否则,你必须准备数据库:

rake db:test:prepare

or

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

我认为运行这个命令的最好方法是:

**rake db:reset** it does db:drop, db:setup
 rake db:setup does db:create, db:schema:load, db:seed

更新:在Rails 5中,这个命令可以通过以下命令访问:

rails db:清除db:创建db:迁移RAILS_ENV=test


在最新的rails 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

根据你想要的,你可以使用…

rake db:创建

从config/database中从头构建数据库。yml,还是……

rake db:模式:负载

根据您的模式从头构建数据库。rb文件。