部署模式下的Bundler找不到Gems

时间:2014-10-01 16:40:04

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

当我的Hoster迁移服务器时,我正在努力解决我的Capistrano安装问题:

Capistrano3 deploy fails after migrating the server

我遇到过的一件事,曾经在旧机器上工作得很好,现在看起来很麻烦是捆绑器:

我可以通过Capistrano成功运行bundler:

cap staging bundler:install

这导致服务器上的以下命令

/usr/bin/env bundle install --binstubs \ 
/var/www/mydomain.com/subdomains/dev/shared/bin \
--path /var/www/mydomain.com/subdomains/dev/shared/bundle \
--without development test \
--deployment

但是现在当我运行我的服务器cap staging deploy:start_passenger时会产生以下结果:

/usr/bin/env passenger start --socket tmp/passenger.socket -e staging -d

然后我的日志文件中出现错误,Rake丢失了:

Could not find rake-10.2.2 in any of the sources (Bundler::GemNotFound)
<pre>  /var/www/mydomain.com/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.7.3/lib/bundler/spec_set.rb:92:in `block in materialize&#39;

非常奇怪的是,ruby版本2.1.2(我真正使用的版本)在我的项目中显示2.1.0. I have no visible reference to 2.1.0`,而我的Gemfile包含:

ruby '2.1.2'

由于RBENV在服务器上使用,我可以运行rbenv versions,它显示我:

  system
* 2.1.2 (set by /var/www/mydomain.com/.rbenv/version)

那么奇怪的2.1.0来自哪里,如何确保我的服务器具有所需的所有依赖项。

1 个答案:

答案 0 :(得分:0)

我终于设法在新服务器上部署我的应用程序。

这些步骤是必需的。然而,由于我与它斗争了几个小时,其中一些可能是多余的:

  • gem install bundler && rbenv rehash:这是必需的,因为bundler是我在Rails App上下文中 依赖的之一的宝石。
  • 另一个是gem install passenger && rbenv rehash
  • 我现在正在使用https://github.com/capistrano/rbenv,但为此,我不得不从我的系统中擦除RVM,这是我不太热心的一步。
  • 我必须确保创建了当前的符号链接,因此我将其添加到deploy.rb

    after 'deploy:set_current_revision', 'deploy:symlink:release'
    
  • 我不得不删除一些共享目录:

    rm -fr bin
    rm -fr shared/bundle/
    rm -fr bundle