簡體   English   中英

Capistrano的Rails部署失敗

[英]Rails deployment with Capistrano failing

對於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

您在共享目錄中丟失了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文件中。

保存文件即可開展業務。

您應該在沒有任何名稱空間的情況下調用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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM