`
liano
  • 浏览: 25953 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

浅析rails体系结构

阅读更多
一个请求来了以后,首先是ActionController。
ActionController是rails的控制中心,它本身是一个module,module 里面有一个base类,所有的controller,包括ApplicationController都继承base。
base的主要职责是,解析请求的参数,执行filter,执行action,最后,也是关键的一步,
调用ActionView.base.new得到一个解析template的对象,由ActionView.base完成template的解析。

在ActionController这个module之中由很多其他相关的module被base mixin。ruby就是这种风格,class+module. class是对象的抽象, module是对象中相关功能的集合,是功能的抽象。有的时候感觉两个不相干的对象有类似或同样的功能,但是通过抽取基类的方式把他们搞到一起又有一点勉强。这样的功能最好放到module面。还有的时候觉得一个类太大了,包好若干个大块的功能,每一块的功能也可以抽取出一个module。ActionView::Base只是实现了主干的功能,其他的一些附加的功能,比如:flash,就是用module来实现的。

再得瑟一下ActionView::Base,和controller一样,base里只是主干,根据template的后缀找相应的template的handler,handler负责处理template的解析。其中,base在执行的过程中会load一系列view helper,其中包括application_view_helper.
view helper 被base mixin 以后,里面的方法就可以直接在template上使用。
.html.erb的解析使通过ruby 的ERB template 解析器完成的。


对不对的先这样吧
分享到:
评论

相关推荐

    Ruby-Granite一种Rails应用程序体系结构框架

    "Granite"是Rails生态系统中的一个应用程序体系结构框架,旨在进一步提升Rails项目的组织结构和可维护性。它提供了一种结构化的模式来组织代码,使得大型Rails应用的管理变得更加容易。Granite强调清晰的职责划分和...

    Rails101_by_rails4.0

    《Rails101_by_rails4.0》是一本专注于...对于希望学习Rails框架,尤其是希望学习Rails 4.0版本的开发者来说,这本书提供了全面而系统的知识体系,并结合实际的练习项目,帮助学习者逐步成长为一名合格的Rails开发者。

    Rails 101 入门电子书

    - 更新数据库结构。 - 实现逻辑处理。 #### 十二、练习作业5-实作简单的Account后台机制 - **目标**: - 构建用户账户后台。 - **实现过程**: - 显示用户的Group列表。 - 显示用户的Post列表。 - 排序优化: ...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    rails2-sample

    这一章节将深入讲解Ruby语言的核心概念,包括变量、数据类型、控制结构、函数和类等。掌握Ruby语言是学习Ruby on Rails的前提条件,因为Rails正是建立在Ruby之上的。 #### 4. Rails Revealed(揭示Rails) 这部分...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    Rails

    5. **路由**:Rails的路由系统将URL映射到控制器的行动上,提供了一种灵活的方式来定义和管理应用的路由结构。 描述中提到的博文链接指向了一个ITEYE博客文章,尽管具体内容未提供,但通常这样的博客可能会包含...

    rails指南 中文版

    12. **Migrations**:Rails的迁移机制允许开发者通过Ruby代码来管理数据库结构的变化,使得数据库版本控制变得简单。 学习Rails指南中文版,开发者将全面了解Rails的各个方面,包括基础概念、核心组件、最佳实践...

    使用Aptana+Rails开发Rails Web应用(中文)

    Rails项目创建后,Aptana会自动生成基础的目录结构,包括app、config、db、lib等关键文件夹。在app目录下,你可以找到views、controllers、models等子目录,它们分别对应视图、控制器和模型三个核心组件。 接下来,...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    - **结构**:新项目将包含默认的目录结构,如`app`、`config`、`db`等,分别用于存放应用程序代码、配置文件、数据库迁移脚本等。 #### 四、启动Rails服务器 - **命令**:在项目根目录下运行`rails server`即可...

    rails2.3.2

    开发者可以通过解压这个文件,进一步了解 Rails 框架的结构和工作原理。 Ruby on Rails 2.3.x 版本包含了多个重要的特性,例如: 1. Active Record:这是 Rails 的 ORM(对象关系映射)层,负责处理数据库交互。在...

    component base rails applications

    本书《Component-Based Rails Applications》主要介绍了如何使用Rails引擎(Rails Engine)进行基于组件的Rails应用开发,以及如何对应用程序的大型模块进行拆分和模块化。以下是书中一些核心知识点的详细说明: 1....

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    该命令会自动初始化一系列的目录结构和基础文件,这些文件是Rails应用程序的骨架。 **知识点5:启动Mongrel服务器** 新创建的Rails应用程序需要一个服务器来托管,这时就可以启动Mongrel服务器。在Rails项目的根...

    Rails相关电子书汇总

    10. **Rails发电机(Generators)**:自动化生成常见的代码结构,如模型、控制器、迁移等,提高开发效率。 11. **Rails Console**:提供了一个交互式的Ruby环境,便于开发者调试和实验代码。 12. **Rails API模式*...

    rails 项目起步示例

    在Rails项目中,我们首先需要了解的是项目的目录结构。一个标准的Rails应用会包含以下关键部分: 1. **app**:应用程序的核心,包括模型(models)、视图(views)和控制器(controllers)。模型负责业务逻辑和数据...

    中文版rails教程

    3. **路由(Routing)**:Rails的路由系统根据URL映射到特定的控制器和动作,定义了应用的导航结构。 4. **测试驱动开发(Test-Driven Development, TDD)**:Rails鼓励使用TDD,提供了Rspec和Capybara等强大的测试...

    Ruby on Rails实践

    总的来说,Ruby on Rails实践涉及的知识点包括但不限于:Ruby语言基础、Rails框架结构、MVC模式、ActiveRecord、路由、测试驱动开发、插件和gem使用、以及部署策略。通过学习和实践,开发者能够快速构建功能丰富的...

    Rails3常用命令行命令

    这会生成一个包含所有必要文件和目录结构的新Rails项目。接下来,你可以通过以下命令进入Rails的控制台,也称为Console: ```bash rails c 或者 rails console ``` 在控制台中,你可以直接操作应用的数据模型和...

    rails 2.3.2离线安装rails 2.3.2离线安装

    rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...

Global site tag (gtag.js) - Google Analytics