首页 > 解决方案 > Capistrano 部署找不到 Gemfile

问题描述

我正在尝试使用 Capistrano 部署 RoR 应用程序,部署命令一直执行到找不到 Gemfile 的地步。我正在从 Gemfile 实际上存在的应用程序根目录执行此命令。我还在 deploy.rb 文件中指定了 Gemfile 位置。下面分别是命令和输出以及我的 deploy.rb 文件。我一直在寻找要编辑的位置或文件,以将失败的 Capistrano 命令指向正确的文件,但我的结果是空的。如果有人可以提供帮助,我将不胜感激。

Capistrano 部署命令:

cards@cards:/data/cards/current/src$  bundle exec cap staging deploy BRANCH=wip/devenvupdates
    triggering load callbacks
  * 2021-03-19 19:21:42 executing `staging'
    triggering start callbacks for `deploy'
  * 2021-03-19 19:21:42 executing `multistage:ensure'
  * 2021-03-19 19:21:42 executing `deploy'
  * 2021-03-19 19:21:42 executing `deploy:update'
 ** transaction: start
  * 2021-03-19 19:21:42 executing `deploy:update_code'
    executing locally: "git ls-remote https://oauth2:x9Fnf1MnfTZV94jAHW-c@cards.grayanalytics.io/asanders/cards.git wip/devenvupdates"
    command finished in 978ms
  * executing "git clone -q https://oauth2:x9Fnf1MnfTZV94jAHW-c@cards.grayanalytics.io/asanders/cards.git /var/www/cards/releases/20210319192143 && cd /var/www/cards/releases/20210319192143 && git checkout -q -b deploy 5325cc733b1543fc806eb3df38f4a9a426f2ab81 && (echo 5325cc733b1543fc806eb3df38f4a9a426f2ab81 > /var/www/cards/releases/20210319192143/REVISION)"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
    command finished in 23190ms
  * 2021-03-19 19:22:07 executing `deploy:finalize_update'
    triggering before callbacks for `deploy:finalize_update'
  * 2021-03-19 19:22:07 executing `bundle:install'
  * executing "cd /var/www/cards/releases/20210319192143 && bundle install --gemfile /var/www/cards/releases/20210319192143/src/Gemfile --path /var/www/cards/shared/bundle --deployment --quiet --without development test"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
    command finished in 512ms
  * 2021-03-19 19:22:07 executing `deploy:assets:symlink'
  * executing "rm -rf /var/www/cards/releases/20210319192143/public/assets && mkdir -p /var/www/cards/releases/20210319192143/public && mkdir -p /var/www/cards/shared/assets && ln -s /var/www/cards/shared/assets /var/www/cards/releases/20210319192143/public/assets"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
    command finished in 204ms
  * executing "chmod -R -- g+w /var/www/cards/releases/20210319192143 && rm -rf -- /var/www/cards/releases/20210319192143/public/system && mkdir -p -- /var/www/cards/releases/20210319192143/public/ && ln -s -- /var/www/cards/shared/system /var/www/cards/releases/20210319192143/public/system && rm -rf -- /var/www/cards/releases/20210319192143/log && ln -s -- /var/www/cards/shared/log /var/www/cards/releases/20210319192143/log && rm -rf -- /var/www/cards/releases/20210319192143/tmp/pids && mkdir -p -- /var/www/cards/releases/20210319192143/tmp/ && ln -s -- /var/www/cards/shared/pids /var/www/cards/releases/20210319192143/tmp/pids"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
    command finished in 741ms
    triggering after callbacks for `deploy:update_code'
  * 2021-03-19 19:22:08 executing `deploy:assets:precompile'
    triggering before callbacks for `deploy:assets:precompile'
  * 2021-03-19 19:22:08 executing `deploy:assets:update_asset_mtimes'
  * executing "[ -e /var/www/cards/shared/assets/manifest.yml ] && cat /var/www/cards/shared/assets/manifest.yml || echo"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
    command finished in 208ms
  * 2021-03-19 19:22:08 executing `link_shared'
  * executing "ln -nfs /var/www/cards/shared/system /var/www/cards/releases/20210319192143/src/public/system"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
    command finished in 202ms
  * executing "ln -s /var/www/cards/shared/solr/data /var/www/cards/releases/20210319192143/src/solr/data"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
    command finished in 743ms
  * executing "ln -s /var/www/cards/shared/cache /var/www/cards/releases/20210319192143/tmp/cache"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
    command finished in 241ms
  * executing "ls -x /var/www/cards/releases"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
    command finished in 218ms
  * executing "cd -- /var/www/cards/releases/20210319192143 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile && cp -- /var/www/cards/shared/assets/manifest.yml /var/www/cards/releases/20210319192143/assets_manifest.yml"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
 ** [out :: 127.0.0.1] Could not locate Gemfile
    command finished in 280ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/www/cards/releases/20210319192143; true"
    servers: ["127.0.0.1"]
    [127.0.0.1] executing command
    command finished in 359ms
failed: "rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-1.9.3' -c 'cd -- /var/www/cards/releases/20210319192143 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile && cp -- /var/www/cards/shared/assets/manifest.yml /var/www/cards/releases/20210319192143/assets_manifest.yml'" on 127.0.0.1

deploy.rb 文件:本文特意删除了 Git 存储库路径。

require 'rvm/capistrano'
require 'bundler/capistrano'
load 'deploy/assets'

set :rvm_ruby_string, 'ruby-1.9.3'
set :rvm_type, :system
set :branch, ENV['BRANCH'] if ENV['BRANCH'] 

#
# User and SSH configuration
#
# private SSH key (id_rsa) should be in /home/cards/.ssh/
ssh_options[:forward_agent] = true
ssh_options[:keys] = [File.join(ENV["HOME"], ".ssh", "id_rsa")]
set :user, 'cards'
set :use_sudo, false

set :whenever_command, 'bundle exec whenever'
require 'whenever/capistrano'

set :stages, %w{staging production}
set :default_stage, 'staging'
require 'capistrano/ext/multistage'

set :application, 'cards'
set :repository, "<intentionally-removed>"

# Locally, we want to point to the remote repository
set :scm, :git
set :deploy_to, "/var/www/#{application}"

# Specify location of Gemfile
set :bundle_gemfile, "src/Gemfile"

#
# Application deployment!
#
namespace :deploy do
  task :start do ; end
  task :stop do ; end

  desc 'Restart the application'
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end

#
# YARD documentation!
#
namespace :yard do
  desc 'Start the YARD documentation server'
  task :start do
    run "cd #{current_path}; yard server --daemon"
  end

  desc 'Stop the YARD documentation server'
  task :stop do
    run "kill -9 `ps -A | grep yard | awk '{print $1}'`"
  end

  desc 'Restart the YARD documentation server'
  task :restart do
    stop
    start
  end
end

# Run pre-symlink tasks
before 'deploy:assets:precompile', :link_shared

# Start up the app
after :deploy, :ping_app

desc 'Link in shared resources'
task :link_shared do
  # Link database configuration
  run "ln -s #{File.join shared_path, 'config', 'database.yml'} #{File.join release_path, 'src/config', 'database.yml'}"
  # Link paptrail file 'system' folder
  run "ln -nfs #{File.join shared_path, 'system'} #{File.join release_path, 'src/public', 'system'}"
  # Link solr (search) files
  run "ln -s #{File.join shared_path, 'solr', 'data'} #{File.join release_path, 'src/solr', 'data'}"
  # Link rails cache
  run "ln -s #{File.join shared_path, 'cache'} #{File.join release_path, 'tmp', 'cache'}"
end

desc 'Send a request to the server (starts the app)'
task :ping_app do
  # run "curl -k -silent https://#{domain} > /dev/null"
end

标签: ruby-on-railsrubycapistranorvm-capistrano

解决方案


推荐阅读