Неполное "\n" в UTF-16LE Ошибка
Я пытался следовать нескольким учебникам на рельсах, и каждый раз, когда я сталкиваюсь с следующей проблемой во время работы 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
1 ответ
Это происходит, когда ExecJS пытается обработать ваши активы (javascript и coffeescript), а кодировка вашего файла не UTF-16LE.
Самое популярное исправление: используйте альтернативную среду выполнения ExecJS
Вероятно, наиболее популярным решением является использование NodeJS в качестве среды выполнения ExecJS. Один из способов сделать это:
- Установить nodejs
- Установить жизнеспособную среду
EXECJS_RUNTIME
вNode
- Запустите свой сервер Rails
Альтернативное исправление: изменить существующую конфигурацию
Альтернативой выполнению другой установки (NodeJS) является изменение конфигурации среды выполнения ExecJS по умолчанию. Я считаю, что ваша система использует cscript
,
Посмотрите на ваши execjs runtimes.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-16LE
вUTF-8
устраняет проблему - Вы можете обнаружить, что комбинация обоих этих шагов решает проблему.
Эти инструкции взяты из ExecJS::RuntimeError в Windows, пытающейся следовать rubytutorial