我最近在我的Rails应用程序中更新了我的一个咖啡文件(使用NodeJS作为我的运行时),保存后,我重新加载了页面,我得到了ExecJS::RuntimeError
页面。
所以我回到了以前的状态,我仍然得到了ExecJS::RuntimeError
。
然后我跑rake assets:clean
和bundle 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重新打开时,一切都恢复正常。我仍然对这一切如何开始感到困惑......
答案 0 :(得分:0)
临时js文件的问题 - 它使用SIGSEGV停止 所以要找到问题,请手动运行:
node /tmp/execjs20150920-17817-q0hw4js
你会明白为什么要停止
答案 1 :(得分:0)
问题是我不应该将我的Rails应用程序放在/ var / www /文件夹中,因为CentOS会将/ var / www /中的所有文件视为对公众开放,这非常危险。 Link to answer.