Ruby On Rails学习笔记(2)——Convention over Configuration(ROR应用程序的目录结构)

        XML形式的配置文件是Web开发中最常见的文件,如web.xml、applicationContext.xml、*.hbm.xml等等,这些文件在为应用程序提供强大的灵活性的同时也大大增加配置的复杂度。而Rails框架抛弃了这些配置文件,使用严格的约定,要求开发者将View、Controller、Model等各种类型文件放在自己专属的文件夹下,从而大大降低开发的复杂度,也即其Convention Over Configuration思想。
       下图是一个典型的ROR应用程序结构:

下面介绍图中的主要目录:
app:该目录下存放了Rails应用程序的主要文件,其子目录有models、controllers、views和helper等几个,从名字上就可以看出它们分别存放应用程序中哪种类型的文件,helpers和views一样都是用来存放视图文件。Rails是一个典型的MVC框架,所以其子目录也是按照MVC框架的结构划分和命名,使用起来非常方便。
components:该目录下保存被应用程序中的model、controller和view使用的小组件。
config:这个目录用来存放Rails应用程序中为数不多的配置文件,主要有数据库配置(database.yml)、Rails环境结构(environment.rb)以及web请求的处理路由(routes.rb)。另外还可以在environment子目录中分别配置测试(test.rb)、开发(development.rb)和生产(production.rb)三种不同的环境。
db:该目录用来存放管理应用程序中的数据库的脚本文件。
doc:Rails应用程序的文档目录。Ruby有一个RubyDoc工具,可以根据代码中的注释自动生成文档。
lib:该目录存放应用程序的类库。如果类库是第三方类库,需要放在另外一个目录vendor下。
log:日志信息无论软件的开发、测试还是运行阶段都有着非常重要的作用。Rails应用程序的所有日志信息都被存放在该目录下,主要的日志信息有针对服务器的独立日志信息(server.log)以及针对三种不同的Rails环境的日志信息(test.log、development.log和production.log)。
public:该目录存放应用程序中的静态文件,如图片、JavaScript脚本、CSS样式表文件和静态的HTML文件,其中images、javascripts和styles三个子目录分别存放图片、.js和.css文件,静态的html文件,可以直接存放在public下。
script:这个目录存放了一些脚本文件,这些脚本文件用来管理或者启动Rails中各种类型的工具,例如生成代码、启动服务器等。
test:该目录存放Rails自动产生的或者自己创建的测试文件,其中fixtures、mocks、unit和functional分别对应不同类型的测试。
vendor:该目录存放第三方的类库,如数据库操作类库。
tmp:上图中没有出现该目录,在运行过程中可能会出现。该目录存放作为中间处理过程的临时文件。

        由于Rails应用程序是按照惯例或者说约定来存放文件,从而简化开发的,所以我认为连了解这些目录的作用,总是比较好的。不过刚开始接触,还是有些目录的不是很清楚,等慢慢深入了,再回过来补充吧。

时间: 2024-10-12 16:48:26

Ruby On Rails学习笔记(2)——Convention over Configuration(ROR应用程序的目录结构)的相关文章

Ruby On Rails学习笔记(1)——安装Instant Rails

       Instans Rails是一个ROR的一个一站式解决方案,其中包含了Ruby.Rails.Apache和MySQL,并且所有都已经配置完成,可以直接运行.下面是在Windows XP安装和启动Instant Rails的过程.       1.下载Instant Rails,下载地址为:http://rubyforge.org/frs/?group_id=904,当前最新的Release版本为1.7,即InstantRails-1.7-win.zip:       2.将Inst

Ruby On Rails学习笔记(4)——为first增加视图

         作为典型的MVC结构,绝对不会把显示的任务交给控制器,这需要有专业的视图来完成.在Rails中增加视图文件,同样是想当地的方便.下面就是为First应用程序的hello控制器增加index视图的详细步骤:        1.使用generate脚本生成视图:                   2.修改hello_controller.rb文件:                    3.在浏览器中查看自动生成的视图文件的显示效果:                       

Ruby On Rails学习笔记(3)——Rails程序由0到1

     正如Rails的理念一样,创建一个新的Rails应用程序的过程非常简单,下面就来看看如何从0到1建立一个全新的Rails应用程序.     1.启动InstantRails,打开其Rails应用程序管理器(Rails Application Manager):         2.创建一个名称为first的新的应用程序:              3.使用first应用程序中的脚本文件创建一个名称为hello的控制器:                   4.启动针对first应用程序

《开源思索集》一Java社群该向Ruby on Rails学习些什么?

Java社群该向Ruby on Rails学习些什么? 开源思索集 软件开发者是分社群的,大多数时候都是按照语言来划分大的派别,门派不同的人,很少相互交流--"跟那种用XXX的有什么好说的".越是这门语言足够的自给自足,越是懒得看别的语言的东西.作为一个次新兴语言,Java社群已经足够封闭了.自己内部热闹非凡,新技术.新名词.新战争.新领袖层出不穷,哪里有空去理会Java以外的世界? 可是最近的事情有点奇怪了,Java社群在非常热烈的讨论另外一个语言的项目"Ruby on R

rails学习笔记: rake db 相关命令

rails学习笔记: rake db 命令行 rake db:***** script/generate model task name:string priority:integer script/generate migration add_description_to_task description:string script/generate migration remove_description_from_task description:string 数据类型 引用 # :str

VSTO学习笔记(八)向 Word 2010 中写入表结构

原文:VSTO学习笔记(八)向 Word 2010 中写入表结构 前几天公司在做CMMI 3级认证,需要提交一系列的Word文档,其中有一种文档要求添加公司几个系统的数据库中的表结构.我临时接到了这项任务,辅助相关人员完成这种文档. 示例代码下载 本系列所有示例代码均在 Visual Studio 2010 Ultimate RTM + Office 2010 Professional Plus RTM x64 中测试通过 注:本次使用的数据库为 SQL Server 2008 R2 DataC

Ruby on rails开发从头来(四十一)- ActiveRecord基础(存储结构化数据)

有时,能够在某个属性中直接存储任意的ruby对象是很方便的,一种办法就是Active Record支持序列化,将一个ruby对象变为一个YMAL字符串,并且将这个字符串存储到属性对应的数据库字段中.在数据库定义中,这个字段必须为text类型. 因为Active Record将数据库中的Char型和text型映射为ruby的string型,所以如果我们需要告诉Active Record使用序列化功能,例如,我们想知道某个客户进行的最后的5次消费,我们创建一个含有text类型字段的表来保存信息: c

Ruby On Rails上手笔记(安装使用全过程)_ruby专题

有机会再试一试Rails了,只是原来接触的是2,现在已然变成了4,似乎现在的安装比原来会快些.. Rails 4 安装 针对于安装了RVM 复制代码 代码如下: gem install rails 没有的话应该这样: 复制代码 代码如下: sudo gem install rails 安装RVM可以用句 复制代码 代码如下: curl -L https://get.rvm.io | bash -s stable 查看rails版本 复制代码 代码如下: rails -vRails 4.0.3 似

Rails学习笔记之Rails 基础教程

resource ,资源.一个资源就是一种相似对象的集合,比如文章,用户.你可以对资源执行创建,读取,更新,删除的动作,这些动作被称为 CRUD 操作. 一个博客,里面可能会有文章资源.创建一个文章资源,名字是 articles,先添加一个资源类型的路由.编辑 config/routes.rb,添加一行 resources :articles,像这样: Rails.application.routes.draw do   resources :articles   # ... end 执行: r