Ошибка установки пакета при развертывании приложения Rails 3 на Dreamhost с Capistrano - PullRequest
3 голосов
/ 11 января 2011

Я пытаюсь развернуть локально работающее приложение Rails 3 на Dreamhost с Capistrano. Когда я запускаю «cap deploy -v» в своем локальном корне приложения, я захожу так далеко, что он задыхается от «установки пакета». Ниже приводится конец сообщения об ошибке:

** транзакция: начало ** [abunchofletters.co.uk :: out] my_username@abunchofletters.co.uk пароль: Пароль: ** [abunchofletters.co.uk :: out] ** [abunchofletters.co.uk :: out] HEAD теперь находится на 62f9cdb Первоначальное развертывание на Dreamhost ** [out :: abunchofletters.co.uk] sh: bundle: команда не найдена * [deploy: update_code] откат ошибка: установка пакета "sh -c" --gemfile /home/my_username/abunchofletters.co.uk/releases/20110111100145/Gemfile --path /home/my_username/abunchofletters.co.uk/shared/bundle --deployment - тишина - без теста разработки "" на abunchofletters.co.uk

Тем не менее, когда я захожу по SSH на свой сервер и проверяю список гемов, показывается, что пакет 1.0.7 установлен [также работает на Ruby 1.8.7, Rails 3.0.3, RubyGems 1.3.6]. Это мой первый опыт развертывания приложения Rails, а также Capistrano, так что я близок к тому, что ничего не знаю, но думаю, что некоторые пути или переменные установлены неправильно.

Вот мой deploy.rb [создан из следующих http://railstips.org/blog/archives/2008/12/14/deploying-rails-on-dreamhost-with-passenger/, поэтому может быть устаревшим]:

require "bundler/capistrano" # http://gembundler.com/deploying.html

default_run_options[:pty] = true

# be sure to change these
set :user,        'my_username'
set :domain,      'abunchofletters.co.uk'
set :application, 'abunchofletters'

# the rest should be good
set :repository,  "#{user}@#{domain}:git/#{application}.git"
set :deploy_to, "/home/#{user}/#{domain}"
set :deploy_via, :remote_cache
set :scm, 'git'
set :branch, 'master'
set :git_shallow_clone, 1
set :scm_verbose, true
set :use_sudo, false

server domain, :app, :web
role :db, domain, :primary => true

namespace :deploy do
  task :restart do
    run "touch #{current_path}/tmp/restart.txt"
  end
end

Есть идеи, как прогрессировать? Если вам нужно больше информации, просто сообщите мне, и я предоставлю ее.

1 Ответ

0 голосов
/ 12 января 2011

Я не слишком доволен решением, которое придумал, но оно получило развертывание для работы и пакет для обновления.

Вот мой обновленный deploy.rb:

#require "bundler/capistrano"

default_run_options[:pty] = true

# be sure to change these
set :user,        'futureproof'
set :domain,      'abunchofletters.co.uk'
set :application, 'abunchofletters'

# the rest should be good
set :repository,  "#{user}@#{domain}:git/#{application}.git"
set :deploy_to, "/home/#{user}/#{domain}"
set :deploy_via, :remote_cache
set :shared_path, "/home/#{user}/.gems"
set :scm, 'git'
set :branch, 'master'
set :git_shallow_clone, 1
set :scm_verbose, true
set :use_sudo, false

server domain, :app, :web
role :db, domain, :primary => true

namespace :deploy do
  desc "expand the gems"
  task :gems, :roles => :web, :except => { :no_release => true } do
    run "cd #{current_path}; #{shared_path}/bin/bundle unlock"
    run "cd #{current_path}; nice -19 #{shared_path}/bin/bundle install vendor/" # nice -19 is very important otherwise DH will kill the process!
    run "cd #{current_path}; #{shared_path}/bin/bundle lock"
  end

  task :restart do
    run "touch #{current_path}/tmp/restart.txt"
  end
end

Задача: gems была замечена здесь: http://grigio.org/deploy_rails_3_passenger_apache_dreamhost, хотя блокировка / разблокировка комплекта устарела.Может быть в состоянии просто заменить с установкой / обновлением пакета, но устарела будет делать сегодня вечером.

...