【问题标题】:How to manage a project on ruby on rails 2.3?如何在 ruby​​ on rails 2.3 上管理项目?
【发布时间】:2012-09-06 09:08:40
【问题描述】:

我在 Rails 2.3 上有一个大红宝石,由于速度慢和许多错误,它现在是一场灾难。我是唯一的程序员,因此每天我都在调试和扯掉头发。用户已经在使用该产品,但有很多错误和数据分散。

我在没有项目开发和管理方面的先验知识的情况下被雇用。现在,我正遭受更多加班和代码危机的困扰。

而且我在学习 Rails 时创建了这个应用程序,所以那里的代码对我来说变得陌生。

我该怎么办? 你有什么建议? 我还需要阅读哪些书籍?

我需要一些帮助。

谢谢。

【问题讨论】:

    标签: ruby-on-rails project-management ruby-on-rails-2


    【解决方案1】:

    我很乐意向您推荐升级到 Rails 3。尤其是因为有许多新功能并且一些事情得到了简化,这将有助于未来的可维护性。

    但是,不幸的是,鉴于您手头已经有更多,我犹豫(或者根本不能)实际推荐它。

    在这种情况下,您能做的最好的事情就是开始编写测试。如果有这么多错误,我不得不假设您没有测试或您的测试套件不完整。测试将帮助您确信在尝试修复其他问题时不会破坏任何内容。

    可以在Ruby on Rails Guides 找到默认的 Rails 测试框架。话虽如此,很多人更喜欢RSpec 测试框架。默认的 Rails 测试框架确实存在缺点(尤其是固定装置的脆弱性 - 尝试获取 factory gem,以及其他功能,例如模拟和期望以及嵌套上下文)。

    您应该阅读测试框架,并尝试一下。但是,尽早选择一个测试框架,然后开始测试所有内容!

    也许当您对自己的测试套件更有信心并修复了最重要的错误时,您应该更多地考虑升级 Rails 的路径 - 因为所有的 gem 都会继续前进,并逐渐放弃对 Rails 2.3 的支持,这意味着您将使用越来越旧的 gem,可能不再得到很好的支持。

    【讨论】:

    • 感谢您的回复。我现在可以看到我的编程错误,我在学习中完全忽略了测试。我还在学习rails的时候已经上战场了(实际的客户端工作)。如果我有更多的时间,我很快就能做这件事。但我有 14 天的时间来解决所有问题并学习测试程序。
    【解决方案2】:

    据我了解,您是在寻求项目管理技巧和工具,以帮助您控制 Rails 项目。

    我相信您需要做的第一件事是稳定项目。为此,您需要最小化错误并绘制所需工作的图表。

    我看到了两种互补的方法:

    • 使用任务/错误跟踪工具
    • 开始使用黄瓜进行测试

    任务/错误跟踪

    这非常重要,因为您需要某种列出所有错误的列表。

    有时用户发现了一个错误,突然间你不得不放弃一切,因为在那一刻,那个单一的错误是有史以来最重要的错误,需要立即解决。 但是,如果您直接问他们这是否意味着您正在修复的错误或多或少重要,那么答案可能会有所不同。

    因此,如果有明确的方法让用户参与决策过程,对您有利。如果有共享的错误列表,用户还可以关注当前状态(您正在处理的工作),他们可以指出/选择哪些错误对他们更重要。

    其次:列出项目(工作/任务/突出的错误/...)也将帮助您规划工作。

    对于某种错误跟踪有很多选择,但一些简单/实用/免费的建议是

    • 结帐 trello
    • 使用来自 github 的问题

    跟踪错误/任务会让您感觉自己获得了对项目的控制权,此外:它还会让您的客户更清楚地看到这一点。

    黄瓜

    在修复错误时,总是存在引入新错误的危险,尤其是在最初不是您自己的项目中。

    在一个几乎没有测试的项目中,我总是建议从黄瓜开始。黄瓜有几个优点:

    • 它从外部测试您的应用程序/网站:无需完全理解代码,您只需要知道应用程序应该做什么。如果我点击这个链接,它应该会带我到那个页面。
    • 用 Cucumber 编写测试真的很容易,而且你很快就能获得测试覆盖率
    • 作为奖励,您的test-code 是可读的,您可以向您的客户/用户展示它,他们实际上会理解测试涵盖的内容(并且可以纠正/改进它)。

    升级与否?

    我个人认为您的第一步应该是稳定项目并最小化/删除所有错误。虽然升级到 Rails 3 将是一个巨大的改进,但这并不是一个简单的过程。有很好的指导方针,但如果你现在这样做,你将不知道升级期间是否引入了错误,或者之前存在。先把代码质量整理好,再升级。

    希望这会有所帮助。

    【讨论】:

    • 我有 14 天的时间来修复并让一切顺利进行。这对我来说可能吗
    • 我想你应该能走得更远。创建错误清单,确定它们的优先级,然后首先从最重要的错误开始。对于每个错误,创建一个首先失败的黄瓜脚本 (feature)。然后只需处理列表即可。如果你从来没有做过黄瓜,也许试着找一些当地的帮助(结对编程)几个小时让你开始。希望这会有所帮助。
    • 我从来没有做过黄瓜。我在开发系统时启动了 Rails。直到现在我才意识到使用单元测试或测试等的巨大差异。
    • 我认为推荐黄瓜不是一个好主意。对我来说,它过于冗长和不必要。坚持使用 Unit::Test 或 RSpec 就足够了。使用 cucumber 只是增加了另一层不必要的测试文档来维护。带有明确测试的注释(在 Unit::Test 或 Rspec 中)足以记录正在测试的内容。
    • 好吧,我不同意。如果它纯粹是黄瓜语法,请查看 steak。但是否则恕我直言,这要容易得多,因为您正在进行更高级别的测试。在单元测试中,您要尽可能地孤立地测试所有组件。这意味着测试控制器和模拟/存根模型,自己测试模型,测试路由……这些都是为了获得良好的全面覆盖而做的大量工作。我认为这是非常有价值的,但如果你刚刚开始,我认为使用黄瓜/牛排更容易获得覆盖。 JKust 我的两分钱。
    【解决方案3】:

    实际上,您要问的问题完全取决于清理整个项目需要进行多少重构。 如果您有足够的时间将其彻底清理干净。我建议以下步骤:

    • 准备工作
      • 获取整个项目的可视化。什么是必需的,什么不是必需的。
      • 正确定义您的资源和它们之间的关系。
      • 使用正确的RESTful 路由
      • 确定测试工具和框架,例如cucumberrspecfactory girl 等。
    • 行动计划
      • 决定(如果可能,作为一个团队)需要进行最少必要的更改。
      • 隔离不同组中的所有组件,以便可以单独重构每个组。较小的团体是首选。
      • 决定测试用例。
      • 将任务分解成尽可能小的尺寸。
      • 确保将测试覆盖率保持在 90% 以上。

    对于一个由 4 名成员组成的中型项目,此过程大约需要 4-5 个月。

    如果您有任何具体的困惑,请告诉我们。

    【讨论】:

    • 遗憾的是,我是唯一一个在做这个项目的人。我似乎负担不起 4-5 个月的时间。由于我已经开发了它,用户已经在同时使用它。
    【解决方案4】:

    阅读内容:http://guides.rubyonrails.org/v2.3.11/ 从有关调试和性能测试的章节开始。

    暂时忘记升级到 Rails 3,此时它只会引入更多错误,并且可能会带来很多遗留 gem 和插件的问题。并且不要忘记您需要 ruby​​ 1.9 才能升级到 rails 3 - 又是一批问题。

    正如 ronalchn 所建议的那样,添加测试是个好主意。我建议从单元测试开始。您可能需要大量重写代码才能使其可测试。 (换句话说,与其尝试测试以适应当前的遗留代码,不如重构代码以使其可测试。)

    【讨论】:

    • Rails 3 升级不需要Ruby 1.9,即使是Rails 3.2。
    • 这可能在几年前 Rails 3.0 出现时就适用了。如今,如果你尝试它,你实际上会被搞砸,即使是更高版本的 Rails 3.0 - 我做过,并且在处理了奇怪的编组错误(据说只有某些 1.8.7 修订版guides.rubyonrails.org/…)之后,我发现它少得多升级到 1.9.3 很麻烦。
    • @LukasStejskal 是的,我的主机有问题,自定义 gem 是我唯一的选择。我仍然需要一些时间来修复和升级东西。我现在只有一个人的团队。
    【解决方案5】:

    很遗憾,您当前的解决方案没有快速解决方案。如果您认真考虑升级,如果您还没有编写测试,则需要时间来填补缺失的测试,在 Rails 3 之上选择测试框架,并在您准备好翻转时制定必要的数据迁移开关。

    另一种选择是继续使用 Rails 2.x,虽然支持途径会受到更多限制,但它并非完全深不可测。您仍然需要将测试工作作为第一要务,并了解现有应用程序中存在的各种细微差别。

    对于您的场景(之前几乎没有经验的单人球拍),我认为坚持您所拥有的并将可测试性提高到您认为值得升级的程度,这将是谨慎的行动。无论您将采取哪种行动,都准备好在中短期内投入大量工作(但这就是积累技术债务的情况)。

    【讨论】:

    • 我也想升级,但是还没有稳定系统。另外我的系统运行缓慢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多