生产服务器: Ubuntu 12.04、Apache、Passenger、RVM、Ruby 2、Rails 4、Postgresql
在cap deploy:cold (我更改了用户名和IP)之后,我得到了这个错误:
* 2013-03-04 12:17:56 executing `deploy:cold'
* 2013-03-04 12:17:56 executing `deploy:update'
** transaction: start
* 2013-03-04 12:17:56 executing `deploy:update_code'
updating the cached checkout on all servers
executing locally: "git ls-remote git@github.com:user/captest.git master"
command finished in 4655ms
* executing "if [ -d /home/user/apps/captest/shared/cached-copy ]; then cd /home/user/apps/captest/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 0ad1ab0c9e73b41959981a1415f71a42e80c0443 && git clean -q -d -x -f; else git clone -q git@github.com:user/captest.git /home/user/apps/captest/shared/cached-copy && cd /home/user/apps/captest/shared/cached-copy && git checkout -q -b deploy 0ad1ab0c9e73b41959981a1415f71a42e80c0443; fi"
servers: ["192.33.33.333"]
[192.33.333.333] executing command
command finished in 5870ms
copying the cached version to /home/user/apps/captest/releases/20130304111807
* executing "cp -RPp /home/user/apps/captest/shared/cached-copy /home/user/apps/captest/releases/20130304111807 && (echo 0ad1ab0c9e73b41959981a1415f71a42e80c0443 > /home/user/apps/captest/releases/20130304111807/REVISION)"
servers: ["192.33.333.333"]
[192.33.333.333] executing command
command finished in 122ms
* 2013-03-04 12:18:07 executing `deploy:finalize_update'
triggering before callbacks for `deploy:finalize_update'
* 2013-03-04 12:18:07 executing `deploy:assets:symlink'
* executing "rm -rf /home/user/apps/captest/releases/20130304111807/public/assets && mkdir -p /home/user/apps/captest/releases/20130304111807/public && mkdir -p /home/user/apps/captest/shared/assets && ln -s /home/user/apps/captest/shared/assets /home/user/apps/captest/releases/20130304111807/public/assets"
servers: ["192.33.333.333"]
["192.33.333.333"] executing command
command finished in 134ms
* 2013-03-04 12:18:07 executing `bundle:install'
* executing "cd /home/user/apps/captest/releases/20130304111807 && bundle install --gemfile /home/user/apps/captest/releases/20130304111807/Gemfile --path /home/user/apps/captest/shared/bundle --deployment --quiet --without development test"
servers: ["192.33.333.333"]
[192.33.333.333] executing command
** [out :: 192.33.333.333] sh: 1:
** [out :: 192.33.333.333] bundle: not found
** [out :: 192.33.333.333]
command finished in 110ms
*** [deploy:update_code] rolling back
* executing "rm -rf /home/user/apps/captest/releases/20130304111807; true"
servers: ["192.33.333.333"]
[192.33.333.333] executing command
command finished in 118ms
failed: "sh -c 'cd /home/user/apps/captest/releases/20130304111807 && bundle install --gemfile /home/user/apps/captest/releases/20130304111807/Gemfile --path /home/user/apps/captest/shared/bundle --deployment --quiet --without development test'" on 192.33.333.333我基本上遵循了铁路广播一集“部署到副总裁”的说明。这是我的deploy.rb文件:
require "bundler/capistrano"
server "192.33.333.333", :web, :app, :db, primary: true
set :application, "captest"
set :user, "user"
set :deploy_to, "/home/#{user}/apps/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false
set :scm, "git"
set :repository, "git@github.com:user/#{application}.git"
set :branch, "master"
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
after "deploy", "deploy:cleanup" # keep only the last 5 releases
namespace :deploy do
task :start do; end
task :stop do; end
task :restart, roles: :app, except: {no_release: true} do
run "touch #{deploy_to}/current/tmp/restart.txt"
end
task :setup_config, roles: :app do
sudo "ln -nfs #{current_path}/config/apache.conf /etc/apache2/sites-available/#{application}"
run "mkdir -p #{shared_path}/config"
put File.read("config/database.example.yml"), "#{shared_path}/config/database.yml"
puts "Now edit the config files in #{shared_path}."
end
after "deploy:setup", "deploy:setup_config"
end我尝试了直接从服务器上捆绑安装,但不知道在哪里,因为我对应用程序结构感到困惑。我还尝试了'require rvm/capistrano‘,但也得到了错误。
发布于 2013-03-05 05:21:16
您仍然没有看到真正的错误是什么。
如果cap:-v命令没有告诉您真正的问题,那么ssh进入服务器并运行命令:cd /home/user/apps/captest/releases/20130304111807 && bundle install --gemfile /home/user/apps/captest/releases/20130304111807/Gemfile --path /home/user/apps/captest/shared/bundle --deployment --quiet --without development test
听起来你的ruby环境可能没有在服务器上正确设置。
编辑:实际上,如果它被删除了,它可能不会工作。我遇到了类似的问题,我通过手动将项目克隆到我的生产服务器并运行bundle install来调试任何问题来解决它。
发布于 2013-03-05 08:46:02
您需要在目标服务器上安装bundler。
gem install bundler它通常是您需要以这种方式安装的唯一gem,因为它不能自行安装。
这个要点并不完全适合您的需求,但这是我引导Ruby2.0Ubuntu服务器的方法,可能会对您有所帮助:https://gist.github.com/cmaitchison/4083459
发布于 2013-03-12 22:55:13
我遇到了同样的问题,并决定了一个解决方案。
在您的服务器上,卸载所有版本的Bundler。系统将提示您删除可执行文件。选择yes。然后是gem install bundler,它应该安装1.3.2或更高版本。
在Gemfile中,确保源文件是https,而不是http。source 'https://rubygems.org'
引用:https://github.com/carlhuda/bundler/issues/2378#issuecomment-14714639
https://stackoverflow.com/questions/15191332
复制相似问题