Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails IP上不存在链接文件/shared/config/database.yml_Ruby On Rails_Nginx_Capistrano_Passenger_Capistrano3 - Fatal编程技术网

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

Ruby on rails IP上不存在链接文件/shared/config/database.yml,ruby-on-rails,nginx,capistrano,passenger,capistrano3,Ruby On Rails,Nginx,Capistrano,Passenger,Capistrano3,我不知道这是一个错误还是什么。但是我已经正确设置了我的linked_文件和linked_dirs,我想,在deploy.rb上,我已经: cap生产部署:检查:链接目录成功运行,但 cap生产部署:检查:链接的_文件产生此错误=> 链接文件home/deploy/appname/shared/config/database.yml始终不存在于IP上 cap生产医生打印: 我已将SSH插入我的服务器SSHuser@IP多次以确认我是否在shared/config文件夹中有database.yml文

我不知道这是一个错误还是什么。但是我已经正确设置了我的linked_文件和linked_dirs,我想,在deploy.rb上,我已经:

cap生产部署:检查:链接目录成功运行,但 cap生产部署:检查:链接的_文件产生此错误=> 链接文件home/deploy/appname/shared/config/database.yml始终不存在于IP上

cap生产医生打印:

我已将SSH插入我的服务器SSHuser@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'
我的档案中有:

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

您的服务器上有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'


对于将来可能遇到这种情况的任何人,请确保始终在本地计算机上编辑文件,而不是像我那样在服务器上编辑文件,因为在我的服务器的deploy.rb文件中,我将行设置为:deploy_to,“/home/deploy/appname”,这是正确的,但在我的本地计算机上,我将:deploy_设置为“home/deploy/appname”,在回家之前没有前导斜杠


正如Matt在评论中指出的,cap是一个存在于本地机器上的程序,因此cap production deploy将从本地机器查找capistrano配置,并从git repo编译资产。因此,无论何时有任何需要更改的内容,都要在本地计算机上进行更改,并确保提交。

home/deploy/appname中缺少前导斜杠……是转录错误还是路径的一部分?如果是后者,则可能会使用多个根目录,您可能需要在set:deploy_to,home/deploy/appname中的值中添加一个带前缀的斜杠。注意:这最初来自Will,实际上,终端中显示的错误中没有前导斜杠。但是我在deploy.rb中把它作为'set:deploy_to',/home/deploy/appname:deploy_to的值是多少?根据错误,您的:deploy\u to似乎缺少前导斜杠。它给出:deploy\u to home/deploy/graduite。没有斜杠,但当我在服务器中手动检查deploy.rb文件时,它有一个前导斜杠。我的database.yml文件位于给定的路径中。我已经在上面发布了deploy.rb。请检查。你从哪里得到这个配置的?append:linked_文件'config/database.yml','config/secrets.yml'说明:capistrano配置取自本地计算机。部署的实际代码,即您的应用程序始终取自远程git存储库。感谢您的澄清,Matt,我已经编辑了答案
path_to_your_app/shared/config/database.yml
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' )