2014-09-03 4 views
1

В настоящее время я работаю над системой, использующей две разные базы данных. Один из них является новым, и именно там происходит большинство вещей, но я использую старую базу данных из другого приложения rails где-то в другом месте. Поэтому у меня нет миграции для базы данных в моем проекте. Однако я хотел бы иметь возможность настроить сценарий на 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 из приложения старых рельсов, который выглядит следующим образом:

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

+0

Я использую Rails 4.1.1 – NateSHolland

ответ

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

+0

В основном работает? Какая ошибка? Я просто тестировал это под rails-4.1.1, и он работает без определения среды. Записи 'legacy_development' в файле database.yml должны быть достаточными. – infused

+0

Я смог обойти это с помощью спасения. Вы отвечаете правильно. – NateSHolland