Capistrano:一些任务被触发但没有输出并且什么也不做
Capistrano: Some tasks are fired but has no output and does nothing
我正在尝试使用 Capistrano (3.6) 来部署我的应用程序,但有些任务不起作用,return 什么也没有。
当我执行 cap production deploy
时,版本已从我的 git 服务器正确下载,捆绑包安装正常,文件已链接。但是有些任务似乎被跳过了,比如 "deploy:migrate".
我尝试通过创建这两个任务来调试以查看部署期间发生的情况:
namespace :deploy do
before :migrate, :debug do
puts "BEFORE"
end
after :migrate, :debug do
puts "AFTER"
end
end
我看到我的任务在 bundle install 后正确挂钩:
00:03 bundler:install
01 ~/.rvm/bin/rvm 2.3.0 do bundle install --path /home/myuser/app/shared/bundle --without development test --deployment --qui…
✔ 01 myuser@myhost 2.380s
BEFORE
AFTER
00:05 deploy:symlink:release
但是如您所见,之前和之后之间没有任何反应,但是我有待处理的迁移。
如果我 运行 单独执行任务 cap production deploy:migrate
则没有输出,也没有任何反应。
当我在远程主机上直接运行命令RAILS_ENV=production bundle exec rails db:migrate
就可以了!
这与 puma:x、deploy:compile_asset 等其他一些任务的行为相同...
我的环境
我使用 RVM(单用户)和 ruby 2.3.0(双方)
我的应用是 Rails 5(仅限 api)
在我的 Gemfile 中
gem 'capistrano', '~> 3.6.0'
gem 'capistrano-rails', '~> 1.1'
gem 'capistrano-rvm', '~> 0.1.1'
gem 'capistrano3-puma', github: "seuros/capistrano-puma"
在我的 Capfile 中
require 'capistrano/rvm'
require 'capistrano/rails'
require 'capistrano/bundler'
require 'capistrano/puma'
require 'capistrano/puma/nginx'
我的deploy.rb
set :rvm_ruby_version, '2.3.0'
set :application, 'myapp'
set :repo_url, 'git@gitlab.mydomain.com:me/myapp.git'
set :deploy_to, '/home/myuser/app'
append :linked_files, 'config/database.yml', 'config/secrets.yml'
append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets'
set :nginx_config_name, 'myapp'
set :nginx_server_name, 'myapp.mydomain.com'
我的production.rb
server 'myhost', user: 'myuser', roles: %(app web db)
set :rails_env, 'production'
感谢您的帮助!
您在 production.rb
中打错了字。如果您 运行 cap production doctor
它会提醒您注意问题。
基本上你写的是%(app web db)
,而你的意思是%w(app web db)
。
另请参阅此答案:
我正在尝试使用 Capistrano (3.6) 来部署我的应用程序,但有些任务不起作用,return 什么也没有。
当我执行 cap production deploy
时,版本已从我的 git 服务器正确下载,捆绑包安装正常,文件已链接。但是有些任务似乎被跳过了,比如 "deploy:migrate".
我尝试通过创建这两个任务来调试以查看部署期间发生的情况:
namespace :deploy do
before :migrate, :debug do
puts "BEFORE"
end
after :migrate, :debug do
puts "AFTER"
end
end
我看到我的任务在 bundle install 后正确挂钩:
00:03 bundler:install
01 ~/.rvm/bin/rvm 2.3.0 do bundle install --path /home/myuser/app/shared/bundle --without development test --deployment --qui…
✔ 01 myuser@myhost 2.380s
BEFORE
AFTER
00:05 deploy:symlink:release
但是如您所见,之前和之后之间没有任何反应,但是我有待处理的迁移。
如果我 运行 单独执行任务 cap production deploy:migrate
则没有输出,也没有任何反应。
当我在远程主机上直接运行命令RAILS_ENV=production bundle exec rails db:migrate
就可以了!
这与 puma:x、deploy:compile_asset 等其他一些任务的行为相同...
我的环境
我使用 RVM(单用户)和 ruby 2.3.0(双方) 我的应用是 Rails 5(仅限 api)
在我的 Gemfile 中
gem 'capistrano', '~> 3.6.0'
gem 'capistrano-rails', '~> 1.1'
gem 'capistrano-rvm', '~> 0.1.1'
gem 'capistrano3-puma', github: "seuros/capistrano-puma"
在我的 Capfile 中
require 'capistrano/rvm'
require 'capistrano/rails'
require 'capistrano/bundler'
require 'capistrano/puma'
require 'capistrano/puma/nginx'
我的deploy.rb
set :rvm_ruby_version, '2.3.0'
set :application, 'myapp'
set :repo_url, 'git@gitlab.mydomain.com:me/myapp.git'
set :deploy_to, '/home/myuser/app'
append :linked_files, 'config/database.yml', 'config/secrets.yml'
append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets'
set :nginx_config_name, 'myapp'
set :nginx_server_name, 'myapp.mydomain.com'
我的production.rb
server 'myhost', user: 'myuser', roles: %(app web db)
set :rails_env, 'production'
感谢您的帮助!
您在 production.rb
中打错了字。如果您 运行 cap production doctor
它会提醒您注意问题。
基本上你写的是%(app web db)
,而你的意思是%w(app web db)
。
另请参阅此答案: