我一直在試圖獲取一個託管在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文件之外的數據庫連接,但我不知道如何,迄今爲止我的搜索沒有任何結果。
當你說'照顧自己的部署'時,我假設你的意思是在linode,ec2或其他東西上構建自己的服務器。吸引我加入Rails的一件事是每個人都在談論部署在heroku或engineyard上是多麼容易。我同意主機覆蓋文件是'愚蠢的東西'。我應該在這裏做一些相當簡單的事情,而所有這些額外的層面都變得有些失控。 – pedalpete 2011-06-03 22:27:15
我的意思是說你使用capistrano寶石來管理你的部署,而且這很容易!我不確定EngineYard是如何工作的,但是如果你有一個公共IP,你可以ssh來使用它,那麼使用capistrano應該是一件輕而易舉的事情。它是共享主機,你沒有shell訪問?在這種情況下,您應該與您的主機聯繫以獲得基於Capistrano的部署策略,或嘗試第二種策略,在該策略中運行將database.yml恢復到版本控制文件並重新啓動服務器的腳本。 – 2011-06-03 22:40:28
我還沒有去過capistrano根。最終回到了linode並建立了一個股票服務器。我會在另一個時間到達卡皮斯特拉諾。謝謝 – pedalpete 2011-06-04 01:06:34