2014-09-03 123 views
1

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

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 

而且我有一个schema.rb从旧的Rails应用程序看起来像这样:

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

+0

你在新的应用程序使用的是什么版本的Rails的? – infused 2014-09-03 00:47:08

+0

我正在使用Rails 4.1.1 – NateSHolland 2014-09-03 00:51:31

回答

1

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

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

这主要适用,但它错误,因为我没有定义legacy_development的环境。有没有办法解决? – NateSHolland 2014-09-03 05:10:12

+0

大部分工作?什么是错误?我只是在rails-4.1.1下测试了它,它没有定义一个环境。 database.yml中的'legacy_development'条目应该足够了。 – infused 2014-09-03 05:19:11

+0

我能够解救这个问题。你的回答是正确的。 – NateSHolland 2014-09-03 06:15:33