【问题标题】:Capistrano and Bundler problem - bundle: not foundCapistrano 和 Bundler 问题 - 捆绑:未找到
【发布时间】:2011-09-03 00:53:34
【问题描述】:

尝试使用捆绑/安装选项部署我的应用时,我不断收到以下错误:

    failed: "sh -c 'cd /home/deploy/swamp/releases/20110903003336 
    && bundle install --gemfile /home/deploy/swamp/releases/20110903003336/Gemfile 
    --path /home/deploy/swamp/shared/bundle --deployment --quiet 
    --without development test'" on 12.345.678.98

**更新 - 看起来我错过了一个错误:

[err :: 12.345.678.98] sh: bundle: not found

我已经在 deploy.rb 中尝试过这个:

require "bundler/capistrano"

我已经试过了:

namespace :bundler do
  task :create_symlink, :roles => :app do
    shared_dir = File.join(shared_path, 'bundle')
    release_dir = File.join(current_release, '.bundle')
    run("mkdir -p #{shared_dir} && ln -s #{shared_dir} #{release_dir}")
  end
  task :bundle_new_release, :roles => :app do
    bundler.create_symlink
    run "cd #{release_path} && bundle install --without test"
  end
end
after 'deploy:update_code', 'bundler:bundle_new_release'

我还通过以下方式将我的捆绑包移动到了供应商路径:

bundle install --path vendor/bundle

我不认为是权限问题,因为我可以直接在服务器上使用 deploy 和 bundle install 手动登录没有问题。这是整个 deploy.rb 文件:

require "bundler/capistrano"


 set :application, "swamp"
 set :domain, "12.345.678.98"
 set :repository,  "git@github.com:***/**.git"
 set :deploy_to, "/home/deploy/#{application}"
 set :rails_env, 'production'
 set :branch, "master"

 role :app, domain
 role :web, domain
 role :db,  domain, :primary => true

 set :deploy_via, :remote_cache

 set :scm, :git
 set :user, "deploy"
 set :runner, "deploy"
 ssh_options[:port] = ****
 set :use_sudo, false

 after "deploy", "deploy:cleanup"

namespace :deploy do

    desc "Restarting mod_rails with restart.txt"
    task :restart, :roles => :app, :except => { :no_release => true } do
        run "touch #{current_path}/tmp/restart.txt"
    end

    [:start, :stop].each do |t|
        desc "#{t} task is a no-op with mod_rails"
        task t, :roles => :domain do ; end
    end
end

task :after_update_code do  
 run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
end

【问题讨论】:

  • 您是否使用 RVM 或任何可能使您的会话在登录时与 capistrano 连接时不同的东西?
  • 不,我没有使用 RVM - 原来解决方案是显示 bundle 在 deploy.rb 文件中的位置。我对这个 $PATH 东西不是很了解。我觉得这个解决方案很奇怪,因为过去几周,我从来没有在部署文件中看到过这个选项。

标签: ruby-on-rails capistrano bundler


【解决方案1】:

我在这里找到了解决方案:

http://www.pastbedti.me/2011/06/change-path-environment-with-rails-and-capistrano/

在你的 config/deploy.rb 添加下面的 sn-p

    set :default_environment, {
      'PATH' => "/opt/ruby-enterprise/bin/:$PATH"
    }

然后我必须将 gemfile.lock 和 gemfile 添加到存储库和 BAM!

【讨论】:

  • 请注意,在第 3 章中,他们将(我无法理解的原因)更改为“default_env”
  • @BretWeinraub 非常感谢。我只是在那个上浪费了 3 个小时。对于使用 Capistrano 3 的用户,请注意变量名称的更改。
【解决方案2】:

过时

以下解决方案适用于 capistrano 2。对于版本 3 及更高版本,请使用 capistrano-rbenv plugin


假设您正在使用 bash shell 并在 bashrcprofile 文件的行中配置了 rbenv(全局在 /etc 中或逐个用户)问题是capistrano 不使用加载这些文件(最终加载 rbenv)所需的所谓登录 shell。

为此,您可能想要instruct capistrano to use such a shell

default_run_options[:shell] = '/bin/bash --login'

将其放入您的deploy.rb。与 fatfrog 的解决方案相比,它还具有通过不引入其他位置来管理您的 rbenv $PATH 添加项来让您保持干爽的好处。

【讨论】:

    【解决方案3】:

    这是因为 bashrc rbenv init 没有被执行。将此移动到部署者用户 bashrc 文件的顶部,它将解决问题:

    if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
        . /etc/bash_completion
    fi
    export PATH="$HOME/.rbenv/bin:$PATH"
    eval "$(rbenv init -)"
    

    【讨论】:

    • 我的.bashrc 文件中已经有这个,但它在底部。将它移到顶部就可以了。
    【解决方案4】:

    如果您的问题是服务器上的 RVM,请查看 rvm.io 提供的帮助: https://rvm.io/integration/capistrano/#gem

    【讨论】:

      【解决方案5】:
      1. 确保您的服务器中确实安装了 rbenv(听起来很荒谬,但在我的情况下确实发生了)

      2. 使用这个宝石:https://github.com/yyuu/capistrano-rbenv

      有关更多详细信息,请在此处查看我的答案:https://stackoverflow.com/a/15779928/445908

      【讨论】:

        【解决方案6】:

        我遇到了这个问题,在我的例子中,来自 deploy/production.rb 的 sn-p 如下:

        run "cd #{release_path} && bundle --without development test"
        

        必须按如下方式安装捆绑程序:

        sudo apt-get install bundler

        【讨论】:

        • sudo apt-get install bundler 将安装系统捆绑程序而不是 RVM
        猜你喜欢
        • 2014-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-10
        • 1970-01-01
        • 2019-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多