脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Ruby - Ruby on Rails所构建的应用程序基本目录结构总结

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

2020-05-09 10:46kevinhua Ruby

Ruby on Rails是Ruby世界中一家独大的Web开发框架,要掌握Rails程序的构建,对其目录结构的了解十分必要,下面就来看一下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设置文件

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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命令查看,所显示的目录和文件结构:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
.
├── 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自动产生,不需要修改;

?
1
2
3
4
5
6
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__)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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。

延伸 · 阅读

精彩推荐
  • RubyRuby简洁学习笔记(一):字符串、数字、类和对象

    Ruby简洁学习笔记(一):字符串、数字、类和对象

    这篇文章主要介绍了Ruby简洁学习笔记(一):字符串、数字、类和对象,本文是学习笔记第一篇,需要的朋友可以参考下 ...

    脚本之家2472020-04-20
  • Ruby剖析 Ruby 访问控制

    剖析 Ruby 访问控制

    前面,我们说 Ruby 没有函数,只有方法.而且实际上有不止一种方法.这一节我们介绍 访问控制 (accesscontrols). 想想当我们在最高层而不是在一个类的定义里定义...

    ruby教程网3572020-04-08
  • Ruby简要说明Ruby中的迭代器

    简要说明Ruby中的迭代器

    这篇文章主要介绍了Ruby中的迭代器,迭代器的概念在动态语言的编程中十分重要,文章中介绍了Ruby中的each迭代器和collect迭代器,需要的朋友可以参考下 ...

    goldensun2772020-04-25
  • RubyRuby进行文件信息输出实例代码

    Ruby进行文件信息输出实例代码

    Ruby进行文件信息输出实例代码,数据是随机的,所以每次的记录都会不同。 ...

    ruby教程网2962020-04-10
  • RubyRuby设计模式编程中使用Builder建造者模式的实例

    Ruby设计模式编程中使用Builder建造者模式的实例

    这篇文章主要介绍了Ruby设计模式编程中使用Builder建造者模式的实例,建造者模式将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表...

    范孝鹏2192020-05-07
  • RubyRuby迭代器的7种技巧分享

    Ruby迭代器的7种技巧分享

    这篇文章主要介绍了Ruby迭代器的7种技巧分享,Ruby中的迭代器非常人性化,本文既是讲解了7个技巧也是讲解了7种迭代器,需要的朋友可以参考下 ...

    脚本之家4782020-04-20
  • RubyCentOS中配置Ruby on Rails环境

    CentOS中配置Ruby on Rails环境

    经过一个上午的折腾,终于把ROR环境在CentOS中搞定,绕了很多弯路,把文章写下来总结一下 ...

    可乐加糖4762020-04-12
  • RubyRuby环境下安装使用bundler来管理多版本的gem

    Ruby环境下安装使用bundler来管理多版本的gem

    这篇文章主要介绍了Ruby环境下安装使用bundler来管理多版本的gem的方法,举了Ruby On Rails中的应用实例来进行演示,需要的朋友可以参考下 ...

    日拱一卒4332020-05-10