首先介绍一下背景。

我一直致力于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 并遇到各种各样的问题。我最终完全吹走了Ruby并重新开始。这似乎有效。

问题是,在我提交代码后,另一个人获得最新信息后,他必须完成安装宝石的整个过程。

在RoR应用程序中管理gem和插件的最佳做法是什么?我不关心是否有多少文件被添加到SVN。磁盘空间和网络带宽很便宜。我只是不知道如何正确地做到这一点。

等到SVN。

我已经安装了RapidSVN,但是经常遇到文件夹被锁定的问题。有几次我意识到我的错误,其他人,我不知道为什么。但在这两种情况下,我无法修复它。我最终制作了我的代码备份,下载了一个新的工作副本,然后手动移动更改,并在将它们提交给项目时更聪明。

我昨晚实际上有点RTFM,发现我应该为我的回购创建一个书签,然后做一个“结账工作副本”。从那个书签。我不知道为什么,但是好的,这就是手册所说的......

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

我真的在寻找这个过程的一步一步。

修改的 我忘了提到,我使用NetBeans作为我的IDE,虽然我没有看到它有什么样的SVN支持,如果有的话。我看了RubyMine,并且很乐意使用它,但它现在看起来太不稳定了。

有帮助吗?

解决方案

对于插件,我个人建议只将它们粘贴在供应商文件夹中并将它们添加到SVN,就像您自己编写代码一样。活塞也是一个很好的解决方案,但是当所有常见的插件开始转移到github时活塞都被切断了(从那时起活塞一直不可靠)

对于宝石,希望你使用的是2或更高的轨道。您应该使用 config.gem config / environment.rb 中列出所需的gem。 这里有一堆关于该功能

这意味着如果您添加新的gem,下次您的同事更新时,他的rails应用将无法启动,直到他获得必要的宝石。然后,他可以使用 sudo rake gems:install

一步安装它们

您可以更进一步,将您的宝石放在供应商目录中。这通常称为“供应商一切。”。最简单的方法是列出您在 environment.rb 中使用的所有gem,如上所示,然后运行 rake gems:unpack 。然而,这种方法存在两个问题,所以我不想自己使用它。

  1. 如果您有10个应用程序,并且每个应用程序都有自己的宝石,那么您最终会在subversion中保留10个常见宝石副本,这会使您的所有网站更新速度变慢。
    这对您来说可能不是问题,或者可能值得忍受,这只是个人偏好。

  2. 某些gem(例如mongrel或hpricot)具有用C编写的本机扩展名。这意味着当您安装它们时,将下载 .c 源代码,并且 gcc 以专门为您的系统编译它。
    如果您在ubuntu上安装了本机C扩展,然后将其放在vendor文件夹中,稍后尝试在OS X上运行(或者甚至可能是不同版本的ubuntu),它很可能会破坏您的ruby进程并带来您的应用程序下来。结果 如果你所有的宝石都是纯红宝石,那么这不是问题,但这只是需要注意的事情。

其他提示

许多人使用活塞或沙漠管理插件并将宝石安装到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感觉更舒服,你可能想尝试一下SVN很好地集成的IDE,比如RadRails和NetBeans。 IDE有类似于Tortise的非常类似的图形SVN管理器,如果你想在cmd线上工作,只需找到一个简单的10分钟SVN教程,你应该好好去。

我从来没有听说过快速的SVN,而且普通的SVN工具一直在找我工作,几乎没有引起锁定文件夹的问题。

Orion提到必须重建在不同操作系统之间共享时已经出售的宝石 - 你可以使用gems:build rake任务自动重建它们。

首先,从命令行中找出svn。 svn-book 已上线。做svn状态或svn commit -m“blah”并不太难。如果使用OS功能删除或重命名文件,则会出现大多数问题。使用svn命令。

接下来,如果rapidvn不适合您,请尝试使用svn-workbench。讨厌说,但我见过的linux svn GUI工具都没有和tortoisesvn一样好。

插件和svn是一个问题。有一个名为活塞的工具旨在清除它,但我不使用它。我将插件检出到我的vendor / plugins目录中。如果出现了我真正想要的新版本,我会使用我可靠的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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top