gpt4 book ai didi

ruby-on-rails - capistrano put() 和 upload() 都失败了

转载 作者:行者123 更新时间:2023-12-04 19:46:34 25 4
gpt4 key购买 nike

使用 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 也同样失败。

相关信息:

$上限-VCapistrano v2.5.10

$ ruby -vruby 1.8.7 (2008-08-11 补丁级别 72) [i686-darwin9.6.0]

最佳答案

如果我没有正确理解你的问题,听起来 Capistrano 正在成功上传文件,但 Rails 无法启动,因为它找不到 deploy.yml 文件。这可能发生在 Capistrano 部署期间作为 deploy:restart 任务的一部分,使其看起来像 Capistrano 错误。

根据您提供的信息,Capistrano 正在将文件上传到 /svr/ourapp/shared/ 并且 Rails 几乎肯定会在 /svr/ourapp/releases/中寻找它20100104194410/配置/

如果是这种情况,您需要做的是创建一个任务,将共享数据库文件符号链接(symbolic link)到预期位置,然后添加一个 Hook ,以便任务将在 finalize_update 之后运行。例如:

task :symlink_database do
run "ln -s #{shared_path}/database.yml #{latest_release}/config/database.yml"
end

after 'deploy:finalize_update', :symlink_database

关于ruby-on-rails - capistrano put() 和 upload() 都失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2001730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com