ruby-on-rails - 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
解决方案
推荐阅读
- amazon-web-services - 使用 AWS-CDK (python) 将多个现有安全组添加到 EC2
- python - Discord.py Massdm
- kubernetes - 在 Kubeadm 1.13.12 上生成新的 conf 文件
- javascript - 如何在 jQuery 中使用 for 循环替换 div 中的文本
- javascript - 如何在 React 和新页面中链接 2 个组件仍然有一个导航栏
- r - 将一列与多列进行比较并在 r 中用 dplyr 覆盖值
- for-loop - 如果网站上不存在查询,如何继续循环
- javascript - 如何在 Javascript 中设置默认参数而不影响其他参数
- python - Discord.py 如何让机器人向特定频道发送消息
- pandas - Pandas 在相似日期(+-7 天)合并 DataFrame