问题
I'm having trouble setting up ruby on rails on my machine. I've been following the book "Agile Web Development with Rails" and up until now everything has been going fine.
The problem I'm having is that when I type
rails server
I get the following error:
/home/myname/.gem/ruby/1.9.1/gems/execjs-1.3.0/lib/execjs/runtimes.rb:50:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
from /home/myname/.gem/ruby/1.9.1/gems/execjs-1.3.0/lib/execjs.rb:5:in `<module:ExecJS>'
from /home/myname/.gem/ruby/1.9.1/gems/execjs-1.3.0/lib/execjs.rb:4:in `<top (required)>'
from /usr/lib/ruby/gems/1.9.1/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require'
from /usr/lib/ruby/gems/1.9.1/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `<top (required)>'
from /usr/lib/ruby/gems/1.9.1/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `require'
from /usr/lib/ruby/gems/1.9.1/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `<top (required)>'
from /usr/lib/ruby/gems/1.9.1/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `require'
from /usr/lib/ruby/gems/1.9.1/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `<top (required)>'
from /home/myname/.gem/ruby/1.9.1/gems/bundler-1.1.0/lib/bundler/runtime.rb:68:in `require'
from /home/myname/.gem/ruby/1.9.1/gems/bundler-1.1.0/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
from /home/myname/.gem/ruby/1.9.1/gems/bundler-1.1.0/lib/bundler/runtime.rb:66:in `each'
from /home/myname/.gem/ruby/1.9.1/gems/bundler-1.1.0/lib/bundler/runtime.rb:66:in `block in require'
from /home/myname/.gem/ruby/1.9.1/gems/bundler-1.1.0/lib/bundler/runtime.rb:55:in `each'
from /home/myname/.gem/ruby/1.9.1/gems/bundler-1.1.0/lib/bundler/runtime.rb:55:in `require'
from /home/myname/.gem/ruby/1.9.1/gems/bundler-1.1.0/lib/bundler.rb:118:in `require'
from /home/myname/Programming/Learning/Learning_Rails/demo/config/application.rb:7:in `<top (required)>'
from /home/myname/.gem/ruby/1.9.1/gems/railties-3.2.2/lib/rails/commands.rb:53:in `require'
from /home/myname/.gem/ruby/1.9.1/gems/railties-3.2.2/lib/rails/commands.rb:53:in `block in <top (required)>'
from /home/myname/.gem/ruby/1.9.1/gems/railties-3.2.2/lib/rails/commands.rb:50:in `tap'
from /home/myname/.gem/ruby/1.9.1/gems/railties-3.2.2/lib/rails/commands.rb:50:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
It's saying that it can't find a javascript runtime environment. I went to the website that the error message recommended and I did some googling and I read that execjs would be a good choice to install. I installed execjs with the following commands:
sudo gem install execjs
sudo gem update
When I run 'gem list' I get the following output:
*** LOCAL GEMS ***
actionmailer (3.2.2)
actionpack (3.2.2)
activemodel (3.2.2)
activerecord (3.2.2)
activeresource (3.2.2)
activesupport (3.2.2)
arel (3.0.2)
bigdecimal (1.1.0)
builder (3.0.0)
bundler (1.1.0)
coffee-rails (3.2.2)
coffee-script (2.2.0)
coffee-script-source (1.2.0)
erubis (2.7.0)
execjs (1.3.0 ruby)
hike (1.2.1)
i18n (0.6.0)
io-console (0.3)
journey (1.0.3)
jquery-rails (2.0.1)
json (1.6.5, 1.5.4)
mail (2.4.3)
mime-types (1.17.2)
minitest (2.11.3, 2.5.1)
multi_json (1.1.0)
polyglot (0.3.3)
rack (1.4.1)
rack-cache (1.2)
rack-ssl (1.3.2)
rack-test (0.6.1)
rails (3.2.2)
railties (3.2.2)
rake (0.9.2.2)
rdoc (3.12, 3.9.4)
sass (3.1.15)
sass-rails (3.2.4)
sprockets (2.3.1, 2.1.2)
sqlite3 (1.3.5)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
tzinfo (0.3.32)
uglifier (1.2.3)
From the output above it looks to me like execjs is installed. What's going on here and why am I getting this error?
If it's helpful at all,
My OS is Arch Linux.
ruby -v: ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux]
rails -v: Rails 3.2.2
Any help would be appreciated.
回答1:
Your Gemfile should contain BOTH of the following lines:
gem 'execjs'
gem 'therubyracer'
Then run bundle install
and try again.
回答2:
If you will add therubyracer gem , may be your problem woould be solved
Code
gem 'therubyracer'
gem 'execjs'
then just do a bundle install
回答3:
Try this:
$ sudo apt-get install nodejs
回答4:
I think you need a runtime like rubyracer. Try
sudo gem install therubyracer
回答5:
If you're using Pacman packet manager you should use:
# pacman -S nodejs
or
$ sudo pacman -S nodejs
回答6:
I'd installed Node.js before Rails. Now its using Node.js as the javascript runtime by itself.
JavaScript Runtime Node.js (V8)
来源:https://stackoverflow.com/questions/9632102/need-help-setting-up-ruby-on-rails-javascript-runtime-environment