[英]How to make rake db:migrate generate schema.rb when using :sql schema format
如果在config/application.rb
使用此選項:
config.active_record.schema_format = :sql
然后當你這樣做:
rake db:migrate
它只轉儲db/structure.sql
。 我知道它不使用db/schema.rb
因為它使用的是:sql
選項,但是如何使用rake db:migrate
generate db/schema.rb
呢?
我們需要它,因為RubyMine 4.5和IntelliJ IDea 11使用db/schema.rb
來自動完成列。
要生成/更新db/schema.rb
即使使用:sql
選項,也可以將其放在Rakefile
:
Rake::Task["db:migrate"].enhance do
if ActiveRecord::Base.schema_format == :sql
Rake::Task["db:schema:dump"].invoke
end
end
這對IDea和RubyMine來說應該沒問題。
對於其他只想要文件供參考的人,您可能希望將其重命名為db/schema.rb.backup
類的其他內容,這樣就不會讓人感到困惑。 要做到這一點:
Rake::Task["db:migrate"].enhance do
if ActiveRecord::Base.schema_format == :sql
Rake::Task["db:schema:dump"].invoke
File.rename(File.expand_path('../db/schema.rb', __FILE__), File.expand_path('../db/schema.rb.backup', __FILE__))
end
end
(注意:在Rakefile
中的路徑中使用../
,因為__FILE__
計算結果為/Rakefile
結尾的路徑。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.