我正在尝试使用capistrano进行部署,但由于rubyracer gem问题而失败。
我尝试将以下变体添加到gemfile,然后在ubuntu上部署到生产服务器,但没有任何作用:
1)
gem 'libv8', '3.11.8.3'
3)
gem 'therubyracer'
gem 'libv8', '3.3.10.4'
4)
gem 'libv8', '~> 3.11.8.3'
这一切都给出了同样的错误:
安装therubyracer(0.11.0)时发生错误,Bundler无法继续。 在捆绑之前确保gem install therubyracer -v'0.11.0'成功。
所以我试试这个:
group :production do
gem 'therubyracer', '0.10.2', :platforms => :ruby
end
但是这导致了这个错误:
Bundler could not find compatible versions for gem "libv8":
In Gemfile:
therubyracer (= 0.10.2) ruby depends on
libv8 (~> 3.3.10) ruby
libv8 (3.11.8.3)
看来我目前在服务器上有两个版本的lib8:
libv8 (3.11.8.4, 3.3.10.4 x86_64-linux)
有什么想法吗?
答案 0 :(得分:5)
从stackoverflow尝试解决方案几个小时后,我只用2个命令从这个站点得到了一个简单的修复,作者提到了
安装therubyracer gem时,你可能会遇到这个问题 新机安装。
http://usefulprogrammingshit.drmcnasty.com/?p=12
sudo apt-get install g++
sudo apt-get install build-essential
我对ruby一无所知所以你需要更多地研究这个解决方案,但毕竟在ubuntu 14.04上安装了“therubyracer 0.12.2”。我希望它可以提供帮助。
答案 1 :(得分:1)
只需从您的计算机上卸载两个libv8
Terminal
gem uninstall libv8
在终端中,系统会提示您选择要卸载的版本,如下所示:
选择3并按Enter键(返回键)。它将卸载您机器中安装的两个libv8版本。
现在,在您的Gemfile中只包含不带libv8的therubyracer和bundle install
gem 'therubyracer'
bundle install
它会起作用
答案 2 :(得分:0)
尝试将node.js作为运行时javascript环境,而不是libv8。
如果您坚持使用libv8,请不要指定版本。似乎版本上存在冲突。例如在您的Gemfile中:
gem 'therubyracer'
gem 'libv8'
答案 3 :(得分:0)
在生产服务器的命令行执行
gem install therubyracer