首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RVM Gemset Bundler & Capistrano投入生产

RVM Gemset Bundler & Capistrano投入生产
EN

Stack Overflow用户
提问于 2011-10-03 03:47:01
回答 1查看 6.6K关注 0票数 20

我正在使用capistrano、bundler和rvm将rails应用程序部署到VPS。这是我的deploy.rb的一部分

代码语言:javascript
复制
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require "rvm/capistrano"     
require "bundler/capistrano"             # Load RVM's capistrano plugin.

set :rvm_type, :system
set :rvm_ruby_string, '1.9.2@gemset_name'

我的.rvmrc

代码语言:javascript
复制
rvm --create use 1.9.2@gemset_name

当我登录到服务器时,我注意到创建了rvm gemset,但是所有的gem都安装在/shared/bundle/ruby/1.9.1/gems中--而不是gemset(/usr/local/rvm/gemset)中。

我在开发中使用RVM,我认为它很棒,但是什么时候是部署到生产环境中的时候。最佳实践是什么?有没有办法告诉bundler在gem集中安装gem?

我甚至还需要一个宝石吗?(似乎bundler已经隔离了gemsets),我是不是遗漏了什么?

请帮我理解一下!

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2011-10-28 21:59:03

我在开发和生产中也使用RVM。然而,虽然我在开发中使用gemsets来分离我的rails项目之间的gem,但我只使用RVM在我的生产VPS上安装rubies,并让Bundler处理我的gem的版本。

通过require "bundler/capistrano"使用bundler集成会自动为bundler设置一些内容。您可以在Bundlers Github page中看到这背后的代码。基本设置是为了使捆绑包执行以下命令:

代码语言:javascript
复制
bundle install --gemfile Gemfile --path shared/bundle --deployment --quiet --without development test

正如您所看到的,给定了--deployment--path标志,这告诉Bundler将gem与shared/bundle目录中的应用程序捆绑在一起,并且只使用Gemfile.lock中指定的版本(即正在开发中的版本)。由于捆绑包目录是在不同部署之间共享的,因此我发现它可以与为每个应用程序使用RVM gemsets相媲美,只是更简单。

如果你仍然想把gem放在不同的gem中,我建议你进一步阅读this tutorial from Darcy Laycock

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7628763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档