加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Capistrano:Bundler不使用rvm gemset

发布时间:2020-12-17 04:04:42 所属栏目:百科 来源:网络整理
导读:我有一个 Ruby on Rails 3.2应用程序,使用bundler和capistrano进行部署.我的服务器是带有rvm和ruby 1.9.2的Debian Squeeze.我读了capistrano(http://beginrescueend.com/integration/capistrano/)的rvm东西,你可以在其中设置gemset:rvm_ruby_string,’1.9.2
我有一个 Ruby on Rails 3.2应用程序,使用bundler和capistrano进行部署.我的服务器是带有rvm和ruby 1.9.2的Debian Squeeze.我读了capistrano(http://beginrescueend.com/integration/capistrano/)的rvm东西,你可以在其中设置gemset:rvm_ruby_string,’1.9.2 @ my_gemset’.

但在部署期间,bundler会将每个gem写入/ var / www / my_app / shared / bundle.我想如果我用@符号定义rvm_ruby_string,bundler会使用gemset.

部署的输出说

* executing "cd /var/www/my_app/releases/20120216145728 && bundle install --gemfile /var/www/my_app/releases/20120216145728/Gemfile --path /var/www/my_app/shared/bundle --deployment --quiet --without development test"

我可以在哪里更改–path / var / www / …以使用rvm中的1.9.2@my_gemset gemset?

也许吧,因为我正在使用几个环境进行部署(登台,制作……).所以这是我的deploy.rb

# RVM bootstrap
$:.unshift(File.expand_path('./lib',ENV['rvm_path']))
require 'capistrano/ext/multistage'
require 'bundler/capistrano'
require 'rvm/capistrano'

set :rvm_bin_path,"/usr/local/rvm/bin"
set :rvm_type,:system

set :stages,%w(production staging)
set :default_stage,"staging"

set :application,"my_app"
set :repository,"gitosis@mydomain.org:my_app.git"

set :scm,:git

set :user,"my_deploy_user"

set :use_sudo,false

set :ssh_options,{ :forward_agent => true }

default_run_options[:pty] = true

namespace :deploy do
  task :start do
  end
  task :stop do
  end
  task :restart,:roles => :app,:except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end

在config / deploy / staging.rb中

set :rails_env,"staging"
set :rvm_ruby_string,'1.9.2@my_gemset'
set :deploy_to,"/var/www/my_app"

role :web,"stage.mydomain.de"                          # Your HTTP server,Apache/etc
role :app,"stage.mydomain.de"                          # This may be the same as your `Web` server
role :db,"stage.mydomain.de",:primary => true # This is where Rails migrations will run

也许有人可以帮助我.

解决方法

你们都在使用bundler和rvm集成. Rvm将确保它使用正确的ruby(便于管理rubies),bundler会将所有gem分成shared / bundle目录.这是生产的捆绑包默认设置.我相信这是一个很好的方式来设置它,也因为它适用于开箱即用的乘客,从每个应用程序中分离宝石,并有rvm处理ruby.

如果你真的想使用RVM进行宝石分离,你最好从达西开始this blogpost(这适用于乘客).正如您所看到的,在完成这项工作时需要付出一些努力,但这是可能的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读