IP上不存在链接文件/shared/config/database.yml

时间:2017-03-22 12:18:55

标签: ruby-on-rails nginx capistrano passenger capistrano3

我不知道这是一个错误还是什么。但是我正确设置了linked_fileslinked_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

2 个答案:

答案 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仓库编译资产。因此,无论何时需要更改,都可以在本地计算机上执行此操作并确保提交。