ruby-on-rails - 在 Ubuntu 上构建 Rails 应用程序时寻找 SVN 最佳实践

标签 ruby-on-rails ruby svn ubuntu rapidsvn

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.


7年前关闭。







Improve this question




首先介绍一下背景。

在我的整个开发生涯中,我一直在 MS 平台上工作。直到两周前,我从未启动过除 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 版本。无论哪种方式,我都为我正在使用的插件(社区引擎)安装了一堆 gem 。作为 *nix 的新手,我没有使用 sudo在安装它们并遇到各种问题时。我最终彻底摆脱了 Ruby 并重新开始。这似乎奏效了。

但问题是,在我提交我的代码之后,另一个人得到最新的,他必须经历安装 gems 的整个过程。

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

等到SVN。

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

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

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

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

编辑
我忘了提一下,我将 NetBeans 用于我的 IDE,虽然我还没有查看它有什么样的 SVN 支持(如果有的话)。我查看了 RubyMine,很想使用它,但它现在似乎太不稳定了。

最佳答案

对于插件,我个人建议将它们粘贴在 vendor 文件夹中并将它们添加到 SVN,就好像您自己编写代码一样。 Piston 也是一个很好的解决方案,但是当所有常用插件都开始迁移到 github 时,就放弃了它(piston 从那时起就不可靠了)

对于 gems,希望您使用的是 rails 2 或更高版本。您应该在 config/environment.rb 中列出您需要的 gem 。使用 config.gem . Here's a bunch of information about that feature

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

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

  • 如果您有 10 个应用程序并且每个应用程序都提供了他们的 gem,那么您最终会在 subversion 中保留 10 个通用 gem 的副本,这会使您的所有站点的更新速度变慢。
    这对您来说可能不是问题,或者可能值得忍受,这只是个人喜好。
  • 一些 gem(例如 mongrel 或 hpricot)具有用 C 编写的 native 扩展。这意味着当您安装它们时,.c源代码已下载,gcc运行以专门为您的系统编译它。
    如果您在 ubuntu 上安装了原生 C 扩展,然后将其放在 vendor 文件夹中,然后尝试在 OS X(甚至可能是不同版本的 ubuntu)上运行它,它很可能会使您的 ruby​​ 进程崩溃并带来您的应用程序下。
    如果您所有的 gem 都是纯 ruby ,那么这不是问题,但这只是需要注意的事情。
  • 关于ruby-on-rails - 在 Ubuntu 上构建 Rails 应用程序时寻找 SVN 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/284732/

    相关文章:

    ruby - Ruby 中的面向方面编程

    svn - 无法从 svn 预提交 Hook 生成输出

    ruby-on-rails - rails 4 : How to set cookies in redirect?

    ruby-on-rails - 使用每个 block 打印所有僵尸的名称

    mysql - 无法激活 mysql2 (~> 0.3.6),已在 Rails 3.1 中激活 mysql2-0.3.2

    ruby-on-rails - 使用 PayPal REST API,如何取消付款?

    ruby-on-rails - Rubocop:错误 - rubocop 返回退出代码 2

    java - 从静态类型到动态类型

    svn - 颠覆: what does "Target path does not exist" when merging mean?

    svn - "git add"等同于 svn?