11

我正在开发 Rails 4(使用候选发布版)项目,现在需要与 Windows 机器上的某人协作。但是,我什至无法启动基本网页:(。即使使用 Ruby 2.0 安装 sqlite3 也很痛苦。现在,当我尝试启动网页时(我刚刚创建了一个虚拟 /home/index 控制器并查看),我收到此错误:

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>

Rails 4 还没有为 Windows 做好准备吗?使用 Ruby 2.0.0p195。

更新:根据@szines 的要求,这是网页输出

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
4

5 回答 5

21

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

将此更改为:

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

它应该工作。

如果有人可以为此提供解释,那就太好了。

更多信息:

用户#index (RoR) 中的 ExecJS::RuntimeError

ExecJS 并且找不到 JavaScript 运行时

于 2013-07-01T17:29:20.243 回答
8

只需安装 node.js,问题就会消失。

说明:如果您尝试预编译资产,您将获得以下跟踪:

(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'
...

如您所见,ExecJS 存在问题。ExecJS 允许您从 Ruby 运行 JavaScript 代码,它需要在您的系统上安装一个 JS 解释器。这是支持的解释器列表。通常,您可以使用只是 V8 的 ruby​​racer,但在 windows 下编译 V8 时会出现问题。所以你可以选择另一个选项——NodeJS。当您安装 NodeJS 并将其添加到您的 PATH 时,ExecJS 将自动使用它。

于 2013-08-09T06:13:23.927 回答
7

更改以下行

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

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

作品。

或者

你可以安装node.js

于 2014-02-04T09:27:30.683 回答
0

The actual solution for getting Turbolinks to work on Windows 8 x64 is posted at ExecJS::RuntimeError on Windows trying to follow rubytutorial, option 3.

于 2013-11-02T08:36:42.723 回答
0

我一直面临这个问题一段时间,这是在 Windows 上的 jquery 和咖啡脚本在他们的最新更新中不起作用,最后我发现这个很棒的方法可以完美地工作,而不需要下载节点或转义 //require 树。因此,您所需要的只是将位于 execjs 中的 runtimes.rb 中的设置配置为如下所示 - 您会发现这部分几乎没有什么不同,可以修复它们,您会很高兴的。

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

您可以观看此视频以获得详细的解决方案。 https://www.youtube.com/watch?v=N5i94L17KPo

于 2016-06-29T23:21:03.853 回答