【问题标题】:Deploying with RVM on Linode Ubuntu 10.4 Does not install RVM在 Linode Ubuntu 10.4 上使用 RVM 部署不安装 RVM
【发布时间】:2013-06-08 19:33:37
【问题描述】:

我正在尝试使用 Capistrano 和 RVM 进行部署,即使在运行应该安装捆绑程序的 cap bundler:install_bundler 时也成功了。之后,当运行cap deploy 时,它会失败并显示未安装捆绑程序的错误。

** [out :: victorstan.com] ERROR: Gem bundler is not installed, run `gem install bundler` first.

任何想法为什么它安装捆绑器,但找不到它,或者将它安装在错误的位置(我猜?)。谢谢!

这是我的 deploy.rb 脚本的一部分:

set :application,       "dinner"
set :domain,            "victorstan.com"
set :repository,        "ssh://#{domain}/~/#{application}.git"
set :use_sudo,          false
set :user,              "victorstan"  # The server's user for deploys
set :scm,               :git
set :scm_username,      "passenger"
set :deploy_to,         "/srv/www/#{application}"
set :keep_releases,     2
set :branch,            "master"
set :deploy_via,        :copy # won't make cap prompt for password when deploying
set :scm_verbose,       true
set :rvm_ruby_string,   'ruby-2.0.0-p195@dinner'
set :rvm_type,          :user
set :rvm_install_type,  :stable
set :whenever_command,  "bundle exec whenever"


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

如果我尝试使用 cap 来安装 bundler,它可以工作:

cap bundler:install_bundler
  * 2013-06-08 15:33:54 executing `bundler:install_bundler'
  * executing "gem install bundler"
    servers: ["victorstan.com"]
    [victorstan.com] executing command
 ** [out :: victorstan.com] Successfully installed bundler-1.3.5
 ** [out :: victorstan.com] 1 gem installed
    command finished in 1373ms

这是运行cap deploy时的输出:

Switched to a new branch 'deploy'
    command finished in 984ms
  * Compressing /var/folders/w4/_6g_9lqd491_6cmhzb0kcmzh0000gn/T/20130608192600 to /var/folders/w4/_6g_9lqd491_6cmhzb0kcmzh0000gn/T/20130608192600.tar.gz
    executing locally: tar czf 20130608192600.tar.gz 20130608192600
    command finished in 53ms
    servers: ["victorstan.com"]
 ** sftp upload /var/folders/w4/_6g_9lqd491_6cmhzb0kcmzh0000gn/T/20130608192600.tar.gz -> /tmp/20130608192600.tar.gz
    [victorstan.com] /tmp/20130608192600.tar.gz
    [victorstan.com] done
  * sftp upload complete
  * executing "cd /srv/www/dinner/releases && tar xzf /tmp/20130608192600.tar.gz && rm /tmp/20130608192600.tar.gz"
    servers: ["victorstan.com"]
    [victorstan.com] executing command
    command finished in 467ms
  * 2013-06-08 15:26:05 executing `deploy:finalize_update'
    triggering before callbacks for `deploy:finalize_update'
  * 2013-06-08 15:26:05 executing `bundle:install'
  * executing "cd /srv/www/dinner/releases/20130608192600 && bundle install --gemfile /srv/www/dinner/releases/20130608192600/Gemfile --path /srv/www/dinner/shared/bundle --deployment --quiet --without development test"
    servers: ["victorstan.com"]
    [victorstan.com] executing command
 ** [out :: victorstan.com] ERROR: Gem bundler is not installed, run `gem install bundler` first.
    command finished in 598ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /srv/www/dinner/releases/20130608192600; true"
    servers: ["victorstan.com"]
    [victorstan.com] executing command
    command finished in 513ms
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'ruby-2.0.0-p195@dinner' -c 'cd /srv/www/dinner/releases/20130608192600 && bundle install --gemfile /srv/www/dinner/releases/20130608192600/Gemfile --path /srv/www/dinner/shared/bundle --deployment --quiet --without development test'" on victorstan.com

【问题讨论】:

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


    【解决方案1】:

    ruby-2.0.0-p195@dinner 是否已在服务器上安装/创建?

    您可以通过添加来确保它是:

    before 'deploy:setup', 'rvm:install_ruby'
    

    更多关于使用rvm-capistrano的细节可以在这里找到:https://github.com/wayneeseguin/rvm-capistrano#readme

    【讨论】:

    • 嗨,谢谢,是的,它已安装,我的部署脚本中有 before 'deploy:setup', 'rvm:install_ruby'set...
    • 那么请发布整个部署脚本,可能有一些相关的东西会改变它的运行方式。
    【解决方案2】:

    我已经阅读了更多关于设置部署脚本的示例,并且我重新安排了部署脚本的元素顺序以及 ena

    set :application,       "dinner"
    set :domain,            "victorstan.com"
    set :repository,        "ssh://#{domain}/~/#{application}.git"
    set :use_sudo,          false
    set :user,              "victorstan"  # The server's user for deploys
    set :scm,               :git
    set :scm_username,      "passenger"
    set :scm_passphrase,    "*********"  # The deploy user's password
    set :deploy_to,         "/srv/www/#{application}"
    set :keep_releases,     2
    set :branch,            "master"
    set :deploy_via,        :copy # won't make cap prompt for password when deploying
    set :scm_verbose,       true
    set :rvm_ruby_string,   :local
    set :rvm_type,          :user
    set :rvm_install_type,  :stable
    set :default_shell,     :bash
    set :whenever_command,  "bundle exec whenever"
    
    default_run_options[:pty] = true
    
    # before 'deploy', 'rvm:install_ruby'
    before 'deploy:setup', 'rvm:install_ruby'
    
    require "rvm/capistrano"
    require "bundler/capistrano"
    require "whenever/capistrano"
    
    role :web, domain                          # Your HTTP server, Apache/etc
    role :app, domain                          # This may be the same as your `Web` server
    role :db,  domain, :primary => true # This is where Rails migrations will run
    

    一些值得注意的变化:

    set :rvm_ruby_string 设置为:local 而不是明确命名它:'ruby-2.0.0-p195@dinner',但不确定这是否对问题有任何影响,似乎不太可能。

    set :default_shell, :bash 是我添加的另一个参数。

    而且,正如我所提到的,排序或不同的 DSL 类型可能会有所不同:set 首先出现,然后是 before 挂钩,然后是 require,然后是 role,然后是其余的部署脚本。也许这可以帮助处于类似情况的人。

    注意,当我第一次测试这个脚本时,我启用了before 'deploy', 'rvm:install_ruby',但我已经禁用它并且脚本继续工作......

    【讨论】:

      猜你喜欢
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 2012-02-10
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多