рельсы 4.1 не могут быть развернуты через capistrano 3

у меня очень странная ошибка при развертывании моего приложения rails с помощью capistrano. иногда это разворачивается, а иногда нет. например, я добавляю что-то в css (всего одну строку), например. .my_some_class{width:10px} и после этого происходит сбой развертывания. прежде чем я добавлю это - это нормально. я уверен, что больше ничего не изменилось, потому что я делаю экспериментальную фиксацию, содержащую только одну строку css. моя конфигурация:

rails 4.1.0
ruby 2.1.1p76

gem 'capistrano-rails', group: :development
gem 'capistrano-rvm', group: :development
gem 'capistrano-bundler', group: :development

конец журнала развертывания:

Tasks: TOP => deploy:assets:precompile
(See full trace by running task with --trace)
The deploy has failed with an error: #<SSHKit::Command::Failed: rake exit status: 137
rake stdout: Nothing written
rake stderr: SafeYAML Warning
  ----------------

  You appear to have an outdated version of libyaml (0.1.4) installed on your system.

  Prior to 0.1.6, libyaml is vulnerable to a heap overflow exploit from malicious YAML payloads.

  For more info, see:
  https://www.ruby-lang.org/en/news/2014/03/29/heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525/

  The easiest thing to do right now is probably to update Psych to the latest version and enable
  the 'bundled-libyaml' option, which will install a vendored libyaml with the vulnerability patched:

  gem install psych -- --enable-bundled-libyaml



I, [2014-04-30T09:42:41.121037 #12193]  INFO -- : Writing /var/www/default/releases/20140430134522/public/assets/Thumbs-82e32ea0cc1ce375db2805ceadd707ef.db
I, [2014-04-30T09:42:41.123108 #12193]  INFO -- : Writing /var/www/default/releases/20140430134522/public/assets/agency_no_logo-a8544e60b8a38abeb431c2eb5089f7c6.png
I, [2014-04-30T09:42:41.461121 #12193]  INFO -- : Writing /var/www/default/releases/20140430134522/public/assets/swipebox/img/loader-a66dde050b0b2447862919f2c4c37eda.gif

bash: line 1: 12193 Killed                  ( RAILS_ENV=production ~/.rvm/bin/rvm default do bundle exec rake assets:precompile )

person kpblc    schedule 30.04.2014    source источник
comment
Вы запускали gem install psych -- --enable-bundled-libyaml?   -  person BroiSatse    schedule 30.04.2014
comment
@BroiSatse да, он не обновляется. также я пытаюсь загрузить в gemfile gem 'psych', '›= 2.0.5' - безрезультатно   -  person kpblc    schedule 30.04.2014
comment
Недавно я видел ту же ошибку libyaml на rails 4/cap и игнорировал ее. Это не повлияло на развертывание. Я посмотрю на это в конце концов, но есть другие вопросы. Вы решили свою проблему?   -  person ardochhigh    schedule 30.04.2014


Ответы (4)


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

Я решил проблему, добавив файл SWAP на свой сервер Ubuntu 14.04:

Под root:

dd if=/dev/zero of=/swapfile bs=1024 count=512k
mkswap /swapfile
swapon /swapfile

Добавьте следующую строку в /etc/fstab:

 /swapfile       none    swap    sw      0       0 

и:

echo 0 > /proc/sys/vm/swappiness
sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

проверьте SWAP (возможно, потребуется перезагрузка):

swapon -s 

Как добавить своп в Ubuntu 14.04 @ Сообщество цифрового океана

person Viktor Oleksyn    schedule 02.01.2015
comment
спасибо! для меня это уже решено, как я написал выше, но это может быть полезно для кого-то еще! я даже отмечу ваш ответ как правильный) - person kpblc; 04.01.2015

если у кого такая же ошибка - проблема была на хостинге. серверу не хватало ram(512mb), и процесс компиляции css/js каждый раз убивался. затем мы меняем тарифный план, который имеет 1 ГБ оперативной памяти, все успешно развернуто. Так что, если предварительная компиляция ресурсов не удалась - просто попробуйте добавить некоторые ресурсы на сервер. P.S. аналогичную проблему я нашел здесь Capistrano deploy - ошибка предварительной компиляции ресурсов

person kpblc    schedule 05.05.2014

Попробуйте перезагрузить сервер. Мне помогло.

person drumaddict    schedule 05.09.2015
comment
эта работа, потому что после перезагрузки у вас больше оперативной памяти, чем после нескольких дней работы. для себя я давно решил эту проблему, но спасибо за ответ - person kpblc; 07.09.2015

Похоже, у вас устаревшая версия libyaml

Обновление libyaml.

person OneChillDude    schedule 30.04.2014