簡體   English   中英

rails 4.1無法通過capistrano 3進行部署

[英]rails 4.1 can't deploy via capistrano 3

使用capistrano部署我的rails應用程序時,我有一個非常奇怪的錯誤。 有時它是部署,有時不是。 例如,我向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 )

如上所述,可能你沒有足夠的RAM。

我通過在我的Ubuntu 14.04服務器上添加SWAP文件解決了問題:

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 @ Digital Ocean社區添加交換

如果有人有同樣的錯誤 - 托管問題。 服務器沒有足夠的ram(512mb) ,每次都會殺死編譯css / js的過程。 比我們改變費率計划,它有1gb內存,都成功部署。 因此,如果資產預編譯失敗 - 只需嘗試向服務器添加一些資源。 PS我發現這里類似的問題Capistrano部署 - 資產預編譯錯誤

嘗試重新啟動服務器。為我工作。

您似乎有一個過時的libyaml版本

更新libyaml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM