Just ran a "generate scaffold Users ... " command.
Then I go to localhost:3000/users/
and see this:
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: <head>
4: <title>Nms2</title>
5: <%= stylesheet_link_tag "application", :media => "all" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: </head>
9: <body>
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'
...
What does that all mean?
UPDATE:
That's on Windows 8. Windows 7 doesn't give these errors.
The fastest way I fixed this issue was this:
gem 'therubyracer', '0.12.1'
bundle update
bundle install
I hope this will help.
I initially went for solution 3 above by Kevin P and everything was working fine on my Windows 8 machine.
After a MS update last night (8/19/13) I couldn't even render the homepage in my rails app.
I installed node.js and it worked so I'm using solution 2 now.
My friend was attempting a Rails tutorial on Win 8 RTM a few months ago and ran into this error. Not sure if this issue exists in Windows 7 as well, but this may help.
Options:
1) Removing
//= require_tree .
/ Ignoring the issue - This line should not be causing an issue in the first place. There is an actual problem with ExecJS working properly with the JavaScript runtime on your system and removing this line is just ignoring that fact.2) Installing Node.js / Running away - Many people seem to just end up installing Node.js and using that instead of the JavaScript runtime already on their system. While that is a valid option, it also requires additional software and only avoids the original issue, which is that ExecJS is not working properly with the JavaScript runtime already on your system. If the existing JavaScript runtime on your system is supposed to work, why not make it work instead of installing more software? According to the ExecJS creator, the runtime already built into Windows is in fact supported...
3) Actually fixing the issue / Learning - Use the knowledge of options 1 and 2 to search for other solutions. I can't tell you how many webpages I closed upon seeing options 1 or 2 was the accepted solution before actually finding information about the root issue we were having. The only reason we kept looking was that we couldn't believe the Rails team would (1) insert a line of code in every scaffold generated project that caused an issue, or (2) require that we install additional software just to run that default line of code. And so we eventually arrived at a fix for our root issue (your miles may vary).
The Fix that worked for us: On the system having issues, find ExecJS's runtimes.rb file. It looks like this. Make a copy of the found file for backup. Open the original runtimes.rb for editing. Find the section that starts with the line
JScript = ExternalRuntime.new(
. In that section, on the line containing:command => "cscript //E:jscript //Nologo //U",
- remove the//U
only. Then on the line containing:encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE
- change UTF-16LE toUTF-8
. Save the changes to the file. This section of the file should now read:Next, stop then restart your Rails server and refresh the page in your browser that produced the original error. Hopefully the page loads without error now. Here's the ExecJS issue thread where we originally posted our results: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952
If this did not fix the issue, you can always overwrite the modified runtimes.rb with the backup copy you (hopefully) made and everything will be back to square one. In that case, consider option 3 and keep searching. Let us know what eventually works for you.. unless it's removing the require_tree or installing node.js, there's plenty of that going around already. :)
The quikest way to solve the problem is Installing the Node.js. Ruby would detect it automatically and You will have no more JS runtime errors
runtimes.rb file
Working in Windows 8.1
Editing runtimes.rb solved the problem on Win 8.1