2

我正在尝试使用 capistrano 进行部署,但由于 ruby​​racer 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'

这一切都给出了相同的错误:

安装 ruby​​racer (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)

有任何想法吗?

4

4 回答 4

5

经过几个小时从 stackoverflow 尝试解决方案后,我从这个站点得到了一个简单的修复,只需要 2 个命令,作者提到

安装 therubyracer gem 时,您可能会在全新机器安装时遇到此问题。

http://usefulprogrammingshit.drmcnasty.com/?p=12

sudo apt-get install g++
sudo apt-get install build-essential

我对 ruby​​ 一无所知,因此您需要对此解决方案进行更多研究,但毕竟,“therubyracer 0.12.2”安装在 ubuntu 14.04 上。我希望它可以帮助。

于 2015-09-29T04:38:36.817 回答
1

只需从您的机器上卸载两个 libv8

Terminal

gem uninstall libv8

在终端中,系统会提示您选择要卸载的版本,如下所示:

  1. libv8 3.3.10.4 x86_64-linux
  2. libv8 3.11.8.4 x86_64-linux
  3. 全部

选择 3 并按回车键(回车键)。它将卸载您机器中安装的两个 libv8 版本。

现在,在您的 Gemfile 中只包含没有 libv8 的 ruby​​racer 和 bundle install

gem 'therubyracer'
bundle install

它会工作

于 2014-01-09T13:13:26.537 回答
0
  1. 尝试 node.js 作为你的运行时 javascript 环境,而不是 libv8。

  2. 如果您坚持使用 libv8,请不要指定版本。似乎版本有冲突。例如在您的 Gemfile 中:

    gem 'therubyracer'
    gem 'libv8'
    
于 2012-12-18T23:28:35.023 回答
0

在生产服务器的命令行执行

gem install therubyracer
于 2012-12-18T23:32:10.757 回答