我最近才开始将注意力转移到TorqueBox
上面部署Ruby应用程序,这当然是在Jruby上面构建的。到目前为止,我基本上已经执行了bundle install
,然后在前往jrubydom的途中处理每个宝石,但我已经打了几个宝石,由于需要重新实现大部分他们。
有没有办法调用bundler或rubygems来运行所有gems及其deps来测试它们是否需要本机c扩展然后返回这样的列表?一定要很好地处理一些较小的项目,甚至知道在将项目转移到jruby方面是否值得解决一个项目。
答案 0 :(得分:8)
基于具有原生扩展名的宝石通常具有/ ext目录的事实,我做了一个简单的oneliner来找到这些宝石:
puts `bundle show --paths`.split("\n").select{|dep| File.directory?("#{dep}/ext") }.map{|dep| dep.split('/').last }.join(', ')
您可以使用以下命令在命令行执行此操作:
$ bundle show --paths | ruby -e "STDIN.each_line {|dep| puts dep.split('/').last if File.directory?(File.join(dep.chomp, 'ext')) }"
答案 1 :(得分:5)
您可以使用JRuby Lint。它将检查一些需要C扩展甚至列表替代的宝石(基于this list)。