我不知道这是一个错误还是什么。但是我正确设置了linked_files
和linked_dirs
,我想,就像在deploy.rb
我所拥有的那样:
append :linked_files, 'config/database.yml', 'config/secrets.yml'
append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system'`
cap production deploy:check:linked_dirs
成功运行,但是
cap production deploy:check:linked_files
生成此错误=>
linked file home/deploy/appname/shared/config/database.yml does not exist on IP
,永远。
cap production doctor
打印:
:linked_dirs ["log", "tmp/pids", "tmp/cache", "tmp/sockets", "public/system", "public/assets"]
:linked_files ["config/database.yml", "config/secrets.yml"]
我已经多次SSH到我的服务器ssh user@IP
,以确认我是否在shared / config文件夹中的database.yml文件。它总是存在,我甚至在Vim打开它确认。 存在。
我尽力解决这个问题,但无法找到解决方案。有人帮忙。
# deploy.rb
set :application, 'appname'
set :repo_url, 'git@github.com:username/repo.git'
set :deploy_to, '/home/deploy/appname'
append :linked_files, 'config/database.yml', 'config/secrets.yml'
append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system'
我有我的Gemfile:
gem 'capistrano', '~> 3.7.1', require: false
gem 'capistrano-rails', '~> 1.2', require: false
gem 'capistrano-passenger', '~> 0.2.0', require: false
gem 'capistrano-rbenv', '~> 2.1', require: false
答案 0 :(得分:0)
您是否在服务器上存档了database.yml?
路径示例
path_to_your_app/shared/config/database.yml
你能展示deploy.rb文件吗?
<强>更新强>
尝试更改此字符串
append :linked_files, 'config/database.yml', 'config/secrets.yml'
append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system'
到
set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml')
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system' )
答案 1 :(得分:0)
对于将来可能面临此问题的任何人,请确保您始终在本地计算机上编辑文件,而不是像我一样在您的服务器上编辑文件,因为在我的服务器的deploy.rb
文件中,我有一行{{1} },这是正确的,但在我的本地机器上我有set :deploy_to, '/home/deploy/appname'
,在 home 之前没有前导斜杠。
Matt在评论中指出,set :deploy_to, 'home/deploy/appname'
是一个存在于本地计算机上的程序,因此cap
将从本地计算机查找capistrano配置并从您的git仓库编译资产。因此,无论何时需要更改,都可以在本地计算机上执行此操作并确保提交。