【问题标题】:Find out which gems require native c extensions from a Gemfile?从 Gemfile 中找出哪些 gem 需要原生 c 扩展?
【发布时间】:2014-08-10 08:40:55
【问题描述】:
我最近才开始将注意力转移到在 TorqueBox 上部署 Ruby 应用程序,这当然是在 Jruby 上构建的。到目前为止,我基本上一直在执行bundle install,然后在通往 jrubydom 的过程中处理每个宝石,但我遇到了一些宝石,由于需要重新实现它们的大部分,我花了相当长的时间来解决它们。
有没有办法调用 bundler 或 rubygems 来运行所有的 gem 和它们的 dep 来测试它们是否需要原生 c 扩展,然后返回这样的列表?处理一些较小的项目当然会很好,甚至知道是否值得处理将项目移至 jruby 的项目。
【问题讨论】:
标签:
ruby
gem
jruby
bundler
torquebox
【解决方案1】:
基于具有原生扩展的 gem 通常有一个 /ext 目录这一事实,我制作了一个简单的 oneliner 来查找这些 gem:
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')) }"