【发布时间】:2010-01-04 19:48:54
【问题描述】:
使用 capistrano,我正在将 Rails 应用程序从 Mac OS X 10.5 部署到 CentOS 5.2
请注意,deploy.rb 和服务器环境在一年多的时间里没有变化。
在我们的 deploy.rb 文件中有一个名为 upload 的任务:
put(File.read( file ),"#{shared_path}/#{filename}", :via => :scp)
每次都会失败,但有以下异常:
No such file or directory - /srv/ourapp/releases/20100104194410/config/database.yml
我的 config/database.yml 本地副本无法正确上传。我已经确认这不是我们的互联网连接,因为这发生在三个不同的连接和两个不同的系统上。
我也尝试将 put() 换成 upload() 但得到相同的结果;此外,删除 :via => :scp 和/或尝试强制 :sftp 也同样失败。
相关信息:
$ 上限 -V Capistrano v2.5.10
$ 红宝石 -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9.6.0]
【问题讨论】:
-
您能否提供更多有关“上传”任务的背景信息?它是仅上传 database.yml 文件还是还上传其他文件?其他文件是否正确上传?另外,您能否从 Capistrano 的错误消息中包含更多信息?尽可能多的输出会有所帮助。
-
只是database.yml文件。这是完整的错误信息...文件成功上传到src路径:
$ cat /srv/app/shared/database.yml | wc -l -> 99我也可以验证dest路径是否存在。 -
这个错误是从哪里来的?这是您从 Rails 应用程序本身获得的东西,还是在 Capistrano 部署期间获得的东西?我以为是在部署期间,但这没有意义,现在我想多了,因为
put命令被放入共享目录,并且找不到文件错误在发布目录中.
标签: ruby-on-rails deployment capistrano