Держите таблицу вне schema.rb во время миграции - PullRequest
14 голосов
/ 18 ноября 2009

В качестве продолжения более раннего вопроса о том, чтобы не перезагружать огромную постоянную таблицу, когда я запускаю свои тесты , мне нужно держать эту таблицу вне schema.rb, когда я запускаю свои миграции. Эта таблица загружается непосредственно из mysqldump, поэтому я не беспокоюсь о ее отслеживании.

Итак, как я могу сохранить конкретную таблицу вне schema.rb?

Ответы [ 2 ]

34 голосов
/ 18 ноября 2009

Оказывается, есть вариант только для этой ситуации!

Я нашел это в activerecord-2.3.4/lib/active_record/schema_dumper.rb:

##
# :singleton-method:
# A list of tables which should not be dumped to the schema. 
# Acceptable values are strings as well as regexp.
# This setting is only used if ActiveRecord::Base.schema_format == :ruby
cattr_accessor :ignore_tables 
@@ignore_tables = []

Так что все, что мне нужно было сделать, это вставить это в конец environment.rb:

ActiveRecord::SchemaDumper.ignore_tables = ["table_name"]

Опция ignore_tables будет принимать регулярные выражения. Например, чтобы игнорировать все таблицы, начинающиеся с «MS»:

ActiveRecord::SchemaDumper.ignore_tables = [/^MS/]
0 голосов
/ 18 ноября 2009

Я думаю, что если вы сохраните миграцию, чтобы сгенерировать таблицу из своей папки миграции, то она не запустится и, в свою очередь, не будет использоваться для генерации базы данных разработки, которая должна держать ее вне schema.rb.

Вероятно, вы можете найти какой-нибудь способ запустить эту единственную миграцию, если вам нужно выйти за пределы задачи rake (нужно просто установить соединение, а затем запустить его в классе миграции)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...