Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何阅读现有的Rails项目?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何阅读现有的Rails项目?

Ruby on rails 如何阅读现有的Rails项目?,ruby-on-rails,ruby,Ruby On Rails,Ruby,当您开始处理现有的Rails项目时,您需要采取哪些步骤来理解代码?你从哪里开始?在深入到控制器、模型、帮助程序和视图之前,您使用什么来获取高级视图?您是否有任何特定的技术、技巧或工具可以帮助加快流程 请不要用“Learning Rails&Ruby”来回答(就像问这个问题的人得到的一个回答——他也没有得到太多的回答,所以我想我会再问一次,并提示更多)。我对自己的代码很熟悉。这是对别人的分类,这让我很头疼,我花了很长时间去摸索 我想说,看看测试(或者如果项目使用RSpec,看看规范),从高层了解应

当您开始处理现有的Rails项目时,您需要采取哪些步骤来理解代码?你从哪里开始?在深入到控制器、模型、帮助程序和视图之前,您使用什么来获取高级视图?您是否有任何特定的技术、技巧或工具可以帮助加快流程


请不要用“Learning Rails&Ruby”来回答(就像问这个问题的人得到的一个回答——他也没有得到太多的回答,所以我想我会再问一次,并提示更多)。我对自己的代码很熟悉。这是对别人的分类,这让我很头疼,我花了很长时间去摸索

我想说,看看测试(或者如果项目使用RSpec,看看规范),从高层了解应用程序应该做什么。一旦您从顶层了解了模型/视图/控制器的预期行为,就可以深入了解实现。

如果Rails项目处于某种稳定状态,那么我一直非常喜欢使用调试器帮助导航代码库。我将启动浏览器并开始与应用程序交互,然后针对某些功能,并在相关功能的开头设置断点。有了它,我只需研究进入函数的参数和返回的值,以便更好地了解发生了什么。一旦您感到舒适,您可以稍微修改功能,以确保您了解发生了什么。仅仅对代码执行一些静态分析可能会很麻烦!祝你好运

首先我使用该应用程序,注意有趣的控制器和动作名称


然后我开始阅读这些控制器的代码,必要时阅读相关模型的代码。视图通常不那么重要。

看看模型。如果应用程序写得很好,这应该会给你一个领域模型的图片,这就是有趣的逻辑所在。我还研究了模型的测试

通过使用Rails应用程序并观察URL,控制器/视图的实现方式应该是显而易见的


不幸的是,在许多情况下,控制器甚至视图中存在太多的逻辑。这意味着您也必须查看这些目录。更不幸的是,这些层的测试往往不太清晰。

我可以想出两个原因来查看我以前没有参与过的现有应用程序:我需要进行更改,或者我想了解一个或多个方面,因为我正在考虑使用它们作为我正在考虑对另一个应用程序进行更改的输入。我在第二种情况中包括了教育/启蒙阅读

特别是MVC模式的一个真正好处,以及许多web应用程序的一个普遍好处是,它们可以相当容易地划分为请求/响应对,在某种程度上可以单独理解。因此,你可以从一次互动开始,并从中获得理解

当需要修改或扩展现有代码时,我应该对第一个更改有一个很好的想法——如果不是,那么我可能还不应该愚弄代码!在Rails应用程序中,更改很可能涉及视图、模型或两者的组合,我应该能够相当快地识别相关项目。如果有测试,我会检查它们是否运行,然后尝试编写一个暴露缺失功能的测试,然后我们就可以开始了。如果没有测试,那就有点棘手了——我会担心我可能会无意中打破某些东西:我会考虑增加测试来给自己一个更大的信心,这将开始建立对正在研究的领域的一些理解。我应该很快就能进入一个循环,在我学习的过程中加快速度。

运行测试。:-)


如果幸运的话,它是基于RSpec构建的,无论实现如何,它都会描述行为。

看看文档,有些项目上有非常好的文档。 理解别人的代码有点困难,但是试试看……阅读代码;-)

  • 我在终端中运行
    rake测试
  • 如果环境没有加载,我会查看堆栈跟踪以了解发生了什么,然后修复它,以便环境加载并再次运行测试
  • 我启动服务器并在浏览器中打开应用程序。到处点击
  • 开始处理手头的任务
  • 如果密码生效,我很高兴。如果代码很糟糕,我会的

  • 除了已经发布的运行规范和分解MVC的技巧外,我还喜欢:

    rake routes
    
    作为获取应用程序中所有路线的高级视图的另一种方式

    ./script/console
    

    rails irb控制台仍然是我最喜欢的检查模型和模型方法的方式。抓取一些记录并在irb中使用它们。我知道它在开发和测试过程中对我很有帮助。

    与目前的许多人不同,我实际上不认为测试是开始的地方。我觉得他们太狭隘,太专注了。这就像是试图通过首先放大分子内力和量子力学来理解基本物理/力学。我还认为您过于依赖编写良好的测试,根据我的经验,许多人没有编写足够的测试或编写较差的测试(这并没有给出代码实际应该做什么的准确感觉)

    1) 我认为首先要做的是了解这个应用程序到底做了什么。使用它,至少要有足够长的时间来了解它的主要目的是什么,不同类型的数据可能是什么,可以执行哪些操作,最重要的是,为什么

    2) 你需要退后一步,看看大局。我认为最好的方法是从
    schema.rb
    开始。这告诉你一些非常重要的事情:

    • 本项目的词汇/概念是什么。Wh