2008-11-12 60 views
2

首先介紹一下背景。在Ubuntu上構建Rails應用程序時尋找SVN最佳實踐

我一直在爲我的整個開發職業開發MS平臺。直到2個星期前,我從未引導任何其他操作系統比98/XP/Vista。我很久以前就開始使用VSS,並在大約2年前對SVN進行了更改。使用SVN,我使用TortiseSVN並使用標準分支/標記/中繼設置。

我的項目也是自包含的,這意味着我可以去一個新的開箱,拉下一個存儲庫,打開VS,按F5鍵,它會運行(大部分時間)。所有的依賴關係都存儲在一個lib文件夾中,源代碼位於src文件夾等中。

爲了學習新事物,我決定構建一個Ruby on Rails應用程序,並創建了一個基於Ubuntu的開發機器。我有一臺SVN服務器正在運行,並正在與這個項目上的其他人一起工作。他碰巧在他的開發機器上使用了一臺Mac。

而現在的問題。

我似乎正在努力如何管理各種版本的ruby,rails和我正在使用的所有插件。我似乎也在努力在Ubuntu上使用SVN。

所以Ubuntu預裝了Ruby。我想說它是1.8.5版本。無論哪種方式,我有一堆寶石安裝我正在使用的插件(社區引擎)。作爲* nix的新手,我在安裝時沒有使用sudo,並遇到各種問題。我最終完全吹走了紅寶石並開始新鮮。這似乎工作。

問題是,當我提交我的代碼後,另一個人得到最新的,他必須經歷安裝寶石的整個過程。

在RoR應用程序中管理寶石和插件的最佳做法是什麼?我不關心一個zillion文件是否被添加到SVN。磁盤空間和網絡帶寬很便宜。我只是不知道如何正確地做到這一點。

那麼就SVN。

我已經安裝了RapidSVN,但是經常遇到鎖定文件夾的問題。有幾次我意識到我的錯誤,其他人,我不知道爲什麼。但在這兩種情況下,我無法修復它。我最終做出了我的代碼的備份,拉下了一個新的工作副本,然後手動移動了更改,並在將它們提交給項目時變得更智能。

我實際上RTFM昨晚有點發現我應該爲我的回購庫創建一個書籤,然後從該書籤中做一個「結帳工作副本」。我不知道爲什麼,但確定,這就是手冊所說...

在Ubuntu的RoR項目上使用SVN有哪些最佳做法?

我真的在尋找這一步的一步一步的過程。

編輯 我忘了提及,我爲我的IDE使用NetBeans,儘管我還沒有看到它有什麼樣的SVN支持,如果有的話。我看了一下RubyMine,很想用它,但現在看起來太不穩定了。

回答

4

對於插件,我個人建議只需將它們粘貼在供應商文件夾中,並將它們添加到SVN,就好像您自己編寫代碼一樣。活塞也是一個很好的解決方案,但是當所有通用插件開始轉向github時(活塞從那時起就不可靠),它就轉而離開它。

對於寶石,希望您使用的是rails 2或更高版本。您應該使用config.gem在您的config/environment.rb中列出您需要的寶石。 Here's a bunch of information about that feature

這意味着,如果你添加一個新的創業板,下一次你的同事更新,他的Rails應用程序將無法​​啓動,直到他得到了neccessary寶石。然後,他可以使用sudo rake gems:install

一步安裝它們。您可以進一步,將寶石放在供應商目錄中。這通常被稱爲「供應商的一切」。要做到這一點最簡單的方法是列出所有你在environment.rb如上使用的寶石,然後運行rake gems:unpack。但是,這種方法有兩個問題,所以我不想自己使用它。

  1. 如果有10個應用程序,他們每個供應商自己的寶石,你最終保持普通寶石的10個人副本中顛覆,這使得所有的更新您的網站的整體速度慢了很多。
    這對你來說可能不是問題,也可能值得考慮,這只是個人偏好。

  2. 一些寶石(如雜種或角度來說,Hpricot)有C語言編寫的原生擴展這意味着,當你安裝它們,在.c源代碼下載,並gcc獲取運行專門編譯它爲您的系統。
    如果安裝在Ubuntu原生C擴展,然後把它在供應商文件夾,後來就試圖在OS X上運行(甚至可能是不同版本的Ubuntu),這很可能會崩潰的Ruby進程,並把你的應用下降了。
    如果你所有的寶石都是純紅寶石的,那麼這不是問題,但它只是需要注意的事情。

+0

我喜歡這種方法。爲什麼寶石也不在供應商文件夾中?我似乎記得在我看到的屏幕上看到那裏的鐵軌寶石。儘管如此,我感到冷冷。 – 2008-11-12 20:28:08

1

許多人使用活塞或沙漠來管理插件並將寶石安裝到Rail本地供應商文件夾(存儲在SVN下)。

http://www.rubyinside.com/advent2006/12-piston.html http://pivotallabs.com/users/brian/blog/articles/459-build-your-own-rails-plugin-platform-with-desert

我還建議使用geminstaller這將有助於你都安裝所有相同的寶石和他們相同版本

http://geminstaller.rubyforge.org/

我使用SVN的命令行,但如果你可能更喜歡TortiseSVN,你可能想嘗試一下像RadRails和NetBeans那樣很好集成的SVN。 IDE具有非常類似於Tortise的圖形SVN管理器,如果你想在cmd行上找到一個簡單的10分鐘的SVN教程,那麼你應該很好。

我從來沒有聽說過快速的SVN和正常的SVN工具一直工作只是找到我,很少導致鎖定文件夾問題。

0

獵戶座提到必須重建不同的操作系統之間共享時,他們已經vendored寶石 - 你可以使用寶石:建立rake任務自動重建他們。

0

首先,從命令行中找出svn。 svn-book已上線。執行svn status或svn commit -m「blah」並不難。如果您使用操作系統功能刪除或重命名文件,則會出現大多數問題使用svn命令。

接下來,如果rapidsvn不適合你,請嘗試svn-workbench。討厭這麼說,但我見過的linux svn GUI工具都不如tortoisesvn。

插件和svn是一個問題。有一個名爲piston的工具,旨在清除這個,儘管我不使用它。我檢查了我的供應商/插件目錄中的插件。如果出現了我真正想要的新版本,我使用我可靠的update_plugin bash腳本更新插件:

#!/bin/bash 

# reinstall the plugin in an svn friendly way 
plugin="some_plugin" 
plugin_url="http://some_server/some_plugin/trunk" 

for f in site1 site2 site3 
do 
    echo $f 
    cd ~/rails/$f 

    svn delete vendor/plugins/$plugin 
    rm -rf vendor/plugins/$plugin 
    svn -m "remove $plugin" commit 
    script/plugin install $plugin_url 
    svn add vendor/plugins/$plugin 
    svn -m "add $plugin" commit 

done 
相關問題