2012-01-27 39 views
5

我遇到的问题与libv8宝石红宝石1.9.3p0(2011-10-30修订33570)[x86_64-darwin10.8.0]。创业板安装libv8工作正常,我有捆绑安装与libv8和rails的问题

gem 'therubyracer' 
Gemfile

,这已经在其上安装libv8依赖当我做了bundle install

 
$ bundle exec gem list 

*** LOCAL GEMS *** 

actionmailer (3.1.3) 
actionpack (3.1.3) 
... 
libv8 (3.3.10.4 x86_64-darwin-10) 
... 

但是当我运行:

 
$ rails s 
Could not find libv8-3.3.10.4 in any of the sources 
Run `bundle install` to install missing gems. 

它无法找到libv8 - 这是一个32/64位的问题?如果是这样,我该如何解决它?

回答

1

我怀疑这是因为我有一个32/64位不匹配。

我解决了这个有以下几点:

 
$ irb 
ruby-1.9.3-p0 :001 > `gem list`.each_line {|line| `sudo env ARCHFLAGS="-arch x86_64" gem install #{line.split.first}` 
+2

如果您将宝石包装到供应商/缓存中,那么当您部署时,您将拥有适合您开发环境架构的宝石 - 例如, 32位或OSX。如果您使用打包宝石部署到生产环境,则可能需要额外的版本。 – 2012-04-16 11:31:54

0

你试过bundle exec rails s?您系统上安装的宝石与项目运行所需的宝石之间可能存在冲突。

1

另一种解决方案是使用替代的NodeJS therubyracer。您使用apt-get/yum将其安装在服务器上,因此您的Gemfile不需要包含execjs或therubyracer。

1

我有一个类似的问题,从86开发框部署到x86_64的服务器(使用Capistrano的)

当我做了部署,我得到了同样的“不能在任何的发现libv8-3.3.10.4来源'信息。这是因为在x86机器上运行“捆绑包”只会将x86 gem复制到/ vendor/cache目录!

我通过明确地将linux x86_64 gem文件添加到/ vendor/cache目录来解决此问题,以便它可以与部署服务器体系结构一致。此后部署运行良好。

1

实际上,你可以安装在小牛该版本:

创业板安装libv8 -v 3.11.8.17 - --with系统-V8

你可以提供你想要安装任何libv8宝石版本。 。

这个你可能面临的问题与安装therubyracer然后

的Gemfile的

更新版本指向的最后一个版本,像这样经过:

宝石“therubyracer”,“〜> 0.10.2”

我能够成功安装宝石。

如果你想手动安装的宝石,你可以使用:

创业板安装therubyracer --version “〜> 0.10.2”

0

我通过安装的NodeJS(最新版本)解决了这个问题。它所做的是安装libv8 -dev库。因此,而不是安装宝石,你需要的是本地库。

您可以直接安装它,或者在您的系统中安装nodejs,并且应该解决上述错误。