2011-06-03 68 views
0

我一直在試圖獲取一個託管在EngineYard上的應用程序,並且遇到了連接到外部數據庫(不託管在engineyard上)的問題。在初始化程序或環境代碼中的Rails數據庫連接

我剛剛從engineyard那裏得到了一個響應,他們在它們的最後重新創建了database.yml文件,結果導致遠程數據庫連接的詳細信息丟失。從EngineYard的

我們的部署過程的一部分

反應會寫出一個database.yml文件,這樣就可以連接到我們爲您配置了數據庫。如果你通過SSH連接到你的實例,你可以在/data/mls_data_norm/current/config/database.yml看到我們爲你寫的那個。

如果你想配置這個,你需要做兩件事情之一。一種是設置不同的初始化程序或環境代碼,以連接到其他數據庫。其他(也許是首選)是使用自定義的廚師食譜來做到這一點。你可以閱讀更多關於做,在這裏: http://docs.engineyard.com/custom-chef-recipes.html

我不知道過了多久,我會在EngineYard的舉辦,我不喜歡比本地生產運行的不同代碼的想法。整個'食譜'的東西,讓我覺得,我會重寫這個連接。我確定有一種方法可以定義database.yml文件之外的數據庫連接,但我不知道如何,迄今爲止我的搜索沒有任何結果。

回答

0

database.yml的唯一目的是保持連接參數,因爲EngineYard做了一些愚蠢的事情,並不意味着你需要將連接參數移動到其他地方。

最好的解決方案是自己照顧自己的部署。花幾個小時閱讀capistrano文檔,您就可以開始使用了。它簡單,優雅,功能更強大。你很快就會使用capistrano做與你的主機提供的更多的部署相關的東西。

https://github.com/capistrano/capistrano/wiki

其他選項包括運行腳本部署後一遍覆蓋的database.yml並不會重新啓動服務器。

+0

當你說'照顧自己的部署'時,我假設你的意思是在linode,ec2或其他東西上構建自己的服務器。吸引我加入Rails的一件事是每個人都在談論部署在heroku或engineyard上是多麼容易。我同意主機覆蓋文件是'愚蠢的東西'。我應該在這裏做一些相當簡單的事情,而所有這些額外的層面都變得有些失控。 – pedalpete 2011-06-03 22:27:15

+0

我的意思是說你使用capistrano寶石來管理你的部署,而且這很容易!我不確定EngineYard是如何工作的,但是如果你有一個公共IP,你可以ssh來使用它,那麼使用capistrano應該是一件輕而易舉的事情。它是共享主機,你沒有shell訪問?在這種情況下,您應該與您的主機聯繫以獲得基於Capistrano的部署策略,或嘗試第二種策略,在該策略中運行將database.yml恢復到版本控制文件並重新啓動服務器的腳本。 – 2011-06-03 22:40:28

+0

我還沒有去過capistrano根。最終回到了linode並建立了一個股票服務器。我會在另一個時間到達卡皮斯特拉諾。謝謝 – pedalpete 2011-06-04 01:06:34

相關問題