【发布时间】:2011-03-22 18:51:20
【问题描述】:
如果我正在设置一个使用 Bundler 的项目,并且我已经有一个用于该项目的 RVM gemset,有没有一种简单的方法可以将 gemset 列表导出到 Gemfile(或者,就此而言,将 @ 987654322@ 文件转换为Gemfile 格式)?还是我们都只是寻找和替换?
【问题讨论】:
如果我正在设置一个使用 Bundler 的项目,并且我已经有一个用于该项目的 RVM gemset,有没有一种简单的方法可以将 gemset 列表导出到 Gemfile(或者,就此而言,将 @ 987654322@ 文件转换为Gemfile 格式)?还是我们都只是寻找和替换?
【问题讨论】:
我想为一个旧的 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
【讨论】:
Gemfile 之前导入 gemset)但这可能可以通过调整脚本以读取 default.gems 来管理文件而不是 gem list 的管道输出。
./to_gemfile.rb < default.gems
gem install ...,但去掉了gem install ,因此您可以在此处指定--version 或-v,如果需要,还可以指定其他编译标志
rvm 中有一个命令:
rvm gemset export Gemfile
它将生成 Gemfile 以及 gemset 中的所有宝石。
【讨论】:
运行“捆绑安装”!
它将使用在命令行上安装在 RVM 下的 gem(如果它们已经安装)
检查 Bundler 上的 Ryan Bates RailsCast:http://railscasts.com/episodes/201-bundler
【讨论】:
bundle install?我希望的是Gemfile,我可以签入到 SCM,以便我的团队的其他成员也能得到更改,就像我们对default.gems 所做的那样。也许我需要bundle install,然后导出到Gemfile?
Gemfile,bundle install 会返回一个错误(“找不到 Gemfile”)。如果我有一个空白,bundle install 不会创建它。我希望找到一条从没有Gemfile 而是特定于项目的RVM gemset 到拥有反映该RVM gemset 的Gemfile 和Gemfile.lock 的路径,而无需在Gemfile 中再次手动列出gem。
.rvmrc 文件中,这正是我希望有一个实用程序可以从另一个文件生成一个文件的原因。
看起来rails_upgrade 插件通过其rake rails:upgrade:gems 任务提供了此功能。它对这个 rake 任务的描述是:
从你的 config.gem 指令生成一个 Gemfile
【讨论】: