Зачем мне явно включать гем, если он уже зависит от другого камня, который я использую? - PullRequest
0 голосов
/ 10 ноября 2018

Я создал движок gem / Rails (назовем его my_rails_gem ), который зависит от другого самоцвета; в частности, драгоценный камень Composite_primary_keys (в некоторых моделях это необходимо). Итак, в файле .gemspec у меня есть

Gem::Specification.new do |s|
  #...
  s.add_dependency 'composite_primary_keys'

Проблема в том, что когда я включаю my_rails_gem в Gemfile другого проекта Rails и пытаюсь использовать модели, я получаю сообщения об ошибках композитный_применный_кейс '. Я также должен явно добавить gem 'composite_primary_keys' в Gemfile приложения, чтобы оно функционировало правильно.

Почему это? Не в этом ли суть Bundle и гем-зависимостей? Я хочу снять с разработчика бремя, используя my_rails_gem , чтобы помнить, что нужно включить Composite_primary_keys , но это специально предотвращает это. Я делаю что-то не так или мои ожидания / понимание неверны?

1 Ответ

0 голосов
/ 10 ноября 2018

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

Если вы хотите, чтобы зависимый драгоценный камень требовался автоматически при включении вашего драгоценного камня, то в вашем файле my_rails_gem.rb (в каталоге lib) вы можете сделать:

require 'composite_primary_keys'

Я считаю, что это должно помочь тебе. По крайней мере, так я это делаю.

Кроме того, если в зависимом геме есть ресурсы стилей и javascript, которые вы хотите включить (я подозреваю, что composite_primary_keys нет), вам необходимо добавить соответствующие директивы к вашим my_rails_gem.js и my_rails_gem.sass (или любым другим используемый вами движок шаблонов).

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