我最近才开始将注意力转移到在 TorqueBox
上部署 Ruby 应用程序,这当然是在 Jruby 上构建的。到目前为止,我基本上一直在执行 bundle install
,然后在通往 jrubydom 的过程中处理每个 gem,但我遇到了几个 gem,由于需要重新实现大型他们的一部分。
有没有一种方法可以调用 bundler 或 rubygems 来遍历所有 gem 及其 deps 以测试它们是否需要 native c 扩展,然后返回这样一个列表?处理一些更小的项目,或者甚至知道是否值得处理一个项目,将它转移到 jruby 肯定会很好。
最佳答案
基于具有原生扩展的 gems 通常有一个/ext 目录,我做了一个简单的 oneliner 来找到这些 gems:
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')) }"
关于ruby - 从 Gemfile 中找出哪些 gems 需要 native c 扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24312872/