Rails 4.2.0 上的 Turbolinks 导致 NodeJS 段错误
Turbolinks on Rails 4.2.0 causing NodeJS Segfault
我最近在我的 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 时,一切都恢复正常。我仍然对这一切是如何开始感到困惑...
临时 js 文件的问题 - 它因 SIGSEGV 而停止
所以要手动找到问题运行:
node /tmp/execjs20150920-17817-q0hw4js
你会知道它停止的原因
问题是我不应该将我的 Rails 应用程序放在 /var/www/ 文件夹中,因为 CentOS 将 /var/www/ 中的所有文件视为对 public,太危险了。 Link to answer.
我最近在我的 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 时,一切都恢复正常。我仍然对这一切是如何开始感到困惑...
临时 js 文件的问题 - 它因 SIGSEGV 而停止
所以要手动找到问题运行:
node /tmp/execjs20150920-17817-q0hw4js
你会知道它停止的原因
问题是我不应该将我的 Rails 应用程序放在 /var/www/ 文件夹中,因为 CentOS 将 /var/www/ 中的所有文件视为对 public,太危险了。 Link to answer.