【转】Rails 3.1错误-Could not find a JavaScript runtime及execjs和therubyracer介绍

时间:2022-09-22 14:59:33

转自:http://rubyer.me/blog/740/

Rails 3.1错误

/gems/execjs-1.1.2/lib/
execjs/runtimes.rb:43:in `autodetect’: Could not find a JavaScript
runtime.

Gemfile中添加

gem 'execjs'
gem 'therubyracer'

执行

bundle install

即可

错误原因:

Windows下默认有Javascript引擎,所以不会有这个错误。
Linux下才有这个错误,一般只要第一个项目安装即可,以后的项目不用重复安装。
而且这个错误是由development环境中的assets包引起的,注释掉

# Gems used only for assets and not required
# in production environments by default.
#group :assets do
# gem 'sass-rails', " ~> 3.1.0"
# gem 'coffee-rails', "~> 3.1.0"
# gem 'uglifier'
#end

就不用安装’execjs’和’therubyracer’了。

扩展:

http://rubydoc.info/gems/execjs/1.2.12/file/README.md
很推荐一读,看后让你彻底明白execjs和therubyracer。

很悲剧的是,虽然bundle install提示安装成功了,使用gem install execjs和gem install therubyracer也提示安装成功了,但还是提示找不到javascript runtime。无奈之下,安装nodejs。结果yum install nodejs,提示说找不到安装包。不得以,最后只能自己编译和安装了。步骤如下:

(nodejs需要python版本>2.6的支持,centos5.5 默认是2.4.3,所以必须先安装一个版本足够的python。然后执行以下:

wget http://nodejs.org/dist/v0.10.20/node-v0.10.20.tar.gz
tar xzvf node-v0.10.20.tar.gz
cd node-v0.10.20.tar.gz
./configure
make && make install (漫长的等待…)