【发布时间】:2019-04-25 13:55:44
【问题描述】:
Capistrano production.rb 文件执行 3 个任务
composer install --no-dev
mkdir 存储
上传! “.env.production”、“.env”
前2个都执行了,但是上传失败:“No such file or directory”。
我能够从命令行成功地 scp 文件。
如何将文件复制到当前发布目录?
$ cap --version
Capistrano Version: 3.11.0 (Rake Version: 12.3.1)
$ cap production deploy
...
01 mkdir -p ~/public_html/app/releases/20181122210112
...
composer install --no-dev
...
mkdir storage
...
SSHKit::Runner::ExecuteError:
Exception while executing as me@site.com:
scp: ~/public_html/app/releases/20181122210112/.env:
No such file or directory
DEBUG Uploading .env.production 0.0%
...
$
从命令行成功 scp 文件:
$ scp .env.production me@site.com:~/public_html/app/releases/20181122210112/.env
生产.rb
# use absolute path
set :deploy_to, "/home/user/public_html/app"
namespace :deploy do
desc "Install app dependencies with composer"
after :updated, :build do
on roles(:web) do
within release_path do
execute :composer, "install --no-dev"
execute :mkdir, "storage"
end
end
end
end
namespace :deploy do
desc "Copy Env"
after :finished, :copy do
on roles(:all) do
upload! ".env.production", "#{release_path}/.env"
end
end
end
【问题讨论】:
-
使用 ~/homedir 相对路径在 Capistrano 中不起作用,至少对于上传而言!方法。 ~ 是 Bash 快捷方式,不是 SCP,所以 SCP 找不到目录。绝对路径集 :deploy_to, "/home/user/public_html/app" 解决了这个问题。
标签: ruby-on-rails ruby deployment rake capistrano3