2013-05-24 7 views
11

Ich arbeite an einem Rails 4-Projekt (mit dem Release Candidate) und muss jetzt mit jemandem auf einem Windows-Rechner zusammenarbeiten. Ich kann jedoch nicht einmal eine einfache Webseite bekommen :(. Es war ein ziemlicher Schmerz, sogar sqlite3 mit Ruby 2.0 zu installieren. Jetzt, wenn ich versuche, eine Webseite zu erstellen (ich habe gerade einen Dummy/Home/Index-Controller erstellt) und Darstellung), bekomme ich diesen Fehler:?.Kann Rails 4 unter Windows arbeiten?

Showing C:/Users/me/RubymineProjects/test_project/app/views/layouts/application.html.erb where line #6 raised: 

    (in C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/turbolinks-1.1.1/lib/assets/javascripts/turbolinks.js.coffee) 

Extracted source (around line #6): 
3 <head> 
4 <title>TestProject</title> 
5 <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> 
6 <%= javascript_include_tag "application", "data-turbolinks-track" => true %> 
7 <%= csrf_meta_tags %> 
8 </head> 
9 <body> 

ist Rails 4 einfach nicht bereit für Windows noch mit Ruby 2.0.0p195

UPDATE: Wie pro @szines Anfrage, hier ist der Webseitenausgabe für

http://localhost:3000/rails/info/properties: 
Ruby version 2.0.0 (x64-mingw32) 
RubyGems version 2.0.3 
Rack version 1.5 
Rails version 4.0.0.rc1 
JavaScript Runtime JScript 
Active Record version 4.0.0.rc1 
Action Pack version 4.0.0.rc1 
Action Mailer version 4.0.0.rc1 
Active Support version 4.0.0.rc1 
Middleware 
ActionDispatch::Static 
Rack::Lock 
#<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x000000036b85c0> 
Rack::Runtime 
Rack::MethodOverride 
ActionDispatch::RequestId 
Rails::Rack::Logger 
ActionDispatch::ShowExceptions 
ActionDispatch::DebugExceptions 
ActionDispatch::RemoteIp 
ActionDispatch::Reloader 
ActionDispatch::Callbacks 
ActiveRecord::Migration::CheckPending 
ActiveRecord::ConnectionAdapters::ConnectionManagement 
ActiveRecord::QueryCache 
ActionDispatch::Cookies 
ActionDispatch::Session::CookieStore 
ActionDispatch::Flash 
ActionDispatch::ParamsParser 
Rack::Head 
Rack::ConditionalGet 
Rack::ETag 
Warden::Manager 
Application root C:/Users/me/RubymineProjects/test_project 
Environment development 
Database adapter sqlite3 
Database schema version 20130523073322 
+0

Ist es möglich, ohne Turbolinks zu laufen? Brauchst du den Turbolink-Edelstein? – Mindbreaker

+0

Ja, tut mir leid, ich habe vergessen, das zu erwähnen! Ich möchte Turbolinks. –

+0

hat es eine Fehlermeldung enthalten? –

Antwort

21

<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>

Ändern Sie diese an:

<%= stylesheet_link_tag "defaults", media: "all", "data-turbolinks-track" => true %>

Es sollte funktionieren.

Es wird großartig sein, wenn jemand dafür eine Erklärung liefern kann.

Weitere Informationen:

ExecJS::RuntimeError in Users#index (RoR)

ExecJS and could not find a JavaScript runtime

+3

Hallo, das hat nicht für mich funktioniert, aber wenn ich "application" für "defaults" in der Zeile darunter ändere, funktioniert es danach! – airpaulg

+1

Ich habe airpaulg's Vorschlag versucht und es hat für mich funktioniert. Sie müssen beide ändern. – Drew

+0

install node.js - es ist die dauerhafte Lösung (stellen Sie sicher, npm/bin unter Ihrem Pfad in Windows-Umgebung enthalten). mit "defaults" Sie sind defaults.js, die nicht existiert. Überprüfen Sie die Browser-Konsole unter Netzwerk mit 404-nicht gefunden. –

8

Nur node.js installieren und das Problem wird gegangen.

Erläuterung: Wenn Sie versuchen, Vermögenswerte vorzukompilieren, werden Sie die folgende Spur erhalten:

(in C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/turbolinks-1.3.0/lib/assets/javascripts/turbolinks.js.coffee) 
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:142:in `exec_runtime' 
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:28:in `block in exec' 
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:41:in `compile_to_tempfile' 
... 

Wie Sie sehen können, gibt es ein Problem mit ExecJS. Mit ExecJS können Sie JavaScript-Code von Ruby ausführen, und dazu muss einer der JS-Interpreter auf Ihrem System installiert sein. Hier ist a list der unterstützten Dolmetscher. Normalerweise können Sie therubyracer verwenden, der gerade V8 ist, aber es gibt Probleme mit dem Kompilieren von V8 unter den Fenstern. Sie können also eine andere Option wählen - NodeJS. ExecJS wird es automatisch verwenden, wenn Sie NodeJS installieren und es zu Ihrem PATH hinzufügen.

7

Wechsel folgende Zeile

<%= javascript_include_tag "application", "data-turbolinks-track" => true %> 

zu

<%= javascript_include_tag "defaults", "data-turbolinks-track" => true %> 

funktioniert.

ODER

können Sie installieren node.js

+1

Ich hatte das gleiche Problem beim Ausführen von Rails unter Windows mit Railsinstaller (die neueste Version ab heute). Ersetzen "Anwendung" mit "defaults" hat funktioniert. Installation von node.js nicht. – InvalidBrainException

+0

Stellen Sie sicher, dass Sie "npm/bin" in Ihrem Pfad hinzufügen (Windows-Umgebung) –

0

Ich habe eine Zeit lang dieses Problem wurde gegenüber und es ist, dass auf Windows jquery und Kaffee Skript funktionieren nicht in ihrer letzten Aktualisierung und schließlich fand ich diese wunderbare Methode, die perfekt funktionierte, ohne dass Knoten oder Escape // require Baum herunterladen müssen. Also alles, was Sie brauchen, ist die Einstellungen in Runtimes.rb, die in execjs lebt, um so zu sein - Sie werden feststellen, dass dieser Teil mit wenigen Unterschieden sie beheben und Sie werden gut gehen.

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 

Sie können dieses Video für eine detaillierte Lösung sehen. https://www.youtube.com/watch?v=N5i94L17KPo