2014-09-03 122 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