在this question中,给出了分析Bundler依赖列表的答案。这很好用,但由于“> =”依赖关系,它没有提供实际使用的包和版本列表。有没有办法获得实际使用的包和版本列表,而不仅仅是依赖项是什么?
答案 0 :(得分:2)
此代码是从Bundler代码库中提取的,与Rails控制台中的bundle list
完全相同。
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})"}
答案 1 :(得分:1)
看起来这样做的方式类似于其他问题中发布的内容:
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>]}
此代码将打印出当前环境中使用的所有gem和版本。关于其他问题的答案有一点需要注意的是,它将返回所有依赖项,即使那些不在当前rails环境中的依赖项(例如,那些在“test”gem分组中的那些)。 / p>