深入理解Rails
P257 -- P270
目录结构
使用rails
new my_app新建项目
-config.ru
用于配置Rack
WebServer Interface,也可以创建Rails
Metal应用,或在该Rails项目中使用Rails
Middlewares.详见rails
guide
Rails很有趣的一点是她的组织形式。从一个开发者的视角,你的大部分时间是放在高层次的模块上,例如Active
Record和Action
View。另外有个叫Rails的组建,但是她位于其他的组件之下,默默的协调其他组建,让她们合作无间。同时,这个底层结构很少会被使用到,本节末会提到组件。
-Gemfile
用于定制你的Rails项目的依赖,这种依赖也包括数据库,web服务器甚至用于部署的脚本
技术上来讲,该文件是被你的应用所用,你可以在
config/boot.rb和config/application.rb中找到对于Bundler的调用
-Rakefile
定义一些任务包括:运行测试,生成文档,抽取当前项目结构等。在命令行中可以输入以下命令:
rake
-–tasks 查看命令清单
rake
–describe task 更完整的关于task的使用介绍
-README
略
关于文档
Rails提供了doc:app
的Rake任务来生成文档到doc/下。另外doc:rails命令可以生成当前版本的Rails的文档,doc:guides可以提供可用的指导文档,在你生成该指导文档前,你需要在Gemfile添加
gem RedCloth 一行,保存后运行
bundle install
通过
rake -T doc
命令,可以看到Rails提供的其他文档关联任务
关于提供的库文件
lib文件夹中的代码与model
view
controller并不是严丝合缝的结合。例如,如果你打算写一个用来生成PDF的,这些数据直接从controller直接发送到浏览器(通过
send_data方法),用于生成PDF的代码只需要放在lib目录下。
Lib目录也是个适用放置用于models
view controllers分享的代码之处。也许你需要一个验证身份证号码的库,这种计算不属于m
v c应放置在lib中
你可以自由在lib下传减子文件夹来归类组织相关的方法。例如lib/pdf_stuff
可以用于放置生成清单,生成文档和pdf的库等
在老的Rails版本里,lib目录被自动加载,如今这是一个需要明确开启才可被加载
需要在config/application.rb中
加入一行
config.autoload_paths
+= %w(#{Rails.root}/lib)
lib目录下的代码都可以直接访问,如果这些文件包含类,模块并且这些文件的命名是其包含类或模块的名称的小写形式,Rails就可以自动加载这些文件,比如,我们的生成PDF文件是lib/pdf_stuff/receipt.rb.
只要我们的类叫
PdfStuff::Receipt.
Rails可以自动加载它
其他的情况,需要使用require机制。在lib目录下的文件,可以直接通过名称require.例如lib/easter.rb可以通过
require 'easter'包含
lib/shipping/airmail.rb需要require
“shipping/airmail”
关于Rake
Tasks
lib目录下有tasks的空目录,这里你可以写自己的Rake任务。
这里有一个简单的例子,Rails提供了一个Rake任务可以用来向你展示最后一次执行的migration,然而我们也许需要一个用于展示所有migration的任务
namespace :db do
desc "Prints the migrated versions"
task :schema_migrations => :environment do
puts ActiveRecord::Base.connection.select_values(
'select version from schema_migrations order by version' )
end
end
保存该文件,以.rake结尾。这里我们命名db_schema_migrations.rake
我们可以通过
>rake
db:schema_migrations 来运行
关于日志(赞略
详见264页)
关于静态文件
貌似3.1之后都放在
app/assets/之下
包括stylesheets
javascript 和一些静态网页
关于Scripts
关于rails命令,第一个参数决定了rails要执行的功能
benchmarker
生成你的应用中
的 一个或多个方法的性能数
console
允许你和你的Rails应用中的方法交互
dbconsole
允许你直接通过命令行和数据库交互
destroy
移除通过generate命令自动生成的文件
generate
一个代码生成器工具。可以生成controllers,mailers,models,scaffolds,webservices.你也 可以在Rails网站上下载其他的生成器。不带参数的命令可以查看特定的生成器的使用方法
例如rails
generate migration
new
生成Rails应用的代码
plugin
帮你安装和管理插件(扩展Rails功能)
profiler
描述运行时一个URI请求处理的简介信息
runner
在Web上下文之外运行一个项目内的方法。
server
启动web服务器
关于临时文件
在tmp文件夹重,你可一找到一些子目录关于缓存内容,sessions,sockets等。通常这些文件会被Rails自动清理。除非错误运行,你可能需要到这里查看并删除旧文件
关于第三方代码
vendor目录是第三方代码存放出。这些代码有两种来源
1>Rails安装插件到vendor/plugins中
2>你可以在vendor文件夹中安装Rails和所有的依赖。
如果你想使用系统版本的gems,可以删除vendor/cache目录
关于配置文件
config目录包含了配置Rails的文件
运行你的应用前,Rails加载并执行
config/enviroment.rb和config/application.rb.这两个文件建立的标准环境加载包含了一下文件夹(相对与你的项目根目录)
-app/controllers
目录和子目录
-app/models
目录和所有子目录(命名以下划线或小写字母开头)
-vendor目录和每个plugin下插件子目录中的lib目录
-app,
app/helpers, app/mails, app/services, config, 和lib
以上目录一旦存在就会被加到加载路径中
另外,在enviroments目录下,你可以根据不同环境(开发,测试,产品)做不同的配置
depot>
rails server -e development
depot>
rails server -e test
depot>
rails server -e production
你也可以创建自己的环境。在数据库配置文件增加一个单元,在config/enviroments重创建新的文件
详见rake
doc:guides
命名约定
Rails的菜鸟们也许会对Rails对命名的自动处理感到困惑。例如在调用模型类Person时,Rails会到数据库中找到名为people的表。
这里被Rails使用的默认配置都可以通过再配置重写
驼峰标识,下划线,复数形式
ruby中约定,变量名使用小写字母,并且字母间用下划线分割;类和模块中无下划线,每个单词的第一个字母为大写(驼峰标识)。例如变量order_status,类名LineItem
Rails通过两种方式处理这种命名约定。首先,她假设数据库表的名称,比如变量名称,使用小写字母和下划线连接单词。她也假设表名称总是复数,这导致表名称如orders和third_parties
从另一方面讲,Rails假设文件名都是用下划线分割的小写字母组成
如图可见该约定规则:
在一般的ruby代码中在引用类和模块之前你需要使用require关键字来包含Ruby源文件。由于Rails知道文件名与类名间的关系,因而require常常是不需要的。
模块化Controllers
目前位置,我们的controllers都存在与app/controllers文件夹下。有时结构化该文件夹会带来更多便利。例如我们可以放于app/controllers/admin/,名为book_controller.rb。即,controller名的最后一部分可以解析为一个文件名如name_controller.rb,前面部分可以从app/controllers导航到该文件所在的目录.
设想我们的程序有两组controllers(admin/xxx和content/xxx)两个组都定义了book
controller.即app/controller文件夹下的admin和content子目录里都有book_controller.rb文件,并且这两个controller文件里都有名为BookController的类。
处理这种问题,Rails假设app/controller的子目录里的controllers都是定义在Ruby的modules(模块)中的。因此,在admin中的类应该这样声明
class Admin::BookController < ActionController::Base
# ...
end
同理,在Content模块:
class Content::BookController < ActionController::Base
# ...
end
这些controllers的模板也应该在app/views的子文件夹中,如下相应的请求:
http://my.app/admin/book/edit/1234
可以请求到
app/views/admin/book/edit.html.erb
以上工作 你可以通过命令
myapp>
rails generate controller Admin::Book action1 action2
...
- 大小: 27.3 KB
分享到:
相关推荐
《Web开发敏捷之道-应用Rails进行敏捷Web开发》是一本深度探讨如何利用Ruby on Rails框架进行高效、灵活的Web应用程序开发的专业书籍。该书的第四版,也被称为"Agile Web Development with Rails (4th edition)",是...
### Web 开发敏捷之道 —— 应用 Rails 进行敏捷 Web 开发 第三版 #### 一、Rails 的背景与发展 **Rails**,全称为 **Ruby on Rails**,是一种用于构建 Web 应用的开源框架,由 David Heinemeier Hansson 在 2004 ...
Web开发敏捷之道 应用Rails进行敏捷Web开发第4版 原版书及代码 (rails3.2版) 原书名为:Agile Web Development with Rails 4th for Rails 3.2 代码包含了 3.0、3.1、3.2 ,与原书配套的是3.2。 里面包含了第三版的...
《Web开发敏捷之道:应用Rails进行敏捷Web开发》是由美国知名开发者Sam Ruby撰写的一本经典著作,该书的第四版提供了全面且深入的指导,帮助读者掌握使用Ruby on Rails框架进行敏捷开发的方法和技术。Ruby on Rails...
( [应用Rails进行敏捷Web开发(第4版)].(Agile.Web.Development.with.Rails.4th.Edition).S.Ruby&D.Thomas&D.H.Hansson.原版
《Ruby on Rails Web 敏捷开发第四版》是一本专为希望深入了解 Ruby on Rails 的开发者编写的书籍。该书主要针对 Rails 3 版本进行讲解,因此对于想要学习 Rails 3 的读者来说,这本书具有很高的参考价值。作者们在...
《敏捷Web开发与Rails:程序指南 第四版》是一本深度探讨使用Ruby on Rails框架进行敏捷Web应用开发的专业书籍。本书旨在帮助开发者充分利用Rails 4的特性,提高开发效率,实现快速迭代和高质量的代码编写。 Rails是...
《敏捷Web开发与Rails》第四版是一本专为软件开发者设计的权威指南,全面涵盖了使用Ruby on Rails框架进行敏捷Web应用开发的知识。Rails 3是该版本的重点,它引入了许多新特性和改进,使得开发过程更为高效且灵活。...
在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...
通过上述分析,我们可以看到,《敏捷Web开发与Rails》第三版不仅是一本关于Rails框架的技术书籍,更是一部指导开发者如何运用敏捷方法论进行Web开发的经典之作。无论对于初学者还是经验丰富的开发者而言,本书都具有...