ruby-on-rails – Rake资产:在生产中有一个控制台会话打开时,预编译会被杀死

在我的生产服务器上,托管在数字海洋上,如果有帮助,Ubuntu 12.04,我有RoR 4和耙10.1.1.

当我部署时,我运行rake资产:预编译,我注意到一个奇怪的问题,如果我有一个rails控制台会话打开,当我这样做,我得到以下输出

~# rake assets:precompile
~# Killed

这主要是烦人的,但是我想要解决的原因是招聘新的开发人员时会出现部署/控制台冲突的噩梦.

谢谢,

布赖恩

解决方法

您的预编译过程可能因为内存不足而被杀死.您可以通过在另一个ssh会话中运行顶部来确认.要解决此问题,请创建一个交换文件,当RAM已满时将使用该交换文件.

在Ubuntu上创建SWAP空间
如果您计划在数字海洋上使用Rails 512MB RAM液滴,则可能需要一些交换空间.具体来说,在编译资产时,您的内存将用尽,导致进程被安静地杀死并阻止成功的部署.

看看你是否有交换文件

sudo swapon -s

没有显示交换文件?检查你有多少磁盘空间:

df

创建交换文件

步骤1:分配文件进行交换

sudo fallocate -l 2048m /mnt/swap_file.swap

步骤2:更改权限

sudo chmod 600 /mnt/swap_file.swap

步骤3:格式化交换设备的文件

sudo mkswap /mnt/swap_file.swap

步骤4:启用交换

sudo swapon /mnt/swap_file.swap

步骤5:重新启动时,确保交换已安装.首先,打开fstab

sudo nano /etc/fstab

最后,在fstab中添加条目(只有当它不被自动添加时)

# /etc/fstab
/mnt/swap_file.swap none swap sw 0 0

保存并退出.你完成了交换.现在你的耙子资产:预编译应该完成而不会被杀死.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...