ruby - 从 Gemfile 中找出哪些 gems 需要 native c 扩展?

标签 ruby gem jruby bundler torquebox

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

有没有一种方法可以调用 bundler 或 ruby​​gems 来遍历所有 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/

相关文章:

ruby - 为什么带有 splat 参数的 Ruby 过程/ block 的行为与方法和 lambda 不同?

ruby - 使用 RVM 的 Hadoop Streaming 找不到 Gem

ruby - 无法使用 rackup 和 jRuby 启动简单的 Sinatra 应用程序(网络服务器无响应)

ruby-on-rails - 创建一个像 Devise 的 current_user 一样的方法以在任何地方使用

ruby - 在 Ruby 中,使用 "def initialize ( value = ' ') 初始化类实例有什么好处?

ruby - Figaro - Rails 缺少用于开发的 secret_key_base

ruby-on-rails - 如何在 ubuntu 系统上安装 gruff、rmagic gem?

java - JRuby GUI 窗口

java - 形式论证不能是常量 def

ruby - 使用 activerecord API 将图像上传到 Postgres 数据库时出现问题