转自: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 (漫长的等待…)