Capistrano не может найти драгоценный камень в производстве
Привет, я думаю, что мне здесь чего-то не хватает.
Я использую Capistrano для развертывания в "интеграцию", а затем в "тестирование".
Кажется, я не могу добавить драгоценный камень и затем успешно развернуть его с Capistrano на одном из веб-сайтов ("тестирование"). Однако я могу успешно развернуть его на другой ("интеграция").
Я пытаюсь добавить bootstrap-sass '~> 3.0.2.0', но такая же ошибка возникает с другими драгоценными камнями, когда я пытаюсь добавить их.
Когда я пытаюсь выполнить "тестирование" с помощью "cap testing deploy", я получаю сообщение об ошибке:
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
Я попытался установить gem непосредственно на "тестовом" веб-сайте, отредактировав там Gemfile и Gemfile.lock, чтобы они соответствовали тем, что были в моей разработке, и "интеграционному" сайту и выполняемой установке комплекта.
Затем, когда я "связка шоу" я получаю
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.
пробное развертывание также не удается
На сайте, который работает, драгоценный камень установлен, как показано ниже:
bundle show bootstrap-sass
...../registration/shared/bundle/ruby/1.9.1/gems/bootstrap-sass-3.0.2.1
который отличается от того, где я установил его вручную на сайте, который не работает.
Итак, мои вопросы:
Почему Capistrano не может добавить новые драгоценные камни на один сайт, но успешно с другим?
Должен ли я установить гем прямо на сайт, который не работает, как я пытался? И если это хорошая идея, как мне заставить ее установить в нужное место?
Райан
1 ответ
Теперь сделаю мой комментарий ответом:
Это работает сейчас - кажется, была проблема с различными версиями ruby. У меня был 1.9.7 p448 на моем локальном тесте и 1.9.7 p484. Мы просто установили все наши версии на каждой машине на одну и ту же, и теперь я могу использовать Capistrano для обновления драгоценных камней на основе изменений в Gemfile.