libv8和rails的bundle install问题

我遇到了与ruby 1.9.3p0(2011-10-30修订版33570)[x86_64-darwin10.8.0]的libv8 gem的问题。 gem安装libv8工作正常,我有

 gem 'therubyracer' 

在我的Gemfile ,这依赖于我Gemfile bundle install时安装的libv8

 $ bundle exec gem list

 ***当地gem***

动作制作者(3.1.3)
 actionpack(3.1.3)
 ...
 libv8(3.3.10.4 x86_64-darwin-10)
 ...

但是当我跑步时:

 $ rails s
在任何来源中都找不到libv8-3.3.10.4
运行`bundle install`来安装缺少的gem。

它找不到libv8 – 这是32/64位问题吗? 如果是这样,我该如何解决?

我怀疑这是因为我有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}`

我有一个类似的问题从x86开发盒部署到x86_64服务器(使用capistrano)

当我进行部署时,我得到了相同的“找不到任何来源的libv8-3.3.10.4”消息。 这是因为在x86机器上运行’bundle pack’只会将x86 gem复制到/ vendor / cache目录中!

我通过将linux x86_64 gem文件显式添加到/ vendor / cache目录来修复此问题,以便它与部署服务器体系结构一致。 之后部署运行良好。

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

您可以在Mavericks上实际安装该版本:

gem install libv8 -v 3.11.8.17 – –with-system-v8

您可以提供要安装的任何libv8 gem版本。

在此之后,您可能会遇到安装therubyracer的问题

更新Gemfile版本以指向最后一个版本,如下所示:

gem“therubyracer”,“〜> 0.10.2”

我能够成功安装gem。

如果要手动安装gem,可以使用:

gem install therubyracer –version“〜> 0.10.2”

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

我通过安装nodejs(最新版本)解决了这个问题。 它的作用是它安装了libv8 -dev库。 因此,而不是安装gem所需的是本机库。

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