2017-03-22 26 views
0

我不知道这是一个错误还是什么。但我有我的linked_fileslinked_dirs设置正确,我想,作为上deploy.rb我:链接文件/shared/config/database.yml不存在IP

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运行successsfully,但 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-ED到我的服务器ssh [email protected]几次,以确认我是否共享/ config文件夹database.yml文件。它总是在那里,我甚至在Vim上打开它来确认。它确实存在

我已经尽了全力来解决这一点,但无法找到解决方案。有人帮忙。

# deploy.rb 
set :application, 'appname' 
set :repo_url, '[email protected]: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

“home/deploy/appname ...”中是否缺少主要的斜杠?转录错字或部分路径?如果是后者,可能会使用多个根目录,并且您可能需要向'set:deploy_to“,home/deploy/appname”'中的值添加一个前置斜杠。 –

+0

注意:最初来自https://github.com/capistrano/capistrano/issues/1869 –

+0

实际上,终端中显示的错误中没有前导斜杠。但我在deploy.rb中将其设置为'set:deploy_to','/ home/deploy/appname''' –

回答

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') 
+0

我确实在给定的路径中有database.yml文件。我已经发布了上面的deploy.rb。好心检查。 –

+0

你从哪里得到这个配置? append:linked_files,'config/database.yml','config/secrets.yml' – Sivard

+0

从Gorails tut https://gorails.com/deploy/ubuntu/16.04#capistrano –

0

任何人谁可能在将来面对这种情况,请确保您始终在您的本地编辑文件机器,而不是像我那样在你的服务器上,因为在我的服务器的deploy.rb文件中,我有set :deploy_to, '/home/deploy/appname',这是正确的,但在我的本地机器上我有set :deploy_to, 'home/deploy/appname',没有在之前的主导斜杠

正如Matt在评论中指出的那样,cap是一个存在于本地计算机上的程序,因此cap production deploy将从您的本地计算机上查找capistrano配置并从您的git repo中编译资产。所以无论什么时候有什么改变,都要在你的本地机器上进行,一定要提交。

+0

说明:* capistrano配置*取自本地机器。部署的实际代码(即您的应用程序)始终从远程git存储库中获取。 –

+0

谢谢你的澄清马特,我已经编辑了答案 –