ATUALIZAÇÃO: sugestão de Colin de remover a linha // = require_tree. corrigiu o problema.
Eu perdi mais de 2 dias tentando seguir todas as sugestões lá fora e corrigir meu problema. Estou tentando seguir o livro http://ruby.railstutorial.org em uma máquina com Windows e não consigo superar o seguinte erro desagradável.
ExecJS::RuntimeError in Static_pages#home
Showing C:/Users/.../bootcamp-sample-app/app/views/layouts/application.html.erb where line #6 raised:
["ok","(function() {\n\n\n\n}).call(this);\n"]
(in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee)
Extracted source (around line #6):
3: <head>
4: <title><%= full_title(yield(:title)) %></title>
5: <%= stylesheet_link_tag "application", media: "all" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: <%= render 'layouts/shim' %>
9: </head>
Rails.root: C:/Users/.../bootcamp-sample-app
Application Trace | Framework Trace | Full Trace
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___487732698_30422172'
Request
Eu tentei todas as sugestões, incluindo a instalação do nodejs com o msi, usando execjs 1.3.0 e outras coisas que eu nem consigo me lembrar mais. Aqui está o arquivo gem
source 'https://rubygems.org'
gem 'rails', '3.2.8'
gem 'bootstrap-sass', '2.0.0'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'
group :development, :test do
gem 'sqlite3', '1.3.5'
gem 'rspec-rails', '2.10.0'
gem 'guard-rspec', '0.5.5'
gem 'guard-cucumber'
end
group :development do
gem 'annotate', '2.5.0'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails'
gem 'coffee-rails'
gem 'coffee-script'
gem 'uglifier'
end
gem 'jquery-rails', '2.0.2'
gem 'execjs'
# Gems on Linus/Mac
#gem 'therubyracer'
group :test do
gem 'capybara', '1.1.2'
gem 'guard-spork', '0.3.2'
gem 'spork', '0.9.0'
gem 'factory_girl_rails', '1.4.0'
gem 'cucumber-rails', '1.2.1', require: false
gem 'database_cleaner', '0.7.0'
# Test gems on Linux
# gem 'rb-inotify', '0.8.8'
# gem 'libnotify', '0.5.9'
# Test gems on Macintosh OS X
# gem 'selenium-webdriver', '~> 2.22.0'
# gem 'rb-fsevent', '0.9.1', :require => false
# gem 'growl', '1.0.3'
# Test gems on Windows
# gem 'rb-fchange', '0.0.5'
# gem 'rb-notifu', '0.0.4'
# gem 'win32console', '1.3.0'
end
group :production do
# gem 'therubyracer'
gem 'pg', '0.12.2'
end
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
#gem 'debugger''
e aqui está o sessions.js.coffee
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
application.js
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require_tree .
//= require bootstrap
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<%= render 'layouts/shim' %>
</head>
<body>
<%= render 'layouts/header' %>
<div class="container">
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>
</html>
Aqui está o conteúdo do console
Processing by StaticPagesController#home as HTML
Rendered static_pages/home.html.erb within layouts/application (45.0ms)
Completed 500 Internal Server Error in 1136ms
ActionView::Template::Error (["ok","(function() {\n\n\n\n}).call(this);\n"]
(in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee)):
3: <head>
4: <title><%= full_title(yield(:title)) %></title>
5: <%= stylesheet_link_tag "application", media: "all" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: <%= render 'layouts/shim' %>
9: </head>
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___487732698_30422172'
Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.0ms)
Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (34.0ms)
Eu instalei o Devkit e tentei várias joias, mas por favor sugira mudanças que podem me ajudar a desenvolver no Windows. Usei o rubyinstaller para tudo.
o que estou perdendo?
fonte
//= require_tree .
deapplication.js
e ver se o erro persiste?.js.coffee
arquivo emapp/assets/javascripts
JavaScript e, em seguida, adiciona-o ao seu layout (mas apenas no modo de desenvolvimento; no modo de produção, o js compilado é adicionado ao seuapplication.js
arquivo). Terrequire_tree .
não deveria estar causando erros, então de alguma forma você tem um problema com um dos arquivos que estão sendo incluídos. Você pode postar uma lista de todos os arquivos em seuapp/assets/javascripts
diretório? Além disso, você pode tentar excluir completamente o conteúdosessions.js.coffee
e adicionar novamente//= require_tree .
e ver se o erro ainda existe.Respostas:
Meu amigo estava tentando um tutorial Rails no Win 8 RTM alguns meses atrás e encontrou este erro. Não tenho certeza se esse problema também existe no Windows 7, mas isso pode ajudar.
Opções:
1) Removendo
//= require_tree .
/ Ignorando o problema - Como ColinR afirmou acima, esta linha não deveria estar causando um problema em primeiro lugar. Há um problema real com o ExecJS funcionando corretamente com o tempo de execução do JavaScript em seu sistema e remover essa linha é simplesmente ignorar esse fato.2) Instalando o Node.js / Fugindo - Muitas pessoas parecem simplesmente instalar o Node.js e usá-lo em vez do tempo de execução do JavaScript já existente no sistema. Embora seja uma opção válida, também requer software adicional e apenas evita o problema original, que é o ExecJS não estar funcionando corretamente com o tempo de execução do JavaScript já em seu sistema. Se o tempo de execução do JavaScript existente em seu sistema deve funcionar, por que não fazê-lo funcionar em vez de instalar mais software? De acordo com o criador do ExecJS, o tempo de execução já embutido no Windows é de fato suportado ...
3) Corrigindo efetivamente o problema / Aprendizagem - Use o conhecimento das opções 1 e 2 para pesquisar outras soluções. Não posso dizer quantas páginas da web fechei ao ver as opções 1 ou 2 eram a solução aceita antes de realmente encontrar informações sobre o problema raiz que estávamos tendo. A única razão pela qual continuamos procurando foi que não podíamos acreditar que a equipe Rails iria (1) inserir uma linha de código em cada projeto gerado por scaffold que causou um problema, ou (2) exigir que instalemos software adicional apenas para executar aquele padrão linha de código. E assim finalmente chegamos a uma solução para nosso problema raiz (suas milhas podem variar).
A correção que funcionou para nós: no sistema com problemas, localize o arquivo runtimes.rb do ExecJS . Parece que este . Faça uma cópia do arquivo encontrado para backup. Abra o runtimes.rb original para edição. Encontre a seção que começa com a linha
JScript = ExternalRuntime.new(
. Nessa seção, na linha que contém:command => "cscript //E:jscript //Nologo //U",
- remova o//U
único. Em seguida, na linha que contém:encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE
- altere UTF-16LE paraUTF-8
. Salve as alterações no arquivo. Esta seção do arquivo agora deve ser:Em seguida, pare e reinicie seu servidor Rails e atualize a página em seu navegador que produziu o erro original. Esperançosamente, a página carrega sem erros agora. Aqui está o tópico de problemas do ExecJS em que postamos nossos resultados originalmente: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952
Se isso não resolver o problema, você sempre pode sobrescrever o runtimes.rb modificado com a cópia de backup que você (espero) fez e tudo voltará à estaca zero. Nesse caso, considere a opção 3 e continue pesquisando. Deixe-nos saber o que eventualmente funciona para você .. a menos que seja removendo o require_tree ou instalando node.js, há muito disso já acontecendo. :)
fonte
UTF-16LE
paraUTF-16
sem remover a//U
opção. Eu confirmei.Tive o mesmo problema de SO- Erro do Windows 8- 'ExecJS :: RuntimeError ...' Solução- Node.js ausente
fonte
Eu tive esse problema e estava vasculhando a internet Estou executando o Windows 8 com este arquivo Rails gem
Fui para http://nodejs.org/download/ instalado - reiniciei a máquina e tudo funcionou.
fonte
Eu favoreci a rota de aprendizagem . Parece que o problema vem de
retornando uma string vazia
execjs\external_runtine.rb
(linha 173 na versão 1.4.0). É por isso que a mensagem de erro não contém texto. As mudanças sugeridas não funcionaram para mim. MudeiUTF-16LE
paraUTF-8
, mas ainda retornou uma string vazia. I removido\\U
docommand
- este texto, pelo menos, voltou, mas foi na codificação errada - no navegador que exibidos como caracteres chineses.De acordo com esta postagem no blog do MSDN , usar o
//U
sinalizador e redirecionar para um arquivo fazcscript
com que o resultado seja retornado usandoUTF-16
.E então, magicamente, funcionou ( @ #% $ & ^ @ $% !!!?!?!) Usando
command
como"cscript //E:jscript //Nologo"
eencoding
como"UTF-8"
. Ah bem.fonte
Tive que adicionar minha pasta nodejs à minha variável de ambiente Windows Path. No Windows 8, abra o Painel de Controle, vá para Sistema, Configurações avançadas do sistema (à esquerda), clique em Variáveis de Ambiente à esquerda e edite a variável de caminho para incluir o diretório em sua pasta nodejs (provavelmente em Arquivos de Programas).
Claro que você precisa ter o Node.js instalado (use o instalador do Windows ) e o CoffeeScript instalado através do NPM.
fonte
Sei que essa é uma resposta muito tardia para esse problema, mas descobri algo semelhante e percorri todo o caminho para entender o que realmente estava causando o problema.
Descobriu-se que o mecanismo jscript padrão do Windows ainda está no es3, e muitos gems estão aproveitando os recursos do es5 ou es6. Infelizmente, se isso acontecer (você está usando uma gema ou um pedaço de código que aproveita os recursos do es5 ou es6), não há como deixá-lo funcionar no Windows com o mecanismo nativo js.
Esta é a razão pela qual a instalação do node.js resolve o problema (o node é pelo menos es5).
Espero que isso possa ajudar algumas pessoas que estão lutando com um erro de execução do jsexec.
Meu conselho de 2 centavos é instalar o node (muito fácil) ou instalar o v8, e não remover o // = require_tree.
Observe que os execjs usarão automaticamente o nó se detectado. Caso contrário, force seu uso, adicionando na inicialização algo como:
Para definir o env para o nó.
fonte
Para usuários do Windows, isso pode funcionar. Há um problema com o coffee-script-source> 1.9.0 em execução no Windows.
Parece que você tem que adicionar isso ao seu gemfile:
gem 'coffee-script-source', '1.8.0'
então faça
pacote de atualização de café-script-fonte
Eu tentei todas as opções acima, e também misturei algumas combinações delas, até que encontrei este Rails-4, ExecJS :: ProgramError em Pages # welcome e fiz várias atualizações de gem do sistema e pacotes de instalações e atualizações.
Eu reverti todos os meus testes e rebaixei minha fonte de script de café e funciona. Postando aqui para ajudar qualquer pessoa que possa ter um problema semelhante.
Atualizando arquivos no fornecedor / cache
coffee-script-source-1.8.0.gem Removendo arquivos .gem desatualizados do vendor / cache coffee-script-source-1.9.1.1.gem Pacote atualizado!
fonte
Para iniciantes como eu:
Altere a linha 6 de:
'<% = javascript_include_tag' application ',' data-turbolinks-track '=> true%>'
para
Fonte do tutorial para corrigir aqui
fonte
<%= stylesheet_link_tag 'defaults', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'defaults', 'data-turbolinks-track': 'reload' %>
obrigado Leandro P.Solução rápida e suja: remover
//= require_tree .
deapplication.js
.Conforme explico nos comentários para a pergunta, isso não resolve realmente o problema subjacente que está causando o erro, mas apenas o contorna.
fonte
Usei a solução número 2 porque anteriormente tinha esse erro, mas nesta ocação não funcionou, então adicionei o
gem 'coffee-script-source', '1.8.0'
e corra
e meu problema foi resolvido
fonte
Aqui está uma solução menos complicada, para iniciantes:
Se você está apenas trabalhando no tutorial, provavelmente está trabalhando com o Gemfile padrão (ou quase). Você pode abri-lo em seu editor de texto e remover o sinal de sustenido do início desta linha:
Você precisará executar novamente
bundle install
, o que provavelmente fará o download de algumas coisas. Mas, uma vez que isso aconteça, você poderá iniciar o servidor sem nenhum problema.Pelo menos, isso funcionou para mim.
A propósito, isso também funciona no Ubuntu 12.04.
fonte
Executando Win 8 64 bit rails 4.2.5 ruby 2.1.7
Este funcionou para mim
fonte
Você alterou a localização do seu código de C: \ Users \ this-user \ yo-app ?
Quando eu era jovem no Rails, criei um aplicativo e o local padrão do meu aplicativo era C: \ Users \ Duncan \ my-app e então, quando mudei meu-aplicativo e coloquei em D: \ All-my-Apps -pasta eu tive esse erro ....
Eu cocei minha cabeça, tentei 1,2,3 e mais ... nada! Até retornar todo o código ao local da pasta padrão e, para minha surpresa, estava rolando novamente :)
Caso alguém possa achar isso útil (não posso explicar por que isso aconteceu, talvez alguém possa sem especulação)
fonte