尽管事实上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"
答案 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输出是否不同。