2013-02-08 3 views
1

У меня есть простой проект ruby, который использует ActiveRecord как ORM (без Rails). Я создал несколько файлов миграции для всех моих таблиц, и теперь я ищу, как их использовать witouht Rails. Вот пример:Как сгенерировать файл схемы из файлов миграции?

class CreateCategoriesTable < ActiveRecord::Migration 
    def up 
    create_table :categories do |t| 
     t.integer :id, null: false 
     t.string :name, null: false 
    end 
    end 

    def down 
    drop_table :categories 
    end 
end 

И в моем главном файле я запускаю перенос с помощью:

CreateCategoriesTable.new.migrate :up 

Однако, если у меня есть БД (его БД SQLite в файле) эта миграция вызывает исключение (таблица уже существует). Итак, как я могу запустить все мои миграции (или как сгенерировать файл схемы, а затем как ее запустить?), Только тогда они необходимы, например. в первый раз, а потом только тогда, когда что-то изменилось?

ответ

1

This github repo может оказаться Вам полезной.

Схема наименования миграций на самом деле довольно важна. Какие миграции были выполнены, отслеживается в таблице с именем * schema_migrations *. Вот пример из Postgres:

Table "public.schema_migrations" 
Column |   Type   | Modifiers 
---------+------------------------+----------- 
version | character varying(255) | not null 
Indexes: 
"unique_schema_migrations" UNIQUE, btree (version) 

development=# select * from schema_migrations; 
    version  
---------------- 
20130206231627 
(1 row) 

В капельную schema.rb может следить за его текущей версии

ActiveRecord::Schema.define(:version => 20130206231627) do 
    ... 
end 
Смежные вопросы