Ruby on Rails所构建的应用程序基本目录结构总结

当使用rails new appname生成Rails应用后,我们可以通过tree来查看Rails应用的目录结构:

目录结构

应用程序目录下会有app、config、db、doc、lib、log、public、script、test、tmp和vendor等11个目录和config.ru、Gemfile、Gemfile.lock、Rakefile、README.rdoc等5个文件。

目录在稍后会一一解释,先看一下app目录下的文件:

config.ru 用来启动Rails程序的Rack设置文件

require ::File.expand_path('../config/environment', __FILE__)
run Myapps::Application

Gemfile设置Rails程序所依赖的Gems (一旦用bundle install安装后,会生成Gemfile.lock)

source 'https://ruby.taobao.org/'

gem 'rails', '3.2.1'
gem 'sqlite3'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
 gem 'sass-rails',  '~> 3.2.3'
 gem 'coffee-rails', '~> 3.2.1'
 gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem ... ...

Rakefile 用来载入可以被终端执行的Rake任务
<!--more-->

下面是用tree命令查看,所显示的目录和文件结构:

.
├── app
│  ├── assets
│  │  ├── images
│  │  │  └── rails.png
│  │  ├── javascripts
│  │  │  └── application.js
│  │  └── stylesheets
│  │    └── application.css
│  ├── controllers
│  │  └── application_controller.rb
│  ├── helpers
│  │  └── application_helper.rb
│  ├── mailers
│  ├── models
│  └── views
│    └── layouts
│      └── application.html.erb
├── config
│  ├── application.rb
│  ├── boot.rb
│  ├── database.yml
│  ├── environment.rb
│  ├── environments
│  │  ├── development.rb
│  │  ├── production.rb
│  │  └── test.rb
│  ├── initializers
│  │  ├── backtrace_silencers.rb
│  │  ├── inflections.rb
│  │  ├── mime_types.rb
│  │  ├── secret_token.rb
│  │  ├── session_store.rb
│  │  └── wrap_parameters.rb
│  ├── locales
│  │  └── en.yml
│  └── routes.rb
├── config.ru
├── db
│  └── seeds.rb
├── doc
│  └── README_FOR_APP
├── Gemfile
├── lib
│  ├── assets
│  └── tasks
├── log
├── public
│  ├── 404.html
│  ├── 422.html
│  ├── 500.html
│  ├── favicon.ico
│  ├── index.html
│  └── robots.txt
├── Rakefile
├── README.rdoc
├── script
│  └── rails
├── test
│  ├── fixtures
│  ├── functional
│  ├── integration
│  ├── performance
│  │  └── browsing_test.rb
│  ├── test_helper.rb
│  └── unit
├── tmp
│  └── cache
│    └── assets
└── vendor
  ├── assets
  │  ├── javascripts
  │  └── stylesheets
  └── plugins

应用目录(app/)

app目录是Rails程序的主目录,不同子目录分别存放了模型 Models (M)、控制器 Controllersw (C)、视图 Views (V)及Mailers、Helpers和Assests等文档。

模型-控制器-视图

分别存放模型、控制器和视图。其中,模型统一存放在app/models目录下,控制器统一存放在app/controllers目录下(可以使用目录进一步组织控制器,例如cpanel目录下用于存放管理后台相关的控制器),视图存放在app/views目录下,视图模型存放在app/view/layouts目录下,默认为applicaiton.html.erb。

Assets静态文件

Assets静态文件存放在app/assets目录下,分别为app/assets/images、app/assets/stylesheets、app/assets/javascripts目录。

Helper

Helper是一些在视图中可以使用的小方法,用来产生较复杂的HTML。预设的Helper文件名称对应控制器,但不强制要求,在任意一个Helper文件中定义的方法,都可以在任何视图中使用。

配置文件目录(config/)

虽然Rails遵循“约定优于配置”的原则,但仍有一些需要设定的地方。在配置文件目录下,会存放应用程序设置文件application.rb、数据库设置文件database.yml、路由设置文件routes.rb、多重环境设置config/environments目录、其它初始设置文件config/initializers。

Rails启动应用程序设置

启动Rails程序(例如rails console或rails server),会执行以下三个文档

boot.rb 载入Bundler环境,这个文件由Rails自动产生,不需要修改;

require 'rubygems'

# Set up gems listed in the Gemfile.
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)

require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])

application.rb 载入Rails gems和依赖的其它gems,接着设定Rails程序;
require File.expand_path('../boot', __FILE__)

require 'rails/all'

if defined?(Bundler)
 # If you precompile assets before deploying to production, use this line
 Bundler.require(*Rails.groups(:assets => %w(development test)))
 # If you want your assets lazily compiled in production, use this line
 # Bundler.require(:default, :assets, Rails.env)
end

module Myapps
 class Application < Rails::Application
  # Settings in config/environments/* take precedence over those specified here.
  # Application configuration should go into files in config/initializers
  # ... ...

  # Configure the default encoding used in templates for Ruby 1.9.
  config.encoding = "utf-8"

  # Configure sensitive parameters which will be filtered from the log file.
  config.filter_parameters += [:password]

  # ... ...

  # Enable the asset pipeline
  config.assets.enabled = true

  # Version of your assets, change this if you want to expire all your assets
  config.assets.version = '1.0'
 end
end
environment.rb 执行所有启动程序(initializers),这个文件同样由Rails产生,不需要修改。
# Load the rails application
require File.expand_path('../application', __FILE__)

# Initialize the rails application
Myapps::Application.initialize!

初始设置文件(initializers)
由environment.rb调用,系统默认的初始设置文件有backtrace_silencers.rb、inflections.rb、mime_types.rb、secret_token.rb、session_store.rb和wrap_parameters.rb等6个,分别对应的用途是:选择性移动异常追踪、单复数转换、mime_types、加密cookies信息的token、默认session储存以及参数封装等。

###数据库存储目录(db/)

###程序帮助文档(doc/)

###共享类或模块文件(lib/)

一些共享的类或模块可以存放在该目录。另外,Rake的任务,可存放在lib/tasks目录下。

###日志目录(log/)

###公共文件目录(public/)

对于web服务器来说,可以直接访问的文件目录。可以用于存放通用的images、stylesheets和javascripts (Rails 2.x)。

###Rails脚本文件(script/)

###测试文件目录(test/)

用于存放单元测试、功能测试及整合测试文件。

###临时文件目录(tmp/)

###第三方插件目录(vendor/)

在使用bundler安装gems插件时,也可以选择安装在该目录下。例如bundle install --path vendor/bundle。

(0)

相关推荐

  • Ruby on Rails中MVC结构的数据传递解析

    如果读者已经开发过基于 Rails 的应用,但对其 MVC 间的数据传递还有诸多困惑,那么恭喜您,本文正是要总结梳理 Rails 数据传递的方法和技巧.Ruby on Rails 3(以下统称为 Rails 3)是当前的主要发布版本,本文所述及的内容和代码都基于此版本. Rails 3 简介 Ruby on Rails 是一个 Ruby 实现.采用 MVC 模式的开源 Web 应用开发框架,能够提供 Web 应用的全套解决方案.它的"习惯约定优于配置"的设计哲理,使得 Web 开发人员

  • Ruby on Rails所构建的应用程序基本目录结构总结

    当使用rails new appname生成Rails应用后,我们可以通过tree来查看Rails应用的目录结构: 目录结构 应用程序目录下会有app.config.db.doc.lib.log.public.script.test.tmp和vendor等11个目录和config.ru.Gemfile.Gemfile.lock.Rakefile.README.rdoc等5个文件. 目录在稍后会一一解释,先看一下app目录下的文件: config.ru 用来启动Rails程序的Rack设置文件 r

  • Ruby on Rails网站项目构建简单指南

    创建 Rails 项目 创建一个普通的 Rails 项目,可以直接使用以下命令: rails new blog 但在国内因为连接 RubyGems 的速度太慢,而 Rails 默认在构建完项目结构后,会使用 bundle 命令从 RubyGems 下载安装依赖包.最后会因为网络问题而卡死.所以需要使用 --skip-bundle 参数跳过执行 bundle 这一步.然后使用国内的 Gems 镜像源来完成后面依赖包的安装.国内推荐的源是 Ruby China 提供的: https://gems.r

  • 在Ruby on Rails中使用Rails Active Resource的教程

    简介 当今的应用程序不仅需要和基于浏览器的客户端互操作,还需要和其他应用程序互操作.为实现互操作性,web 应用程序通常提供一个 web 服务 API.web 服务 API 通过一个网络(比如 Internet)提供对应用程序 的远程访问.直到最近,web 服务 API 还使用重型.复杂的基于 SOAP 的 web 服务集成,这种 web 服务,不仅没有什么优点,而且还需要很长时间才能实现.带有基于 Representational State Transfer (REST) 服务的 Rails

  • 在Ruby on Rails中优化ActiveRecord的方法

    Ruby on Rails 编程常常会将您宠坏.这一不断发展的框架会让您从其他框架的沉闷乏味中解脱出来.您可以用习以为常的几行代码片断表达自己的意图.而且还可以使用 ActiveRecord. 对于我这样的一个老 Java? 程序员而言,ActiveRecord 多少有点生疏.通过 Java 框架,我通常都会在独立的模型和模式之间构建一种映射.像这样的框架就是映射框架.通过 ActiveRecord,我只定义数据库模式:或者用 SQL 或者用称为迁移(migration)的 Ruby 类.将对象

  • 在Ruby on Rails中使用AJAX的教程

    如果没有听说过 Rails,那么欢迎您外星旅行归来,近几年大概只有那个地方没有听说过 Ruby on Rails 了.Rails 最吸引人的地方是能够很快地建立功能完备的应用程序并运行起来.Rails 为 Ajax 而内置集成的 Prototype.js 库可以轻松快速地创建所谓的富 Internet 应用程序. 本文将逐步引导您创建 Rails 应用程序.然后深入分析如何利用 Ajax 特性编写从服务器上读写数据的 JavaScript 代码. 从容起步 Ajax 之旅--Ajax 技术资源中

  • 对优化Ruby on Rails性能的一些办法的探究

    1.导致你的 Rails 应用变慢无非以下两个原因: 在不应该将 Ruby and Rails 作为首选的地方使用 Ruby and Rails.(用 Ruby and Rails 做了不擅长做的工作) 过度的消耗内存导致需要利用大量的时间进行垃圾回收. Rails 是个令人愉快的框架,而且 Ruby 也是一个简洁而优雅的语言.但是如果它被滥用,那会相当的影响性能.有很多工作并不适合用 Ruby and Rails,你最好使用其它的工具,比如,数据库在大数据处理上优势明显,R 语言特别适合做统计

  • 深入理解Ruby on Rails中的缓存机制

    几个场景 首先,让我先来带您浏览几个 ChangingThePresent.org 中的页面吧.我将显示站点中几个需要缓存的地方.然后,再指出我们为其中每个地方所做出的选择以及为实现这些页面所使用的代码或策略.尤其会重点讨论如下内容: 全静态页面 几乎无变化的全动态的页面 动态页面片段 应用程序数据 先来看看静态页面.几乎每个站点都会有静态页面,如图 1 所示,其中还有我们的条款和条件.可以通过单击 register 然后再选择是否接受用户协议来浏览相应页面.对于 ChangingThePres

  • 使用Ruby on Rails快速开发web应用的教程实例

    Ruby on Rails 正在令整个 Web 开发领域受到震憾.让我们首先了解底层的技术: Ruby 是一门免费的.简单的.直观的.可扩展的.可移植的.解释的脚本语言,用于快速而简单的面向对象编程.类似于 Perl,它支持 处理文本文件和执行系统管理任务的很多特性.     Rails 是用 Ruby 编写的一款完整的.开放源代码的 Web 框架,目的是使用更简单而且更少的代码编写实际使用的应用程序. 作为一个完整的框架,这意味着 Rails 中的所有的层都是为协同工作而构造的,所以您不必自己

  • 在Docker中自动化部署Ruby on Rails的教程

    基本的Rails应用程序 现在让我们启动一个基本的Rails应用.为了更好的展示,我使用Ruby 2.2.0和Rails 4.1.1 在终端运行: $ rvm use 2.2.0 $ rails new && cd docker-test 创建一个基本的控制器: $ rails g controller welcome index --,然后编辑 routes.rb ,以便让该项目的根指向我们新创建的welcome#index方法: root 'welcome#index' 在终端运行 r

  • 提升Ruby on Rails性能的几个解决方案

    简介 Ruby On Rails 框架自它提出之日起就受到广泛关注,在"不要重复自己","约定优于配置"等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率. ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可实现非常易用的持久化,Github 和 Rubygems 上丰富多样的 Rails 插件是 Rails 开发高效率的又一有力保障.Rails 是一个真正彻底的 MVC(Model-View-Controller) 框

随机推荐