Rails 4.2.0上的Turbolinks导致NodeJS Segfault

时间:2015-09-21 03:39:06

标签: javascript ruby-on-rails node.js turbolinks

我最近在我的Rails应用程序中更新了我的一个咖啡文件(使用NodeJS作为我的运行时),保存后,我重新加载了页面,我得到了ExecJS::RuntimeError页面。

所以我回到了以前的状态,我仍然得到了ExecJS::RuntimeError

然后我跑rake assets:cleanbundle exec rake tmp:clear认为这只是缓存的东西,如果我把它清除掉,一切都会好的。仍然有ExecJS :: RuntimeError页面。重新启动Apache,重新启动服务器但仍然没有。

接下来,我查看了日志,看到每次加载页面时都会保持这一点(运行abrt-cli list --since 1442790134):

   reason:         node killed by SIGSEGV
   time:           Sun 20 Sep 2015 08:05:56 PM EDT
   cmdline:        node /tmp/execjs20150920-17817-q0hw4js
   package:        nodejs-0.10.36-3.el7

为了确保Turbolinks造成这种情况,我从应用程序布局模板的顶部取出了<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>并且应用程序中的所有页面都加载得很好,只是没有javascript。

我正在运行CentOS 7,Ruby 2.0.0p598,Rails 4.2.0和NodeJS v0.10.36。

导致这种情况的原因是什么,我该怎么做才能阻止这种情况发生?

编辑:这似乎解决了这个问题。通过将SELinux设置为关闭(setenforce 0),它能够写入所需的任何位置,当我将SELinux重新打开时,一切都恢复正常。我仍然对这一切如何开始感到困惑......

2 个答案:

答案 0 :(得分:0)

临时js文件的问题 - 它使用SIGSEGV停止 所以要找到问题,请手动运行:

node /tmp/execjs20150920-17817-q0hw4js  

你会明白为什么要停止

答案 1 :(得分:0)

问题是我不应该将我的Rails应用程序放在/ var / www /文件夹中,因为CentOS会将/ var / www /中的所有文件视为对公众开放,这非常危险。 Link to answer.