2013-03-01 74 views
11

我试图手动创建/更新用于测试目的的db/structure.sql文件。我在application.rb中设置了“config.active_record.schema_format = :sql”。我想知道是否有相当于“ActiveRecord::SchemaDumper.dump”的命令来创建或更新structure.sql。我试过structure_dump,但产量为零:需要帮助为我的Rails应用程序创建structure.sql

> ActiveRecord::Base.connection.structure_dump 
=> nil 

我也试过路过一个文件到方法:

> File.open(File.join(Rails.root, 'db/structure.sql')) { |f| ActiveRecord::Base.connection.structure_dump() } 
=> nil 

到目前为止,我已经能够产生的唯一途径或更新db/structure.sql是通过运行rake db:migrate。任何替代品?或者当我尝试运行ActiveRecord :: Base.connection.structure_dump时错过了一些东西?

回答

23

尝试rake db:structure:dump将从数据库重新创建db/structure.sql

+1

'rake db:schema:dump'只是重新生成schema.rb。我想要得到structure.sql。 – MothOnMars 2013-03-01 00:49:57

+0

我的不好。忘了你使用的是sql格式。请参阅更新的答案 – jvnill 2013-03-01 00:54:55

+0

感谢您的更新。我真的想知道是否有一个非耙子任务的方式来做这件事,仅仅因为我会从测试中调用它,并且调用耙子任务似乎不应该是必要的(尽管我很新Rails,所以我可能会假设太多)。我在想,如果ActiveRecord :: SchemaDumper.dump是等效于rake db:schema:dump的命令,那么可能存在与rake db类似的单行命令:structure:dump ...? – MothOnMars 2013-03-01 01:09:07