无法从供应商缓存安装Gems

时间:2012-02-09 22:06:19

标签: ruby-on-rails-3 capistrano bundler

尽管事实上Capistrano使用来自供应商缓存的标志--local gems执行捆绑安装,但未安装到共享捆绑路径中。而是通知我:

  

您的供应商/缓存目录中似乎缺少某些宝石。

     

在任何来源

中找不到libv8-3.3.10.4

libv8-3.3.10.4肯定位于供应商/缓存中。有谁知道为什么bundler不会从缓存中安装宝石?

Capistrano执行的完整命令在下面。

"cd /home/ari/apps/air/releases/20120209214139 && bundle install --gemfile /home/ari/apps/air/releases/20120209214139/Gemfile --path /home/ari/apps/air/shared/bundle --deployment --local --quiet --without development test"

1 个答案:

答案 0 :(得分:0)

来自bundle help install

--local
          Do not attempt to connect to rubygems.org,  instead  using  just
          the  gems already present in Rubygems' cache or in vendor/cache.
          Note that if a more appropriate platform-specific gem exists  on
          rubygems.org, it will not be found.

注意:libv8在首次安装时构建原生扩展。如果您为一个平台提供gem并尝试在另一个平台上使用它,这可能会导致问题。

服务器上的Rubygems缓存中不存在gem,或者部署中的vendor/cache中不存在gem。因此,如果您在vendor/cache目录中看到了gem,那么捆绑商可能不知道在哪里查找您的vendor/cache宝石。

cd /home/ari/apps/air/releases/20120209214139 && bundle list的输出是什么?如果它没有出现在那里,但你可以在服务器上找到它,那么你知道捆绑器不知道vendor/cache宝石在哪里。

尝试通过您的登录信息进行gem env,并通过Capistrano与gem env输出进行比较。查看GEM PATHS输出是否不同。