找出Gemfile中哪些gems需要本机c扩展?

yll*_*ate 8 ruby gem jruby bundler torquebox

我最近刚开始将注意力转移到部署Ruby应用程序上面TorqueBox,当然这些应用程序是在Jruby上面构建的.到目前为止,我基本上已经执行了一次bundle install,然后在前往jrubydom的途中处理每个宝石,但是由于需要重新实现其中的大部分,我已经花了几个宝石花了我相当长的时间来解决.

有没有办法调用bundler或rubygems来运行所有gems及其deps来测试它们是否需要本机c扩展然后返回这样的列表?确定解决一些较小的项目肯定会很好,甚至知道在将项目转移到jruby方面是否值得解决一个项目.

小智 8

基于具有本机扩展的gem通常具有/ ext目录的事实,我做了一个简单的oneliner来找到这些gem:

puts `bundle show --paths`.split("\n").select{|dep| File.directory?("#{dep}/ext") }.map{|dep| dep.split('/').last }.join(', ')
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令在命令行上执行此操作:

$ bundle show --paths | ruby -e "STDIN.each_line {|dep| puts dep.split('/').last if File.directory?(File.join(dep.chomp, 'ext')) }"
Run Code Online (Sandbox Code Playgroud)


Mar*_*tin 5

你可以使用JRuby Lint.它将检查一些需要C扩展甚至列表替代的宝石(基于此列表).