0

本番サーバー: Ubuntu 12.04、Apache、Passenger、RVM、Ruby 2、Rails 4、Postgresql

cap deploy:cold の後にこのエラーが発生します (ユーザー名と IP を変更しました):

* 2013-03-04 12:17:56 executing `deploy:cold'
  * 2013-03-04 12:17:56 executing `deploy:update'
 ** transaction: start
  * 2013-03-04 12:17:56 executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "git ls-remote git@github.com:user/captest.git master"
    command finished in 4655ms
  * executing "if [ -d /home/user/apps/captest/shared/cached-copy ]; then cd /home/user/apps/captest/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 0ad1ab0c9e73b41959981a1415f71a42e80c0443 && git clean -q -d -x -f; else git clone -q git@github.com:user/captest.git /home/user/apps/captest/shared/cached-copy && cd /home/user/apps/captest/shared/cached-copy && git checkout -q -b deploy 0ad1ab0c9e73b41959981a1415f71a42e80c0443; fi"
    servers: ["192.33.33.333"]
    [192.33.333.333] executing command
    command finished in 5870ms
    copying the cached version to /home/user/apps/captest/releases/20130304111807
  * executing "cp -RPp /home/user/apps/captest/shared/cached-copy /home/user/apps/captest/releases/20130304111807 && (echo 0ad1ab0c9e73b41959981a1415f71a42e80c0443 > /home/user/apps/captest/releases/20130304111807/REVISION)"
    servers: ["192.33.333.333"]
    [192.33.333.333] executing command
    command finished in 122ms
  * 2013-03-04 12:18:07 executing `deploy:finalize_update'
    triggering before callbacks for `deploy:finalize_update'
  * 2013-03-04 12:18:07 executing `deploy:assets:symlink'
  * executing "rm -rf /home/user/apps/captest/releases/20130304111807/public/assets && mkdir -p /home/user/apps/captest/releases/20130304111807/public && mkdir -p /home/user/apps/captest/shared/assets && ln -s /home/user/apps/captest/shared/assets /home/user/apps/captest/releases/20130304111807/public/assets"
    servers: ["192.33.333.333"]
    ["192.33.333.333"] executing command
    command finished in 134ms
  * 2013-03-04 12:18:07 executing `bundle:install'
  * executing "cd /home/user/apps/captest/releases/20130304111807 && bundle install --gemfile /home/user/apps/captest/releases/20130304111807/Gemfile --path /home/user/apps/captest/shared/bundle --deployment --quiet --without development test"
    servers: ["192.33.333.333"]
    [192.33.333.333] executing command
 ** [out :: 192.33.333.333] sh: 1:
 ** [out :: 192.33.333.333] bundle: not found
 ** [out :: 192.33.333.333] 
    command finished in 110ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/user/apps/captest/releases/20130304111807; true"
    servers: ["192.33.333.333"]
    [192.33.333.333] executing command
    command finished in 118ms
failed: "sh -c 'cd /home/user/apps/captest/releases/20130304111807 && bundle install --gemfile /home/user/apps/captest/releases/20130304111807/Gemfile --path /home/user/apps/captest/shared/bundle --deployment --quiet --without development test'" on 192.33.333.333

私は基本的に、Railscasts のエピソード「vps への展開」の指示に従いました。これは私の deploy.rb ファイルです:

require "bundler/capistrano"


server "192.33.333.333", :web, :app, :db, primary: true

set :application, "captest"
set :user, "user"
set :deploy_to, "/home/#{user}/apps/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false

set :scm, "git"
set :repository, "git@github.com:user/#{application}.git"
set :branch, "master"

default_run_options[:pty] = true
ssh_options[:forward_agent] = true

after "deploy", "deploy:cleanup" # keep only the last 5 releases

namespace :deploy do
  task :start do; end
  task :stop do; end
  task :restart, roles: :app, except: {no_release: true} do
    run "touch #{deploy_to}/current/tmp/restart.txt"
  end

  task :setup_config, roles: :app do
    sudo "ln -nfs #{current_path}/config/apache.conf /etc/apache2/sites-available/#{application}"
    run "mkdir -p #{shared_path}/config"
    put File.read("config/database.example.yml"), "#{shared_path}/config/database.yml"
    puts "Now edit the config files in #{shared_path}."
  end
  after "deploy:setup", "deploy:setup_config"
end

サーバーから直接バンドルのインストールを試みましたが、アプリの構造が混乱しているため、どこにあるのかわかりません。「require rvm/capistrano」も試しましたが、エラーも発生しました。

4

3 に答える 3

0

ターゲット サーバーにバンドラーをインストールする必要があります。

gem install bundler

それ自体はインストールできないため、通常、この方法でインストールする必要がある唯一の gem です。

この要点はあなたのニーズに正確には適していませんが、Ruby 2.0 Ubuntu サーバーをブートストラップする方法であり、少し役立つかもしれません: https://gist.github.com/cmaitchison/4083459

于 2013-03-05T00:46:02.227 に答える
0

私は同じ問題に遭遇し、解決策を決定しました。

サーバーで、Bundler のすべてのバージョンをアンインストールします。実行可能ファイルを削除するように求められます。はいを選択します。次にgem install bundler、バージョン 1.3.2 以降をインストールする必要があります。

Gemfile で、ソースがhttpsではなくであることを確認してくださいhttpsource 'https://rubygems.org'

引用: https://github.com/carlhuda/bundler/issues/2378#issuecomment-14714639

于 2013-03-12T14:55:12.763 に答える
0

あなたはまだ本当のエラーが何であるかを見ていません。

cap deploy:cold コマンドの -v (verbose) で実際の問題がわからない場合は、サーバーに SSH 接続して次のコマンドを実行します。cd /home/user/apps/captest/releases/20130304111807 && bundle install --gemfile /home/user/apps/captest/releases/20130304111807/Gemfile --path /home/user/apps/captest/shared/bundle --deployment --quiet --without development test

Ruby 環境がサーバー上で適切に設定されていないようです。

編集:実際には、削除された場合は機能しない場合があります。同様の問題があり、プロジェクトを手動で実稼働サーバーに複製し、bundle install を実行して問題をデバッグすることで解決しました。

于 2013-03-04T21:21:16.343 に答える