Ruby on rails开发流程/订单

时间:2014-04-24 22:49:33

标签: ruby-on-rails web workflow project-management organization

现在大学已经到了夏天,我的课程已经结束,我需要能够在夏天保持清醒。我决定尝试从开始到结束在rails应用程序上制作一个足够好的红宝石。

我之前尝试过这样做,但我遇到的问题是: “在完成这项工作之前我无法完成这项任务,但除非我完成其他需要首先工作的事情,否则它似乎无效。”

基本上我的项目失控得非常快,因为我没有关于工作内容和时间的指示。

我向你提出的问题,哦,伟大而聪明的SO社区,是开发rails应用程序最受欢迎的方式。

我是从模型,视图还是控制器开始的? 首先制作HTML还是服务器代码更好? 完成任务的最佳方法是什么?

提前致谢!

4 个答案:

答案 0 :(得分:2)

Rails社区强烈推动某种形式的测试驱动开发。当你刚刚开始时,开始编写测试可能没有意义,但你仍然可以采用相同的方法。

所以,基本上你只是尝试在浏览器中做你想做的事情并根据需要写下你需要的东西来实现它。

所以开始吧,只需生成一个新的rails应用程序并启动服务器。它将为您提供默认的Rails环境信息。您不希望它成为主页,因此您转到routes.rb文件并定义您的根地址(例如root' welcome #index')。

现在您重新加载页面时出现错误"未初始化的常量WelcomeController'。所以现在你需要一个控制器。添加控制器。

现在您收到错误'操作'索引'找不到WelcomeController'。在WelcomeController上定义索引操作。

现在您收到错误'缺少模板欢迎/索引'。添加您的views / welcome / index.html.erb视图。

等。等。

很快,你会发现自己需要模特。当您想要从视图中与模型进行交互时,请参考模型。例如@articles.each do |article|等等。您将在nil'上获得一个未定义的方法。或类似的。

然后您定义模型,因为您希望在控制器中与其互动(例如@articles = Article.all)。然后,您将收到一个错误,表明您的模型不存在。创建模型。

将属性添加到视图中所需的模型中。

重复这个过程......

答案 1 :(得分:1)

  • 设计
  • 决定您要实施哪些功能
  • 决定您将使用哪些宝石来实现这些功能
  • 隔离配置和实施这些宝石/功能 - 使用Git
    • 意识到你在这里花了很多时间。
    • 考虑修剪功能或简化设计。也许回到顶端。
  • 开始编写主应用程序 - 使用Git
  • 将这些宝石配置在一起 - 使用Git
  • 编写模型 - 使用Git
  • 尝试编写控制器和视图(使用脚手架开始,这样你就可以做更多的黑客攻击和更少的编码) - 使用Git
  • 在最后三个步骤中遇到问题,或者发现一个必须实现的新功能,以使一切正常。
  • 孤立地解决这个问题(在单独的rails应用程序中) - 绝对使用Git
  • 重复

关于使用Git

Damien Roche在评论中建议使用Git分支而不是单独测试新工具。

我从一开始就一直在使用Git和Rails,我建议单独使用Git分支测试新工具。

例如:您可以在此处查看我的公共Github存储库:https://github.com/spundun/emblem-coffee-emberjs-rails-starter-kit。它是一个简单的单一分支存储库,我记录了我为逐步塑造项目所采取的每一步。

但是当使用新的工具或库时,很多时候事情都会破裂,你将开始不知道为什么事情不会像他们说的那样工作,在教程中。我使用的是错误版本的库吗?错误的Rails版本?我是否以错误的顺序添加工具?

要理解这些问题,很多时候您想要比较一个工作目录,该工作目录不适用于工作目录。这意味着您将需要并排使用两个工作目录。

当然,您可以通过将一个目录克隆到另一个目录并查看两个不同的分支来实现上述目标,但我们已经超越了自己。在使宝石与你正在使用的其他宝石共存之前,你应该确保你知道如何让它在最简单的场景中工作。含有香草味道的含义,只需要最低限度。

首先,您将使这个孤立的分支将新宝石纳入香草导轨应用程序。无论如何,此分支与您的主分支无关,除非它应使用您用于应用程序的相同版本的rails。您可以将它托管在同一个存储库或单独的存储库中,这无关紧要。

一旦您确信自己知道它应该如何独立工作,您就可以使用该隔离分支的提交日志跟踪您所采取的所有步骤,并将这些提交合适地包含在顶部的功能分支中您的主分支。当您完成修复错误并使所有宝石协调工作时,您的功能分支就可以进入主分支。

HTH。

答案 2 :(得分:1)

我认为这是一个很好的问题,我希望在这里看到一些有见地的答案。 在我看来,它是随实践而来的,你将不断在M,V和C之间切换。我认为模型通常是实现的第一部分,因为它通常由现实世界问题域决定,因此流动性较差主观。接下来是Controller和View。如果您只是在每次迭代时实现最小的工作部件,那么您可以更快地看到结果,这有助于不会陷入困境。 (虽然我喜欢尝试在我的模型中预先定义所有字段)。

但真正最好的方法就是退后一步,拿出笔和纸,勾勒出系统中的主要工作流程和实体,无论符号是什么。保持简单,以便您可以在一两页上直观地看到系统结束的主要内容。然后,当您实施时,这些设计可以作为您构建中的位置的地图。

当然,您也可以尝试预先指定系统测试(或rspec功能规范)来定义系统应该执行的操作。说实话,这对我来说从来没有用过。

答案 3 :(得分:1)

许多software development methodologies存在并继续发展,尽管速度比他们实施的编程语言慢。我建议研究Agile Manifesto并记住它的原则。

我的典型Rails应用程序工作流程:

编写并实现一项功能(黄瓜)。
编写并实现规范(RSpec)。
写一个基准和重构。