什么可以导致Rails每次都运行迁移?

时间:2014-04-25 17:04:08

标签: ruby-on-rails ruby database activerecord rails-migrations

什么可能导致Rails每次都运行迁移?

我正在部署到qa环境,每次都会运行迁移,就像rails再次设置整个数据库一样。

这是我的config/environments/qa.rb

Backend::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb

  config.assets.compile = true
  config.serve_static_assets = false

  # In the development environment your application's code is reloaded on
  # every request. This slows down response time but is perfect for development
  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Log error messages when you accidentally call methods on nil.
  config.whiny_nils = true

  # Show full error reports and disable caching
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger
  config.active_support.deprecation = :log

  # Only use best-standards-support built into browsers
  config.action_dispatch.best_standards_support = :builtin

  # Raise exception on mass assignment protection for Active Record models
  config.active_record.mass_assignment_sanitizer = :strict

  # Log the query plan for queries taking more than this (works
  # with SQLite, MySQL, and PostgreSQL)
  config.active_record.auto_explain_threshold_in_seconds = 0.5

  # Do not compress assets
  config.assets.compress = false

  # Expands the lines which load the assets
  config.assets.debug = true

  # ActionMailer Config
  config.action_mailer.default_url_options = { :host => 'localhost:3002' }
  config.action_mailer.delivery_method = :smtp
  # change to true to allow email to be sent during development
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"


end

编辑:Rails 4.0和3.2 - rake db:migrate每次都会运行所有迁移。

编辑:使用capistrano进行部署:cap qa deploy

2 个答案:

答案 0 :(得分:0)

可能是因为您在Capistrano部署文件中有迁移任务。

检查 config / deploy.rb ,如果迁移存在一些差异(可能是" 部署:迁移& #34;或完全佣金任务)。

答案 1 :(得分:0)

是的,我很粗心。我当时正在使用sqlite3。这意味着capistrano每次都会创建一个新版本和一个新数据库。这可以通过链接到数据库文件来解决。

我选择创建一个托管在AWS上的数据库。