ExecJS :: RuntimeError in Benutzer # index (RoR)

Ich habe einfach einen “generate scaffold Users …” Befehl ausgeführt.

Dann gehe ich zu localhost:3000/users/ und sehe das:

  ExecJS::RuntimeError in Users#index Showing C:/Users/TheOnlyUser/Desktop/NMS/nms2/app/views/layouts/application.html.erb where line #6 raised: (in C:/Users/TheOnlyUser/Desktop/NMS/nms2/app/assets/javascripts/ads.js.coffee) Extracted source (around line #6): 3:  4: Nms2 5:  "all" %> 6:  7:  8:  9:  Rails.root: C:/Users/TheOnlyUser/Desktop/NMS/nms2 Application Trace | Framework Trace | Full Trace app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___753556572_43068540' app/controllers/users_controller.rb:7:in `index' ... 

Was bedeutet das alles?

AKTUALISIEREN:

Das ist auf Windows 8. Windows 7 gibt diese Fehler nicht.

Mein Freund hat vor einigen Monaten ein Rails-Tutorial zu Win 8 RTM versucht und ist auf diesen Fehler gestoßen. Ich bin mir nicht sicher, ob dieses Problem auch in Windows 7 auftritt, aber dies kann helfen.

Optionen:

1) Entfernen von //= require_tree . / Ignorieren des Problems – Diese Zeile sollte an erster Stelle kein Problem verursachen. Es gibt ein tatsächliches Problem, dass ExecJS ordnungsgemäß mit der JavaScript-Laufzeitumgebung auf Ihrem System funktioniert und das Entfernen dieser Zeile ignoriert diese Tatsache.

2) Installieren von Node.js / Weglaufen – Viele Leute scheinen am Ende nur Node.js zu installieren und verwenden diese anstelle der JavaScript-Laufzeit bereits auf ihrem System. Dies ist zwar eine gültige Option, erfordert jedoch zusätzliche Software und vermeidet nur das ursprüngliche Problem, dass ExecJS nicht ordnungsgemäß mit der JavaScript-Laufzeitumgebung auf Ihrem System funktioniert. Wenn die vorhandene JavaScript-Laufzeit auf Ihrem System funktionieren soll, warum sollte es nicht funktionieren, anstatt mehr Software zu installieren? Laut dem ExecJS-Ersteller wird die in Windows bereits eingebaute Runtime tatsächlich unterstützt …

Mit ExecJS können Sie JavaScript-Code von Ruby ausführen. Es wählt automatisch die beste verfügbare Laufzeit aus, um Ihr JavaScript-Programm auszuwerten, und gibt das Ergebnis als Ruby-Objekt an Sie zurück.

ExecJS unterstützt diese Laufzeiten:

  • therubyracer – Google V8 eingebettet in Ruby
  • therubyrhino – Mozilla Rhino eingebettet in JRuby
  • Node.js
  • Apple JavaScriptCore – In Mac OS X enthalten
  • Microsoft Windows Script Host (JScript)

(von github.com/sstephenson/execjs#execjs)

3) Das Problem tatsächlich beheben / Lernen – Verwenden Sie das Wissen der Optionen 1 und 2, um nach anderen Lösungen zu suchen. Ich kann Ihnen nicht sagen, wie viele Webseiten, die ich geschlossen habe, nachdem ich die Optionen 1 oder 2 gesehen habe, die akzeptierte Lösung waren, bevor tatsächlich Informationen über das Root-Problem gefunden wurden, das wir hatten. Der einzige Grund, warum wir weiter gesucht haben, war, dass wir nicht glauben konnten, dass das Rails-Team (1) in jedes von Scaffold generierte Projekt eine Codezeile einfügen würde oder (2) dass wir zusätzliche Software installieren müssen, nur um diesen Standard auszuführen Codezeile. Und so haben wir schließlich eine Lösung für unser Root-Problem gefunden (Ihre Meilen können variieren).

Der Fix, der für uns funktioniert hat: Suchen Sie auf dem System, das Probleme hat, die Runtimes.rb-Datei von ExecJS. Es sieht so aus . Erstellen Sie eine Kopie der gefundenen Datei für die Sicherung. Öffne die ursprüngliche runtimes.rb zur Bearbeitung. Suchen Sie den Abschnitt, der mit der Zeile JScript = ExternalRuntime.new( beginnt JScript = ExternalRuntime.new( in diesem Abschnitt in der Zeile, die :command => "cscript //E:jscript //Nologo //U", enthält :command => "cscript //E:jscript //Nologo //U", – entfernen Sie nur das //U Dann in der Zeile, die enthält :encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE – ändern Sie UTF-16LE in UTF-8 . Speichern Sie die Änderungen in der Datei. Dieser Abschnitt der Datei sollte jetzt lesen:

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

Stoppen Sie dann, starten Sie Ihren Rails-Server neu und aktualisieren Sie die Seite in Ihrem Browser, die den ursprünglichen Fehler verursachte. Hoffentlich lädt die Seite jetzt ohne Fehler. Hier ist der ExecJS-Themen-Thread, in dem wir unsere Ergebnisse ursprünglich veröffentlicht haben: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

Wenn das Problem dadurch nicht behoben wurde, können Sie die geänderte runtimes.rb immer mit der Sicherungskopie überschreiben, die Sie (hoffentlich) erstellt haben, und alles wird wieder auf Platz eins gebracht. Wählen Sie in diesem Fall Option 3 und suchen Sie weiter. Lassen Sie uns wissen, was letztendlich für Sie funktioniert. Es sei denn, Sie entfernen den require_tree oder installieren node.js, es gibt bereits viele davon. 🙂

Wie die Kommentatoren sagten, vermisst du wahrscheinlich ein Juwel. Versuchen Sie Folgendes zu Ihrer gemfile hinzuzufügen:

 gem 'therubyracer' 

Und führen Sie die bundle install

Ich ging ursprünglich für Lösung 3 oben von Kevin P und alles lief gut auf meinem Windows 8-Rechner.

Nach einem MS Update letzte Nacht (19.8.13) konnte ich die Homepage in meiner Rails App nicht einmal rendern.

Ich habe node.js installiert und es funktionierte, also verwende ich jetzt Lösung 2.

Die Bearbeitung von runtimes.rb hat das Problem auf Win 8.1 getriggers

Der beste Weg, um das Problem zu lösen, ist die Installation der Node.js. Ruby würde es automatisch erkennen und Sie werden keine JS-Laufzeiterrors mehr haben

runtimes.rb-Datei

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

Unter Windows 8.1 arbeiten

Ich hatte das gleiche Problem und Lösung 3 von Kevin P arbeitete für mich (Bearbeitung der Datei runtimes.rb).
Mein Setup zum Zeitpunkt der Anwendung der Lösung ist wie folgt:
Betriebssystem: Windows 8.1
Ruby-Version: 1.9.3p484
Railsversion: 3.2.14

Der schnellste Weg, um dieses Problem zu beheben, war folgendes:

Edelstein “Therubyracer”, “0.12.1”

Paketaktualisierung

Bundle installieren

Ich hoffe, das wird helfen.