使用schema.rb快速构建旧数据库以进行测试

时间:2014-09-03 00:01:06

标签: ruby-on-rails ruby ruby-on-rails-4 rspec database-schema

我目前正在使用两个不同数据库的系统。其中一个是新的,这是大多数事情发生的地方,但我在其他地方使用另一个rails应用程序的旧数据库。因此,我没有在项目中迁移数据库。但是我希望能够在Jenkins上设置一个脚本,这将允许我进行设置以便我可以进行CI。我的database.yml文件基本上是这样的:

default: &default
  adapter: postgresql
  encoding: unicode
development:
  <<: *default
  database: proj_development
test:
  <<: *default
  database: proj_test
legacy_development:
  <<: *default
  database: legacy_development
legacy_test:
  <<: *default
  database: legacy_test

我有一个来自旧的rails应用程序的schema.rb,如下所示:

ActiveRecord::Schema.define(:version => 20140721152610) do 
  create_table "users", :force => true do |t|
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "password",                 :limit => 60
    t.string   "security_token",           :limit => 32
    t.text     "additional_information"
  end

  create_table "email_addresses", :force => true do |t|
    t.string   "email"
    t.datetime "verified_at"
    t.string   "status"
  end
end

有没有办法可以运行命令来加载该架构并进行设置,以便使用该架构构建legacy_test?某种rake db:schema:load --file=legacy_schema.rb --database=legacy_test

1 个答案:

答案 0 :(得分:1)

您可以使用SCHEMA指定要加载的自定义架构文件。因此,要创建在legacy_development环境中定义的数据库并加载自定义模式,请使用:

rake db:create RAILS_ENV=legacy_development
rake db:schema:load RAILS_ENV=legacy_development SCHEMA=db/legacy_schema.rb