需要帮助在rails javascript运行时环境中设置ruby

我在机器上的导轨上设置ruby时遇到了麻烦。 我一直在关注“使用Rails进行敏捷Web开发”一书,直到现在一切都很顺利。

我遇到的问题是当我输入时

rails server 

我收到以下错误:

 /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 `' from /home/myname/.gem/ruby/1.9.1/gems/execjs-1.3.0/lib/execjs.rb:4:in `' 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 `' 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 `' 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 `' 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 `' 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 ' 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 `' from script/rails:6:in `require' from script/rails:6:in `' 

它说它找不到javascript运行时环境。 我去了错误消息推荐的网站,我做了一些谷歌搜索,我读到execjs将是一个很好的选择安装。 我使用以下命令安装了execjs:

 sudo gem install execjs sudo gem update 

当我运行’gem list’时,我得到以下输出:

 *** 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) 

从上面的输出看起来像我安装了execjs。 这里发生了什么,为什么我会收到此错误?

如果它有用,

我的操作系统是Arch Linux。

ruby -v:ruby 1.9.3p125(2012-02-16修订版34643)[x86_64-linux]

rails -v:Rails 3.2.2

任何帮助,将不胜感激。

你的Gemfile应该包含以下几行:

 gem 'execjs' gem 'therubyracer' 

然后运行bundle install并再试一次。

如果你要添加therubyracergem,可能是你的问题应该解决

 gem 'therubyracer' gem 'execjs' 

然后只做一个bundle install

试试这个:

 $ sudo apt-get install nodejs 

我认为你需要像rubyracer这样的运行时。 尝试

 sudo gem install therubyracer 

如果你正在使用Pacman数据包管理器,你应该使用:

 # pacman -S nodejs 

要么

 $ sudo pacman -S nodejs 

我在Rails之前安装了Node.js. 现在它使用Node.js作为javascript运行时本身。

 JavaScript Runtime Node.js (V8)