[Rails学习之路]Rails文件结构与路由

约定优于配置RESTful是Ruby on Rails十分推崇的哲学。在一个默认的RESTful的Rails项目中,使用资源HTTP动词来帮助组织项目。
假若有一个使用scaffold建立的Rails项目,它的建立代码像下面这样:html

rails new hello_rails
cd hello_rails/
rails generate scaffold person name:string

执行以后获得的文件结构以下(原文来自Ruby on Rails 指南):数据库

  • app/ 存放程序的控制器、模型、视图、帮助方法、邮件和静态资源文件。本文主要关注的是这个文件夹。
  • bin/ 存放运行程序的 rails 脚本,以及其余用来部署或运行程序的脚本。
  • config/ 设置程序的路由,数据库等。详情参阅“设置 Rails 程序”一文。
  • config.ru 基于 Rack 服务器的程序设置,用来启动程序。
  • db/ 存放当前数据库的模式,以及数据库迁移文件。
  • Gemfile, Gemfile.lock这两个文件用来指定程序所需的 gem 依赖件,用于 Bundler gem。关于 Bundler 的详细介绍,请访问 Bundler 官网。
  • lib/ 程序的扩展模块。
  • log/ 程序的日志文件。
  • public/ 惟一对外开放的文件夹,存放静态文件和编译后的资源文件。
  • Rakefile 保存并加载可在命令行中执行的任务。任务在 Rails 的各组件中定义。若是想添加本身的任务,不要修改这个文件,把任务保存在 lib/tasks 文件夹中。
    README.rdoc 程序的简单说明。你应该修改这个文件,告诉其余人这个程序的做用,如何安装等。
  • test/ 单元测试,固件等测试用文件。详情参阅“测试 Rails 程序”一文。
  • tmp/ 临时文件,例如缓存,PID,会话文件。
  • vendor/ 存放第三方代码。常常用来放第三方 gem。

项目中最经常使用的是app/这个目录,在它下面又有MVC模型的controllers/views/models/等几个子目录。缓存

controllers/下面有people_controller.rb文件,其中的类叫作PeopleController。Rails约定,控制器中的命名默认为复数,若是你没有在路由中指定其余的控制器的话。咱们建立的模型叫person,因此它的复数就是people。
在控制器中有indexshowneweditcreateupdatedestroy等方法,这些方法叫作控制器的动做。ruby

models/下面有person.rb。Rails约定模型名默认是单数。打开这个文件后,里面却什么都没有。服务器

class Person < ActiveRecord::Base
end

这是由于在Rails中,模型的内容是随着数据库中对应的表变化的,这一点和其余的ORM略有不一样。若是须要修改模型的内容,只需修改数据库便可。而修改数据库并不须要手工去作,Rails中有迁移(migration)这个机制能够帮助咱们实现。好处一是咱们的修改是数据库无关的;二是能够方便作版本控制。app

打开db/migrate/*_create_people.rb。这段代码建立了一张people表:ide

class CreatePeople < ActiveRecord::Migration
    def change
        create_table :people do |t|
            t.string :name
            t.timestamps
        end
    end
end

咱们执行bin/rails db:migrate命名来执行迁移,这时Rails在后台创建了people表,使用的是config/database.yaml中设置的数据库,默认就是SQLite。布局

最后看一下views/目录。在它下面除了和布局相关的layouts/,就是people/目录。其中有以.html.erb为后缀的indexnewshowedit等文件。这些文件都和控制器的动做相关联。把它们关联在一块儿的就是Rails的路由设置config/routes.rb单元测试

这里面只有一条规则,测试

resources :people

建立了people这个资源。Rails使用资源来实现REST。它实际上等价于下面的几条规则:

或者借用Ruby on Rails 实战圣经的这个表格更好认识(原图中资源为events):

相关文章
相关标签/搜索