2009-02-02 224 views
1

我已經繼承了一個有問題的Ruby on Rails應用程序。我在Rails上閱讀了一些書的一半,但還沒有看到一些問題的答案。Ruby on Rails新手

  1. 什麼是備份應用程序的最佳方法?我可以只是tar -cvzf app.tgz app?我還不知道應用程序是否有sqlite3數據庫或連接到數據庫服務器。

  2. 將應用程序移動到另一臺服務器進行測試的最佳方式是什麼?再次,我不知道它是否是sqlite3或支持它的數據庫服務器。

感謝,

邁克爾

更新:是的,我將使用版本控制。現在沒有任何權利。我想我想知道的問題是:app目錄的可移植性如何;如果我想將整個應用程序移動到另一臺計算機上,我是否需要隨身攜帶其他任何東西?

回答

2

我會看看Capistrano - 這是選擇的部署/管理工具。

它的核心是從源代碼控制中獲取應用程序,部署和配置目標服務器,並運行任何數據庫遷移。

您可以使用它指向多個服務器(如測試,分段和生產)。

要回答您的實際問題,您可以通過簡單地複製Rails目錄(注意:不是只是應用程序目錄,但也是父目錄)來移動您的應用程序。你的數據庫需要單獨管理 - 對於sqlite,你可以抓住這些文件,如果你正在使用MySQL,你可能會轉儲數據庫並在下一臺服務器上重新配置。

0

對於這兩個,我會建議一個版本管理系統。 也許Subversion

這就是我所做的,出於類似的原因。

如果您查看config/database.yml中的數據庫設置,您會發現正在使用的任何數據庫。如果是sqlite,只要確保它是Subversion存儲庫的一部分。

除此之外,當您在另一臺服務器上執行導出或檢出時,只要確保服務器可以訪問數據庫,無論它在哪裏。

+0

更具體地說「數據庫設置」的位置。他是一個新手。 – 2009-02-02 20:39:57

0

版本控制應該是一個好的開始。你應該立刻知道什麼是後備數據庫,並確保你不僅有1個數據庫文件/服務器,但有第二個測試實例。不要亂用生產數據。

0

要「備份」應用程序的代碼,您可以使用git與http://github.com。這給你一個場外區域,你可以把你的代碼,但我認爲你必須支付私人存儲庫(約12美元/月)。或者,只需在辦公室的另一個盒子上設置一個git服務器並將其託管在那裏。

「數據庫設置」保存在config/database.yml文件中,它會告訴你需要了解數據庫的信息。

3

我還不知道應用程序是否有sqlite3數據庫或連接到數據庫服務器。

查看config目錄下的database.yml文件。適配器線會告訴你它使用的是哪個數據庫。

0

GIT(或SVN)+ Capistrano的代碼,數據也有選擇:

  • 有傾倒你的應用程序數據庫和資產數Rails插件。我最喜歡的是github.com/toy/dump。您可以運行rake dump:createrake dump:restore。最令人興奮的是capistrano集成 - cap dump:mirror:down下載應用程序資產和數據庫,它在本地機器上創建您的網站克隆。

  • 如果您需要自動備份您的應用程序以保證睡眠良好,我會建議您使用Backup My App服務。這是用於Rails應用程序自動備份的完整解決方案,您只需安裝他們的插件,並自動處理剩餘的過程。他們將備份歷史記錄保留數週,您可以通過瀏覽器瀏覽它們並自動恢復其中的任何一個。

3

一個很好的方法來備份代碼我發現是使用Git並推送到上存儲的Dropbox的純倉庫(http://getdropbox.com

的工作流程是這樣的(假設基於Unix的系統像OSX,如果Windows,相應地調整路徑)

創建本地應用程序,讓從它混帳回購協議:

cd ~/Rails 
rails my_app 
cd my_app 
git init 
git add . 
git commit -m "first commit" 

然後在你的Dropbox目錄,請純倉庫(我用了下它叫做「混帳」目錄)

cd ~/Dropbox/git 
mkdir my_app.git 
cd my_app.git 
git init --bare 

現在回到你的應用程序,並添加Dropbox的爲起點,推動它

cd ~/Rails/my_app 
git remote add origin ~/Dropbox/git/my_app.git 
git push origin master 

後您在變化您的〜/ Rails目錄,只需推入Dropbox回購站,它將備份到他們的服務器上(並且您可以輕鬆地在所有已連接到Dropbox的計算機上共享回購)

1

您可以複製整個目錄。然而,通常的做法是先將你的Rails安裝和你的寶石「凍結」到目錄中(如果尚未完成)。這可以確保您複製應用程序的測試服務器擁有並使用完全相同的Rails版本和安裝的任何gem。

如果這樣做了,你應該有一個vendor/rails /目錄。

您可以通過運行「凍結」你的Rails:

rake rails:freeze:gems 

你還需要確保Ruby是相同或兩臺主機上的一個類似的版本。我在1.8.7和1.9.1上遇到了麻煩 - 記住它。