【问题标题】:Is there a utility for converting RVM default.gems files to Bundler Gemfiles?是否有将 RVM default.gems 文件转换为 Bundler Gemfiles 的实用程序?
【发布时间】:2011-03-22 18:51:20
【问题描述】:

如果我正在设置一个使用 Bundler 的项目,并且我已经有一个用于该项目的 RVM gemset,有没有一种简单的方法可以将 gemset 列表导出到 Gemfile(或者,就此而言,将 @ 987654322@ 文件转换为Gemfile 格式)?还是我们都只是寻找和替换?

【问题讨论】:

    标签: rubygems rvm bundler


    【解决方案1】:

    我想为一个旧的 Rails 项目生成一个 Gemfile,我编写了这个小脚本来帮助我。

    #!/usr/bin/env ruby
    #Save in file to_gemfile.rb
    gem_file = File.open("Gemfile", "w")
    gem_file.write("source :rubygems\n")
      STDIN.readlines.each do |line|
        line = line.chomp
        line =~ /(.*)\s\((.*)\)/
        gem_name = $1
        versions = $2.split(",")
        gem_file.write("gem \"#{gem_name}\", \"#{versions.first}\"\n")
      end
    gem_file.close
    

    像这样使用它

    $ gem list | ./to_gemfile.rb
    

    【讨论】:

    • 嘿,这和我想要的很接近!唯一缺少的链接是这确实需要已安装 gem(也就是说,我需要在生成 Gemfile 之前导入 gemset)但这可能可以通过调整脚本以读取 default.gems 来管理文件而不是 gem list 的管道输出。
    • 我不确定 default.gems 格式的外观如何,但如果它接近 gem 列表生成的格式,您可以这样做 ./to_gemfile.rb < default.gems
    • @user420504 类似于gem install ...,但去掉了gem install ,因此您可以在此处指定--version-v,如果需要,还可以指定其他编译标志
    【解决方案2】:

    rvm 中有一个命令:

    rvm gemset export Gemfile
    

    它将生成 Gemfile 以及 gemset 中的所有宝石。

    【讨论】:

      【解决方案3】:

      运行“捆绑安装”!

      它将使用在命令行上安装在 RVM 下的 gem(如果它们已经安装)

      检查 Bundler 上的 Ryan Bates RailsCast:http://railscasts.com/episodes/201-bundler

      【讨论】:

      • 如果 gems 已经安装好了,我为什么需要bundle install?我希望的是Gemfile,我可以签入到 SCM,以便我的团队的其他成员也能得到更改,就像我们对default.gems 所做的那样。也许我需要bundle install,然后导出到Gemfile
      • “捆绑安装”通过生成 Gemfile.lock 文件来封装并冻结您的 gem——因此您不会意外混合不需要的版本。在此处查看更多信息:gembundler.com,例如“了解捆绑器”选项卡
      • 我试了一下。如果我还没有Gemfilebundle install 会返回一个错误(“找不到 Gemfile”)。如果我有一个空白,bundle install 不会创建它。我希望找到一条从没有Gemfile 而是特定于项目的RVM gemset 到拥有反映该RVM gemset 的GemfileGemfile.lock 的路径,而无需在Gemfile 中再次手动列出gem。
      • :) 版本列在.rvmrc 文件中,这正是我希望有一个实用程序可以从另一个文件生成一个文件的原因。
      • 不,这不是您使用 Bundler 的方式...您需要在 Gemfile 中指定您认为哪些版本对您的应用程序是稳定的。您的 ~/.rvm/ 目录可能包含每个 gem 的多个不同版本。检查 Bundler 上的 RailsCast:railscasts.com/episodes/201-bundler
      【解决方案4】:

      看起来rails_upgrade 插件通过其rake rails:upgrade:gems 任务提供了此功能。它对这个 rake 任务的描述是:

      从你的 config.gem 指令生成一个 Gemfile

      【讨论】:

        猜你喜欢
        • 2021-08-05
        • 1970-01-01
        • 2011-03-15
        • 2014-02-07
        • 1970-01-01
        • 2010-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多