Как установить схему базы данных из плагина Rails 3 в другой плагин

Я пишу плагин Rails 3, который использует другой плагин Rails 3, который я недавно написал. Давайте назовем их июль и август. Так что в августовской гемспек я добавляю строку:

s.add_dependency "july", "~> 0.0.1"

и я бегу bundle install, Затем я создаю несколько моделей и приспособлений. Далее мне нужно перенести базу данных:

$ cd test/dummy
$ rake august:install:migrations
$ rake db:migrate

Теперь таблицы August (созданный мной плагин) находятся в базах данных разработки и тестирования, а таблицы за июль - нет. Но в моих августовских таблицах есть внешние ключи к моим июльским таблицам, поэтому, прежде чем я смогу выполнить какие-либо тесты, мне нужно создать июльские таблицы и написать соответствующие фиксаторы. Я бы ожидал бежать rake -T и посмотреть

rake august:install:migrations
rake july:install:migrations

но я вижу только august грабли задача Итак, как мне создать таблицы базы данных за июль (кроме создания новой миграции, которая будет нарушать DRY, поскольку я уже сделал это в своей кодовой базе за июль)?

1 ответ

Приложение Dummy должно напрямую зависеть от "июля", чтобы оно загружало грабли "июля". Поэтому мне нужно включить его в Gemfile, а не в gempspec. Однако размещение его в Gemfile не заставит настоящие (не фиктивные) приложения устанавливать в июле, когда я bundle install после помещения "августа" в их Gemfile / gemspec.

Поэтому мне нужно включить его в обоих местах - в Gemfile для задачи rake (и это может быть в :development группа), и в gemspec (используя add_dependency или же add_runtime_dependency) форсировать установку зависимости. Это решение, но я не понимаю почему.

Я попытался объяснить свои мысли по этому поводу в своем комментарии здесь, но не смог точно определить какую-либо логику, объясняющую эту методологию проектирования. Может ли кто-нибудь объяснить истинную причину?

Другие вопросы по тегам