我对RoR很新,并将这些应用程序部署到生产环境中,所以我一直在做很多阅读。
然而,我似乎无法解决一个问题。在我的调查过程中,我发现了一个关于SO的线程,表明Capistrano v3.x的行为发生了变化,这让一些人感到困惑。
线程详细要做的一件事是实现远程文件检查,如果在部署期间它不存在,则声明要上传的本地文件(这是我的解释)。
我的config / deploy.rb中添加了以下内容:
namespace :deploy do
namespace :check do
task :linked_files => 'config/database.yml'
end
remote_file 'config/database.yml' => '/home/ubuntu/workspace/config/database.yml'
...
end
我在Cloud9 IDE中工作。当我运行cap production deploy
命令时,将返回部署日志中的以下摘录:
INFO [5cccd59b] Running /usr/bin/env mkdir -pv /home/deploy/--------/shared/config as deploy@---------------.com
DEBUG [5cccd59b] Command: /usr/bin/env mkdir -pv /home/deploy/--------/shared/config
INFO [5cccd59b] Finished in 0.068 seconds with exit status 0 (successful).
DEBUG [bd9797ee] Running /usr/bin/env [ -f /home/deploy/--------/shared/deploy:config/database.yml ] as deploy@---------------.com
DEBUG [bd9797ee] Command: [ -f /home/deploy/--------/shared/deploy:config/database.yml ]
DEBUG [bd9797ee] Finished in 0.067 seconds with exit status 1 (failed).
INFO Uploading /home/ubuntu/workspace/config/database.yml to /home/deploy/--------/shared/deploy:config/database.yml
DEBUG Uploading /home/deploy/--------/shared/deploy:config/database.yml 0.0%
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@---------------.com: scp: /home/deploy/--------/shared/deploy:config/database.yml: No such file or directory
我不知道100%,但在我看来,它自动插入的路径是:抛弃脚本。
感谢任何指导!
提前致谢,
Gabrial
答案 0 :(得分:1)
您在共享目录中缺少database.yml文件。此外,值得注意的是,如果您一直在开发环境中工作,那么您还必须配置database.yml文件以进行生产。检查以确保* yml未列在.gitignore文件中。
以下是一个示例生产条目:
production:
adapter: mysql2
database: production_for_my_app
username: root
password: ''
host: localhost
虽然您可能将database.yml文件签入版本控制,但在您的情况下,您需要在应用程序之外的共享目录中有一个。
要做到这一点,请将SSH插入您的方框
cd /home/rails/< your app >/shared/config
然后制作database.yml文件
touch database.yml
nano database.yml
然后将您在版本控制中拥有的database.yml副本的内容复制并粘贴到刚刚创建的database.yml文件中。
保存文件即可开展业务。
答案 1 :(得分:0)
您应该在没有任何名称空间的情况下调用remote_file
。
namespace :deploy do
namespace :check do
task :linked_files => 'config/database.yml'
end
...
end
remote_file 'config/database.yml' => '/home/ubuntu/workspace/config/database.yml'