2017-03-22 57 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

謝謝你的澄清馬特,我已經編輯了答案 –