2015-02-11 177 views
0

我對RoR非常陌生,並且將這些應用程序部署到生產環境中,所以我一直在做相當多的閱讀。Capistrano失敗導軌部署

有一個問題,我似乎無法通過但是。在我的調查過程中,我發現了SO的一個線索,表明Capistrano v3.x的行爲發生了變化,這使一些人感到困惑。

線程詳細要做的一件事是實現遠程文件檢查,如果在部署過程中不存在,則聲明要上載的本地文件(這是我的解釋)。

下加入到我的配置/ 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 [email protected] 
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 [email protected] 
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 [email protected]: scp: /home/deploy/--------/shared/deploy:config/database.yml: No such file or directory 

我不知道100%,但在我看來,它的自動插入與路徑:是擺脫劇本。

任何指導表示讚賞!

由於提前,

Gabrial

回答

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' 
+0

謝謝!就是這樣。雖然現在有一個新的問題需要調查,我還會繼續。乾杯! – 2015-02-11 18:58:22

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文件中。

保存文件,你就業務。

+0

從我的config /中存在的遠程存儲庫(即不包括的.gitignore文件) 生產database.yml文件: 適配器:mysql2 主機名:本地主機 用戶名:部署 密碼:' ----------' 數據庫:生產 – 2015-02-11 18:35:02

+0

這個問題肯定與該文件有關。甚至可以縮進。 – 2015-02-11 18:36:32

+0

評論的東西去除了格式,但是我的database.yml中的內容與你列出的內容相匹配,當然對相關位進行了更改 – 2015-02-11 18:39:33