Ruby rake db:schema:load多次加载schema.rb?
从Rails 3升级到Rails 4后,Ruby rake db:schema:load多次加载schema.rb?,ruby,ruby-on-rails-4,rake,Ruby,Ruby On Rails 4,Rake,从Rails 3升级到Rails 4后,db:schema:load任务失败。我做了一些深入研究,发现在升级之后,当我运行bundle exec rake db:schema:load时,db/schema.rb文件被加载了两次。第一次运行良好;然后,由于create\u table force:true由于表上存在依赖性约束而失败,因此第二次执行失败 我已经剥离了所有额外的rake任务和增强,试图排除任何代码,但这仍然会加载schema.rb两次。它总是正好是我能够在SQLite上成功运行它并
db:schema:load
任务失败。我做了一些深入研究,发现在升级之后,当我运行bundle exec rake db:schema:load
时,db/schema.rb
文件被加载了两次。第一次运行良好;然后,由于create\u table force:true
由于表上存在依赖性约束而失败,因此第二次执行失败
我已经剥离了所有额外的rake任务和增强,试图排除任何代码,但这仍然会加载schema.rb两次。它总是正好是我能够在SQLite上成功运行它并在那里看到相同行为的两倍,但是由于SQLite没有强制执行表约束,它一直运行到完成。您可以检查以确保您的Rakefile没有两次加载任务。当Rake使用与现有任务相同的名称注册一个任务时,它将按顺序运行这两个任务,而不是用新的定义替换旧的定义。您将看到它两次,因为在
开发中,Rails在同一次运行中为测试和开发运行db任务
请查看该文件以了解详细信息,特别是方法#load#u schema_current
(这是因为您引用了它)和#每个_current_配置
我在Rails 5中看到了这一点,但仅在开发环境中看到。RAILS_ENV=测试工作正常。