Можно ли запустить Rails 4 в Windows?
Я работаю над проектом Rails 4 (с использованием проекта release) и теперь вам нужно сотрудничать с кем-то на машине Windows. Однако я даже не могу получить базовую веб-страницу:( Было довольно больно даже при установке sqlite3 с использованием Ruby 2.0. Теперь, когда я пытаюсь получить веб-страницу (я просто создал фиктивный/домашний/индексный контроллер и просмотр), я получаю эту ошибку:
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
Ответы
Ответ 1
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
Измените это на:
<%= stylesheet_link_tag "defaults", media: "all", "data-turbolinks-track" => true %>
Он должен работать.
Будет здорово, если кто-нибудь сможет объяснить это.
Дополнительная информация:
ExecJS:: RuntimeError в индексе пользователей # (RoR)
ExecJS и не удалось найти время выполнения JavaScript
Ответ 2
Просто установите 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 позволяет запускать код JavaScript из Ruby и требует, чтобы в вашей системе был установлен один из интерпретаторов JS. Здесь список поддерживаемых интерпретаторов. Обычно вы можете использовать therubyracer, который является только V8, но есть проблемы с компиляцией V8 под окнами. Таким образом, вы можете выбрать другой вариант - NodeJS. ExecJS будет использовать его автоматически, когда вы установите NodeJS и добавите его в свой PATH.
Ответ 3
изменение следующей строки
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
to
<%= javascript_include_tag "defaults", "data-turbolinks-track" => true %>
работы.
ИЛИ
вы можете установить node.js
Ответ 4
Фактическое решение для работы Turbolinks на Windows 8 x64 размещено на ExecJS:: RuntimeError в Windows, пытаясь следовать рубитету, вариант 3.
Ответ 5
Я столкнулся с этой проблемой некоторое время, и это на windows jquery и coffee script не работает в их последнем обновлении, и, наконец, я нашел этот замечательный метод, который отлично работал без необходимости загрузки node или выхода//требуется дерево. Итак, все, что вам нужно, это настроить параметры в вашем runtimes.rb, который живет в execjs, чтобы быть таким - вы найдете эту часть с небольшими различиями, исправив их, и вам будет хорошо идти.
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