Gem-зависимости с движком Rails 3 не работают в инициализаторе - PullRequest
4 голосов
/ 25 ноября 2010

tldr;Когда я запускаю задачу rake в тестовом приложении, которое использует Engine, зависимости Engine, похоже, не соблюдаются.Я должен (-D) RY, указав зависимость в Gemfile

тестового приложения. Я создал Rails Engine как драгоценный камень, используя Jeweler.У него есть зависимость от Devise, которую я указал в Rakefile:

gem.add_runtime_dependency 'devise', '~> 1.1.3'

В моем тестовом приложении я добавляю зависимость Engine в Gemfile, и bundle install показывает, что Devise выбран и установлен.Однако, если я запускаю начальный rake db:migrate, выдается ошибка:

uninitialized constant Devise
<snip>config/initializers/devise.rb:3

Если я вручную добавлю зависимость Devise в Gemfile тестового приложения, это сработает.Вероятно, я упустил что-то очевидное, но на данном этапе кажется, что тестовое приложение подбирает и правильно устанавливает зависимость, но по какой-то причине код инициализатора завершается ошибкой, если зависимость снова не указана в Gemfile тестового приложения.

1 Ответ

7 голосов
/ 14 февраля 2011

Вы, вероятно, нашли решение или обходной путь, но я опишу, как я решил эту проблему, если у кого-то возникнет такая же проблема.

Просто положите:

require 'devise'

в lib / my_gem.rb.

Rails автоматически загружает гемы, указанные в Gemfile, и ничего больше. Если вы разрабатываете драгоценный камень с зависимостями, вы должны требовать его вручную.

...