我一直在尝试跟踪几个有关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'
答案 0 :(得分:2)
当ExecJS尝试处理您的资产(javascript和coffeescript)并且您的文件编码而不是 UTF-16LE时,就会发生这种情况。
最流行的解决方案可能是将NodeJS用作ExecJS运行时。一种方法:
EXECJS_RUNTIME
至Node
另一种安装(NodeJS)的替代方法是修改默认ExecJS运行时的配置。我相信您的系统正在使用cscript
。
查看您的execjs runtimes.rb
文件。 (它位于你的gems目录中。)你可以在github here上看到这个文件的最新版本。它包含以下内容:
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-16LE
更改为UTF-8
可以解决问题。这些说明来自ExecJS::RuntimeError on Windows trying to follow rubytutorial