2

こんにちは、ここで基本的なものが欠けていると思います。

Capistrano を使用して「統合」に展開し、次に「テスト」に展開しています。

gem を追加してから、Capistrano を使用して Web サイトの 1 つ (「テスト」) に正常にデプロイできないようです。ただし、他のもの(「統合」)に正常に展開できます。

bootstrap-sass '~> 3.0.2.0' を追加しようとしていますが、他の gem を追加しようとすると同じエラーが発生します。

「cap testing deploy」で「testing」にデプロイしようとすると、次のエラーが表示されます

whenever --update-crontab registration --set environment=testing --roles db"
    servers: ["test.calm.dhamma.org"]
    [test.calm.dhamma.org] executing command
*** [err :: test.calm.dhamma.org] /home/calm/.rvm/gems/ruby-1.9.3-p448/gems/bundler-1.3.5/lib/bundler/spec_set.rb:92:in `block in materialize'
*** [err :: test.calm.dhamma.org] :
*** [err :: test.calm.dhamma.org] Could not find bootstrap-sass-3.0.3.0 in any of the sources
*** [err :: test.calm.dhamma.org] (
*** [err :: test.calm.dhamma.org] Bundler::GemNotFound
*** [err :: test.calm.dhamma.org] )
*** [err :: test.calm.dhamma.org] from /home/calm/.rvm/gems/ruby-1.9.3-p448/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `map!'
*** [err :: test.calm.dhamma.org] from /home/calm/.rvm/gems/ruby-1.9.3-p448/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `materialize'
*** [err :: test.calm.dhamma.org] from /home/calm/.rvm/gems/ruby-1.9.3-p448/gems/bundler-1.3.5/lib/bundler/definition.rb:114:in `specs'
*** [err :: test.calm.dhamma.org] from /home/calm/.rvm/gems/ruby-1.9.3-p448/gems/bundler-1.3.5/lib/bundler/definition.rb:159:in `specs_for'
*** [err :: test.calm.dhamma.org] from /home/calm/.rvm/gems/ruby-1.9.3-p448/gems/bundler-1.3.5/lib/bundler/definition.rb:148:in `requested_specs'
etc..

私は長い間答えを探してきましたが、成功しませんでした。私は持っています

require 'bundler/capistrano'

以下に示すように、私の Capfile.rb で。

require "rvm/capistrano"

#set :rvm_type, :system    # :user is the default

set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"") # Read from local system
puts "RVM ruby string = "
puts rvm_ruby_string
#set :rvm_ruby_string, :local
#
set :rvm_autolibs_flag, "read-only"

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


require 'bundler/capistrano'

require 'capistrano/ext/multistage'
set :stages, ["integration","testing", "production"]
set :default_stage, "integration"

# use whenever gem. Only if you have chron jobs
require "whenever/capistrano"
set :whenever_command, "bundle exec whenever"

set :application, "registration"
set :repository,  "ssh://gitrepo@tools.calm.dhamma-eu.org/home/gitrepo/repositories/registration"
#set :repository,  "ssh://gitrepo@94.23.144.59/home/gitrepo/repositories/registration"

set :scm, :git
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`


set :deploy_to,       "/home/calm/wwwshare/registration"
set :user,            "calm"
set :use_sudo,        false
set :ssh_options,     { :forward_agent => true }

#set :deploy_to, "/home/calm/wwwshare/#{application}"
set :deploy_via, :remote_cache

#before "deploy:bundle_gems","deploy:symlink_vendor"
#after "deploy", "deploy:bundle_gems"
#after "deploy:bundle_gems", "assets:symlink"
#after "assets:symlink", "deploy:copy_database_configuration"
#after "deploy:copy_database_configuration", "deploy:restart"

# http://beginrescueend.com/integration/capistrano/

#set :default_environment, {
#    'PATH' => "/home/calm/.rvm/gems/ruby-1.9.3-p448/bin:/home/calm/.rvm/gems/ruby-1.9.3-p448@global/bin:/home/calm/.rvm/bin:/home/calm/.rvm/rubies/ruby-1.9.3-p448/bin:$PATH",
#    'RUBY_VERSION' => 'ruby-1.9.3-p448',
#    'GEM_HOME'     => '/home/calm/.rvm/gems/ruby-1.9.3-p448',
#    'GEM_PATH'     => '/home/calm/.rvm/gems/ruby-1.9.3-p448:/home/calm/.rvm/gems/ruby-1.9.3-p448@global',
#    'BUNDLE_PATH'  => '/home/calm/.rvm/gems/ruby-1.9.3-p448'  # If you are using bundler.
#}

#task :testing do
#  server 'THE-SERVER.mudbugmedia.com', :web, :app, :db, :primary => true
#  set :deploy_to, '/home/calm/wwwshare/#{application}'
#  set :rails_env, 'testing'
#  set :branch,    'master'
#end

after 'deploy:setup', :create_configs
desc 'Create the shared/config dir for various config files'
task :create_configs do
  run "mkdir -p #{shared_path}/config"
  run "touch #{shared_path}/config/database.yml"
end

after 'deploy:finalize_update', :update_configs
desc 'Copy the shared config files to the release config dir'
task :update_configs do
  run "cp -Rf #{shared_path}/config/* #{release_path}/config"
end

#after 'deploy:finalize_update', :bundle_gems
#desc "Install gems ??? or  require 'bundler/capistrano'"
#task :bundle_gems do
#  run "cd #{release_path} && bundle install --path vendor/gems"
#end


# If you are using Passenger
 namespace :deploy do
   task :start do ; end
   task :stop do ; end
   task :restart, :roles => :app, :except => { :no_release => true } do
     run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
   end
 end

Gemfile と Gemfile.lock を編集して開発サイトと「統合」サイトのものと一致するように編集し、bundle install を実行して、gem を「testing」Web サイトに直接インストールしようとしました。

次に、「ショーをバンドル」すると、

bundle show bootstrap-sass
....../.rvm/gems/ruby-1.9.3-p448/gems/bootstrap-sass-3.0.2.1

その後:

bundle exec gem list
Could not find bootstrap-sass-3.0.2.1 in any of the sources
Run `bundle install` to install missing gems.

cap testing deploy も失敗する

機能するサイトでは、次のように gem がインストールされます。

bundle show bootstrap-sass
...../registration/shared/bundle/ruby/1.9.1/gems/bootstrap-sass-3.0.2.1

これは、機能しないサイトに手動でインストールした場所とは異なります。

だから、私の質問は次のとおりです。

Capistrano が一方のサイトに新しい gem を追加できず、もう一方のサイトでは成功するのはなぜですか?

試したとおりに動作しないサイトに gem を直接インストールする必要がありますか? そして、それが良いアイデアである場合、どうすれば適切な場所にインストールできますか?

ライアン

4

1 に答える 1

0

今、私のコメントを答えにします:

現在は動作しています - Ruby のバージョンが異なることに問題があったようです。私のローカルには 1.9.7 p448 があり、テストには 1.9.7 p484 がありました。各マシンのすべてのバージョンを同じバージョンに設定しただけで、Capistrano を使用して、Gemfile への変更に基づいて gem を更新できるようになりました。

于 2014-07-11T04:31:31.407 に答える