使用Capistrano(RoR App)部署到RVM环境

时间:2013-07-08 06:30:26

标签: ruby-on-rails ruby deployment rvm capistrano

我一直在寻找我的问题的答案,但我找不到有效的解决方案...所以这是我在stackoverflow上的第一篇文章!

前段时间我用RVM设置了一个apache服务器,以便托管我客户的一个网站。到那时,我的开发环境也通过rvm安装了ruby。同时,我改变了我的开发环境,现在开始使用VM VirtualBox和Ubuntu,并使用apt-get install ruby直接从源代码安装ruby。我用Capistrano来部署我的所有项目。

现在我已经在该项目上做了一些工作,但是当我尝试将其部署到生产服务器时,我收到了这个错误:

2013-07-08 08:12:50 executing `bundle:install'
* executing "cd /var/www/project/releases/20130708061242 && bundle install --gemfile /var/www/project/releases/20130708061242/Gemfile --path /var/www/project/shared/bundle --deployment --quiet --without development test"
    servers: ["xxx.xx.xxx.xxx"]
    [xxx.xx.xxx.xxx] executing command
*** [err :: xxx.xx.xxx.xxx] tput:
*** [err :: xxx.xx.xxx.xxx] No value for $TERM and no -T specified
*** [err :: xxx.xx.xxx.xxx] 
*** [err :: xxx.xx.xxx.xxx] tput:
*** [err :: xxx.xx.xxx.xxx] No value for $TERM and no -T specified
*** [err :: xxx.xx.xxx.xxx] 
 ** [out :: xxx.xx.xxx.xxx] ERROR: Gem bundler is not installed, run `gem install bundler` first.
    command finished in 818ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/www/project/releases/20130708061242; true"
    servers: ["xxx.xx.xxx.xxx"]
    [xxx.xx.xxx.xxx] executing command
    command finished in 693ms
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'default' -c 'cd /var/www/project/releases/20130708061242 && bundle install --gemfile /var/www/project/releases/20130708061242/Gemfile --path /var/www/project/shared/bundle --deployment --quiet --without development test'" on xxx.xx.xxx.xxx

我也有自己的测试服务器,在部署这个服务器时(我有rbenv)没有问题。

服务器端内容是我知识最少的领域:)如果我能提供您可能需要的任何其他信息,请告诉我。

谢谢!

修改

这是我的deploy.rb

require "bundler/capistrano"
require "rvm/capistrano"

server "xxx.xx.xxx.xxx", :app, :web, :db, :primary => true

set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"")
set :rvm_install_ruby_params, '--1.9'      # for jruby/rbx default to 1.9 mode
set :rvm_install_pkgs, %w[libyaml openssl] # package list from https://rvm.io/packages
set :rvm_install_ruby_params, '--with-opt-dir=/usr/local/rvm/usr' # package support

before 'deploy:setup', 'rvm:install_rvm'   # install RVM
before 'deploy:setup', 'rvm:install_pkgs'  # install RVM packages before Ruby
before 'deploy:setup', 'rvm:install_ruby'  # install Ruby and create gemset, or:
before 'deploy:setup', 'rvm:create_gemset' # only create gemset
before 'deploy:setup', 'rvm:import_gemset' # import gemset from file

#General settings
set :ssh_options, { :forward_agent => true }
set :application, "project"
set :repository,  "git@repo.com:project.git"
set :deploy_to, "/var/www/#{application}"
set :deploy_via, :remote_cache

set :scm, :git
set :scm_user, "deploy"
set :user, :deploy
set :use_sudo, false
set :keep_releases, 5

after "deploy:update_code", "deploy:migrate"
load "deploy/assets"

1 个答案:

答案 0 :(得分:2)

deploy.rb的顶部更改为:

require "bundler/capistrano"
require "rvm/capistrano"

server "xxx.xx.xxx.xxx", :app, :web, :db, :primary => true

set :rvm_ruby_string, :local

before 'deploy:setup', 'rvm:install_rvm'   # install RVM
before 'deploy:setup', 'rvm:install_ruby'  # install Ruby and create gemset

#General settings