Ruby on rails libv8和rails的捆绑安装问题

Ruby on rails libv8和rails的捆绑安装问题,ruby-on-rails,ruby,gem,bundler,Ruby On Rails,Ruby,Gem,Bundler,我对ruby 1.9.3p0(2011-10-30修订版33570)[x86_64-darwin10.8.0]的libv8gem有问题。gem安装libv8工作正常,我有 gem 'therubyracer' 在我的Gemfile中,它依赖于libv8,在我进行捆绑安装时安装了libv8: $ bundle exec gem list *** LOCAL GEMS *** actionmailer (3.1.3) actionpack (3.1.3) ... libv8 (3.3.10.4

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

gem 'therubyracer'
在我的
Gemfile
中,它依赖于
libv8
,在我进行
捆绑安装时安装了libv8

$ bundle exec gem list *** LOCAL GEMS *** actionmailer (3.1.3) actionpack (3.1.3) ... libv8 (3.3.10.4 x86_64-darwin-10) ... $bundle exec gem列表 ***本地宝石*** 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. $s 在任何源中都找不到libv8-3.3.10.4 运行“bundle install”安装丢失的gems。
它找不到
libv8
-这是32/64位问题吗?如果是,我该如何解决它?

您是否尝试过
bundle exec rails
?您在系统上安装的gems与项目运行所需的gems之间可能存在冲突。

我怀疑这是因为我的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}` $irb ruby-1.9.3-p0:001>`gem list`。每行{line{sudo env ARCHFLAGS=“-arch x86_64”gem安装{line.split.first}`
另一种解决方案是使用nodejs而不是therubyracer。您可以使用apt-get/yum在服务器上安装它,因此您的Gemfile不需要包含execjs或therubyracer。

我在从x86开发设备部署到x86_64服务器(使用capistrano)时遇到类似问题

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


我通过显式地将gem文件添加到/vendor/cache目录中修复了这一问题,使其与部署服务器体系结构一致。之后部署运行良好。

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

gem安装libv8-v3.11.8.17--with-system-v8

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

在此之后,您可能会面临安装therubyracer的问题

更新Gemfile的版本以指向最新版本,如下所示:

宝石“therubyracer”,“~>0.10.2”

我成功地安装了gem

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


gem安装rubyracer--version“~>0.10.2”

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


您可以直接安装它,也可以在系统中安装nodejs,上述错误应该得到解决。

如果您将gems打包到供应商/缓存中,那么在部署时,您将为您的开发环境的体系结构打包gems,例如32位或OSX。如果您随后使用打包的gems部署到生产环境中,您可以你需要额外的版本。