Rubygems 是否有将RVM default.gems文件转换为绑定器gems文件的实用程序?

Rubygems 是否有将RVM default.gems文件转换为绑定器gems文件的实用程序?,rubygems,rvm,bundler,Rubygems,Rvm,Bundler,如果我正在设置一个使用Bundler的项目,并且我已经为该项目准备了一个RVM gemset,那么有没有一种简单的方法可以将gemset列表导出到Gemfile(或者,就此而言,将default.gems文件转换为Gemfile格式)?还是我们都只是找到并替换?运行“捆绑安装” 它将使用命令行上RVM下安装的gems(如果已经安装) 查看Bundler上的Ryan Bates RailsCast:我想为一个旧rails项目生成一个Gemfile,我编写了这个小脚本来帮助我 #!/usr/bin/

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

运行“捆绑安装”

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


查看Bundler上的Ryan Bates RailsCast:

我想为一个旧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
该插件似乎通过其
rake-rails:upgrade:gems
任务提供了此功能。它对这个rake任务的描述是它将:

从config.gem指令生成一个Gemfile


rvm中有一个命令用于:

rvm gemset export Gemfile

它将生成包含gemset中所有gems的
Gemfile

如果gems已经安装,为什么我需要
捆绑安装
?我希望的是一个
Gemfile
我可以签入SCM,这样我的团队的其他成员也可以得到更改,就像我们使用
default.gems所做的那样。也许我需要
bundle安装
,然后导出到
Gemfile
?bundle安装通过生成Gemfile.lock文件包装并冻结您的gems,这样您就不会意外地混合不需要的版本。。在此处查看更多信息:,例如,“了解捆绑包”选项卡对此进行了尝试。如果我还没有
Gemfile
bundle安装
返回一个错误(“找不到Gemfile”)。如果我有一个空的,
bundle install
不会创建它。我希望找到的是一条路径,从没有
Gemfile
而是一个特定于项目的RVM gemset,到有一个
Gemfile
Gemfile.lock
,它反映了RVM gemset,而无需在
Gemfile
中再次手动列出gems:)版本列在
.rvmrc
文件中,这就是为什么我希望有一个实用程序可以从另一个文件生成一个文件。不,这不是你使用Bundler的方式。。。您需要在Gemfile中指定您认为应用程序稳定的版本。您的~/.rvm/目录可能包含每个gem的多个不同版本。检查一下Bundler上的RailsCast:嘿,这和我想要的非常接近!唯一缺少的链接是,这确实需要已经安装gems(也就是说,我需要在生成
Gemfile
之前导入gems)但这可能是通过调整脚本来读取default.gems文件而不是
gem list
的管道输出来实现的。我不确定default.gems格式是什么样子,但如果它接近gem list生成的格式,您可以执行
/to_gemfile.rb
@user420504这就像
gem安装…
但是使用剥离的
gem安装
,因此您可以在那里指定
--version
-v
以及其他编译标志(如果需要)