config.gem в environment.rb - PullRequest
       16

config.gem в environment.rb

2 голосов
/ 22 июня 2009

Скажем, в приложении Rails у вас есть несколько драгоценных камней, которые вы используете в своем приложении (мы будем называть их " первичные камни "), и вы продали их для переносимости.

Предположим, что для этих " первичных драгоценных камней " также требуются собственные драгоценные камни - мы назовем их " вторичных драгоценных камней ".

Когда вы настраиваете environment.rb, вы должны сказать:

config.gem 'primary-gem'

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

Но, вы также должны сказать. , .

config.gem 'secondary-gem'

, даже если вы не используете этот самоцвет в своем приложении?

Или достаточно просто включить гем в каталог vendor/gems, чтобы он мог быть выбран вашим приложением?

Ответы [ 2 ]

5 голосов
/ 22 июня 2009

Во время развертывания rails знает о ваших зависимостях, поэтому, если вы хотите заморозить ваши гемы, вы можете запустить

rake gems:unpack:dependencies

чтобы заморозить их в каталоге поставщиков.

Во время выполнения, однако, задача gems загружать свои зависимости, и обычно это делают гемы, поэтому должен работать config.gem 'primary'.

2 голосов
/ 22 июня 2009

Нет, вы этого не делаете или, по крайней мере, не должны. Каждая спецификация GEM должна включать собственный список зависимостей. Когда основной гем установлен, RubyGems автоматически установит каждую зависимость гемов от каскада.

Другими словами, если A требует B, который требует C + D, вам нужно только написать

config.gem 'A'

При выполнении команды

gem install A

запущено, RubyGems разрешит все зависимости и установит их. Вы можете просмотреть все работающие зависимости A (из проекта Rails)

rake gems

Иногда автор GEM может забыть включить некоторые зависимости GEM в спецификацию. В этом случае вы должны указать их в вашем environment.rb, чтобы приложение установило их. Конечно, это также хорошая идея, чтобы связаться с сопровождающим GEM, чтобы он мог решить проблему.

...