0

ここで、この展開のひばりに関する限り、私は暗闇の中で少しつまずいていることを認めなければなりません。できる限り状況を説明します。テスト展開サーバーをセットアップし、capistrano を使用してアプリを展開しようとしていますが、靴の下のエラーのように、gem とその依存関係に関していくつかの問題が発生しています。

[mike-test] executing command
[mike-test] rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3' -c 'cd /home/deploy/myapp/releases/20120910081544 && bundle install --gemfile /home/deploy/myapp/releases/20120910081544/Gemfile --path /home/depoy/myapp/shared/bundle --deployment --quiet --without development test'
 ** [out :: mike-test] Some gems seem to be missing from your vendor/cache directory.
 ** [out :: mike-test] Could not find log4r-1.1.10 in any of the sources
command finished in 9134ms
*** [deploy:update_code] rolling back

log4r私のgemfileにないので、別のgemの(おそらく本番のみ?)依存関係であるとしか思えません。bundler が gem をダウンロードせず、見つからない場合にインストールしないのはなぜですか? 私はgemfileにgemを入れ、bundle installをローカルで実行し、再度コミットしてデプロイし、同じエラーが発生しましたが、今回は別のgem(スプレッドシート)を使用していたため、その場合にのみエラーを解決するように見えましたが、そうではありません.問題を特定する。

水を濁らせる何か他のもの、私は本番サーバーでRVMを使用しようとしています.

私のdeploy.rb

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

# SCM Settings
set :rvm_ruby_string, '1.9.3' 
set :use_sudo, false

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

set :branch, :mikedev
set :deploy_via, :remote_cache
set :copy_cache, true
set :git_enable_submodules, 0
set :repository, "our_git_repo.git"
set :scm, :git
set :user, :deploy
set :keep_releases, 1

set :application, "myapp"
set :deploy_to, "/home/deploy/myapp"
set :branch, "mikedev"

role :web, "mike-test"                          
role :app, "mike-test"                          
role :db,  "mike-test", :primary => true      

namespace :deploy do

  desc "Restarting mod_rails with restart.txt"
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "touch #{current_path}/tmp/restart.txt"
  end

  [:start, :stop].each do |t|
    desc "#{t} task is a no-op with mod_rails"
    task t, :roles => :app do ; end
  end

end

どんなガイダンスでも大歓迎です。

4

1 に答える 1

2

bundle install --deployment ...が存在する場合、gem はダウンロードされませんvendor/cache。ちょうどそこにある宝石を探します。次の 2 つのオプションがあります。

  • VCSからディレクトリを削除vendor/cacheします(すでに空であっても)
  • または、VCSbundle packageの下にあるすべての新しいファイルを実行して追加しますvendor/cache

後者はより良い選択肢のようです。このようにして、デプロイを ruby​​gems サーバーの停止から保護します。

于 2012-09-10T13:57:01.827 に答える