【问题标题】: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 或 ruby​​gems 来运行所有的 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')) }"
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-19
        • 1970-01-01
        • 2016-01-17
        • 1970-01-01
        • 2015-07-20
        • 2015-06-18
        相关资源
        最近更新 更多