Программно получить версии гемов от Bundler - PullRequest
1 голос
/ 09 марта 2012

В на этот вопрос был дан ответ для анализа списка зависимостей Bundler.Это прекрасно работает, но не дает вам список пакетов и версий, которые фактически используются, из-за зависимостей "> =".Есть ли способ получить список фактически используемых пакетов и версий, а не только каковы зависимости?

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

Похоже, способ сделать это похож на тот, что был опубликован в другом вопросе:

 Rails.logger.debug "Type is " + Bundler.environment.specs.class.to_s
 Rails.logger.debug "Value is " + Bundler.environment.specs.to_hash.to_s

Производит:

    Type is Bundler::SpecSet
    Value is {"activemodel"=>[#<Gem::Specification name=activemodel version=3.1.3>],
              "actionpack"=>[#<Gem::Specification name=actionpack version=3.1.3>],
              "actionmailer"=>[#<Gem::Specification name=actionmailer version=3.1.3>]}

Этот код распечатает все драгоценные камнии версии, используемые в вашей текущей среде.В ответе на этот другой вопрос следует отметить одну вещь: он вернет все зависимости, даже те, которых нет в вашей текущей среде rails (например, те, которые находятся в вашей «тестовой» группе гемов).

2 голосов
/ 09 марта 2012

Этот код был извлечен из кодовой базы Bundler и будет делать то же самое, что и bundle list из консоли Rails.

Bundler.load.specs.sort_by(&:name).each{|s| puts "  * #{s.name} (#{s.version}#{s.git_version})"}; nil

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

Bundler.load.specs.map{|s| "#{s.name} (#{s.version}#{s.git_version})"}
...