Capistrano Разверните ошибку при сбое для рельсов - пакет: не найден

17

Это первый раз, когда я развертываю и получаю ошибки.

вот мой файл deploy.rb     требуют «связки / capistrano»     set: application, "app"

set :scm, :git
set :repository,  "[email protected]:myname/#{application}.git"
set :branch, "master"

server "198.12.78.92", :web, :app, :db, primary: true
set :user, "myname"
set :deploy_to, "/home/#{user}/public_html/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false

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

 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

Вот ошибка, которую я получаю.

*** [deploy:update_code] rolling back
  * executing "rm -rf /home/myname/public_html/app/releases/20130313073408; true"
    servers: ["198.12.78.92"]
    [198.12.78.92] executing command
    command finished in 891ms
failed: "sh -c 'cp -RPp /home/myname/public_html/app/shared/cached-copy /home/myname/public_html/app/releases/20130313073408 && (echo dd92017bc8bb7f951df52d6a14c933e3033fd24b > /home/myname/public_html/app/releases/20130313073408/REVISION)'" on 198.12.78.92

EDIT - я прокомментировал «set: deploy_via,: remote_cache» и теперь получаю пакет: не найдена ошибка, хотя

    
задан iCyborg 13.03.2013 в 08:48
источник
  • У меня есть аналогичная проблема, когда я получаю «bundle not found». Я уверен, что это связано с тем, что я использую RVM, и он настроен на .bashrc, который не используется при использовании оболочки «sh». Поэтому рубин и пучок не найдены, даже подумали, что вы найдете его в интерактивной оболочке (например, bash). Работая над исправлением, но я не unix-гуру, поэтому у меня пока нет ответа. Однако используйте «cap deploy: check» и «cap shell», а затем «on <target> bundle», чтобы получить информационные сообщения об ошибках. –  Peter Andersson 22.03.2013 в 14:06

3 ответа

19

OK Кажется, ответ (см. мой комментарий к вашему вопросу):

У вас установлена ​​последняя rvm как на вашей рабочей станции, так и на сервере (у меня есть 1.17.1).

добавить:

gem 'rvm-capistrano'

в ваш Gemfile (внутри группы: разработка как камень capistrano)

добавить:

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

в ваш config / deploy.rb

Это должно сделать это

    
ответ дан Peter Andersson 22.03.2013 в 14:14
источник
11

Если использовать rbenv, поместите это в .bashrc

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

перед следующей строкой, чтобы capistrano загружать среду, даже если она связана с неинтерактивной оболочкой

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

, вероятно, также будет работать и с инициализацией rvm

    
ответ дан wlads 26.05.2013 в 21:38
источник
  • вы совершенно правы; неинтерактивная оболочка вещь! –  kubbing 03.07.2013 в 16:34
  • +1 работал, спасибо –  equivalent8 06.11.2014 в 13:35
10

У меня были те же проблемы. Ниже приведено решение для RBenv и RVM.

RBENV

Установите правильно RBenv. Установите драгоценный камень поставщика. Pefrorm 'rbenv rehash'.

Добавить в deploy.rb или развернуть / .rb

set :default_environment, { 'PATH' => '$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH' }

РВМ

Правильно установить RVM. Установите драгоценный камень поставщика.

gem 'rvm-capistrano'

deloy.rb или развернуть / .rb

require 'rvm/capistrano'
set :rvm_ruby_string, 'ruby-2.0.0-p247' # Change to your ruby version
set :rvm_type, :system # :user if RVM installed in $HOME

Для дальнейшей информации о конфигурации читайте: Ссылка

Удачи.

    
ответ дан Vjatseslav Gedrovits 28.10.2013 в 10:09
источник
  • Хорошо, его работа для меня в случае RBENV –  Rameshwar Vyevhare 09.10.2015 в 08:21