【问题标题】:Deploying to RVM-enviroment with Capistrano (RoR App)使用 Capistrano(RoR 应用程序)部署到 RVM 环境
【发布时间】:2013-07-08 06:30:26
【问题描述】:

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

不久前,我使用 RVM 设置了一个 apache 服务器,以便托管我客户的一个网站。到那时,我的开发环境也已经通过 rvm 安装了 ruby​​。同时,我改变了我的开发环境,现在开始在 Ubuntu 上使用 VM VirtualBox,并使用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"

【问题讨论】:

  • 您可以发布您的deploy.rb 文件吗?
  • 好的,刚刚加在上面
  • 您的权限可能有问题。看看[这个讨论]:(github.com/nadarei/mina/issues/5#issuecomment-6995487)。
  • 问题是我的开发环境中不再有 rvm。可以安装在我目前拥有的之上吗?
  • ruby -v 现在的输出是什么?我建议尝试从源代码安装 Ruby,这是一个很好的体验。

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


【解决方案1】:

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

【讨论】:

  • 当我尝试限制部署 ./config/deploy.rb:14:in load' 时出现以下错误:未定义方法 gsub' for nil:NilClass (NoMethodError) 第 14 行是 set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"")
  • GEM_HOME 技巧更新为 :local - 这将导致异常 Failed to get ruby version from GEM_HOME. Please make sure rvm is loaded! - 这意味着您需要在本地选择一个 ruby​​ 才能将其用于远程:rvm use ruby,如果您不想在本地使用 rvm,那么只需将其更改为 set :rvm_ruby_string, "1.9.3" - 或任何其他应远程使用的 ruby​​。
  • 哇!就这么简单!非常感谢mpapis!我希望 rvm capistrano 的文档能更清楚地说明这一点(有关将 rvm_ruby_string 设置为 :local 或实际 ruby​​ 版本的详细信息)..非常感谢! - 对于那些想知道什么最终起作用的人::rvm_ruby_string, "1.9.3" 成功了,因为我不再在本地使用 rvm
  • 文档已经更新,如果文档可以改进,请为gem开票(请务必在报告前检查最新版本)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多