10

我最近才开始将注意力转移到在上面部署 Ruby 应用程序上TorqueBox,这当然是在 Jruby 上构建的。到目前为止,我基本上一直在执行 a bundle install,然后在通往 jrubydom 的过程中处理每个 gem,但是我遇到了几个 gem,由于需要重新实现其中的大部分,我花了相当长的时间来解决它们。

有没有办法调用 bundler 或 ruby​​gems 来运行所有 gem 和它们的 dep 来测试它们是否需要本机 c 扩展,然后返回这样的列表?处理一些较小的项目肯定会很好,甚至知道是否值得处理将项目移至 jruby 的项目。

4

2 回答 2

12

基于具有本机扩展的 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')) }"
于 2015-09-14T14:45:08.460 回答
5

您可以为此使用JRuby Lint。它将检查一些需要 C 扩展甚至列出替代的 gem(基于此列表)。

于 2014-06-19T17:59:05.457 回答