1

我一直在尝试遵循有关 Rails 的几个教程,并且每次在运行时遇到以下问题rails s

Started GET "/" for 127.0.0.1 at 2014-09-14 06:57:44 +0100
Connecting to database specified by database.yml
Processing by CarsController#index as HTML
  Car Load (1.0ms)  SELECT "cars".* FROM "cars"
  Rendered cars/index.html.erb within layouts/application (396.0ms)
Completed 500 Internal Server Error in 101655ms

ActionView::Template::Error (incomplete "\n" on UTF-16LE
  (in /cygdrive/c/rails/todolist/3/rails-angular-example-master/app/assets/javascripts/angular_app.js.coffee.erb)):
    3: <head>
    4:   <title>Angular</title>
    5:   <%= stylesheet_link_tag    "application", :media => "all" %>
    6:   <%= javascript_include_tag "application" %>
    7:   <%= csrf_meta_tags %>
    8: </head>
    9: <body>
  app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__988651031__1054838708'
  app/controllers/cars_controller.rb:6:in `index'
  config/initializers/quiet_assets.rb:8:in `call_with_quiet_assets'

教程:https ://github.com/wulftone/rails-angular-example

4

1 回答 1

2

当 ExecJS 尝试处理您的资产(javascript 和 coffeescript)并且您的文件编码不是UTF-16LE 时,就会发生这种情况。

最受欢迎的修复:使用替代的 ExecJS 运行时

可能最流行的解决方法是使用 NodeJS 作为您的 ExecJS 运行时。一种方法:

  1. 安装nodejs
  2. 将环境变量设置EXECJS_RUNTIMENode
  3. 启动 Rails 服务器

替代修复:修改现有配置

进行另一个安装 (NodeJS) 的替代方法是修改默认 ExecJS 运行时的配置。我相信您的系统正在使用cscript.

看看你的 execjsruntimes.rb文件。(它在你的 gems 目录中。)你可以在 github 上看到这个文件的最新版本。它包含以下内容:

JScript = ExternalRuntime.new(
  name:        "JScript",
  command:     "cscript //E:jscript //Nologo //U",
  runner_path: ExecJS.root + "/support/jscript_runner.js",
  encoding:    'UTF-16LE' # CScript with //U returns UTF-16LE
)

我无法建议您采取最佳课程,但为了快速修复,您可能只想编辑此文件(然后重新启动服务器)。

  • 您可能会发现删除这些问题可以//U解决问题。
  • 您可能会发现更改UTF-16LEUTF-8解决问题。
  • 您可能会发现这两个步骤的组合可以解决问题。

这些指令来自ExecJS::RuntimeError on Windows 试图遵循 ruby​​tutorial

于 2015-04-20T21:04:45.213 回答