Ruby on Rails Tutorial (Michael Hartl)中文翻译第二章 演示程序 (1)

(Iseesea翻译,转帖请保留~谢谢~~有支持才有坚持~)

基于Rails3.0.3 俺试着翻译这本书,如有异议或者需要可以直接看原文。。。嘎嘎。不足之请多指教~.我边学边翻译吧,顺便学习英语。

http://railstutorial.org/

由于第一章主要是一些介绍和关于git的使用,所以就不翻译了,有需要的话再回去翻译。

[size=large]第二章 演示程序 [/size]
在这一章,我们将开发一个简单的演示程序来显示一些Rails的魅力。目标是通过使用Scaffold 生成器来快速地创建一个程序从而给大家一个高水平的Ruby on Rails (传统步骤开发Web程序)编程综述,就像BOX1.1(第一章中关于Scaffolding介绍)中说的那样,本书接下来其他部分将会采用和本章相反的方法来学习Rails。接下来的章节中我们将会开发一个完整的程序,并逐渐的介绍每一个Rails3中新的观念,但是对一个简单概述来说(最直接的需要)Scaffold 生成器是不可替代的。这个演示程序允许我们通过URL和它进行交互,让我们了解Rails 程序的结构,包括第一个例子中为什么Rails喜好的REST 结构。

接下的演示程序中,将会由一些用户和他相关的类似Twitter风格的运用程序组成(其实就是围脖吧。microposts估计是那个发布信息的意思,嘎嘎),所有的功能都还没有实现,而且很步骤看起来很神奇,但是不要担心,所以的程序我们都将在第三章从零开始开发,而且我可以对后面材料提供一个详细的向前引用注解(原文是 I will provide plentiful forward-references to later material。 这句话很拗口,估计是指会在后面解释前面的运用)。于此同时,请保持一点耐心和信心,这本数的意义在于让你超越这些浅显的东西,通过Scaffold 驱动的方法去获得对Rails的深层次理解。

[size=medium;]2.1 规划程序[/size]

在这一节中,我们将规划处我们程序的大纲。和第1.2.3节一样,我们从用 Rails 命令长生我们的运用程序骨架开始,
Listing 2.1:


$cd ~/rails_projects
$rails new demo_app
$cd demo_app

接下来,我们使用一个文本编辑器来编辑bundler需要的Gemfile文件。
Listing 2.1. 演示程序的Gemfile文件

source 'http://rubygems.org'

gem 'rails', '3.0.3'
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'



提醒一下,我需要sqlite3-ruby的gem版本是1.2.5.如果这个版本不能不使用,你可以试用1.3.1。
我们完成配置之后就可以使用bundle命令来安装这些包括的gem文件,

$ bundle install

最后,我们可以初始化Git库(本书第一章的后半部分介绍了Git的常用方法,有需要的可以去看原文的地址)

$ git init
$ git add .
$ git commit -m "Initial commit"


[img]http://railstutorial.org/images/figures/create_demo_repo-full.png[/img]
图片2.1: 在GitHub上创建演示程序库


$ git remote add origin git@github.com:<username>/demo_app.git
$ git push origin master

现在,我们可以开始程序本身的工作了。在传统的Web程序开发中,第一步是创建我们程序所需要结构决定的的data model,对我们的例子来说,它是一个非常精简的微博程序,他只有用户和用户说说(microposts),这样我们就先为我们的程序创建一个用户的model--user(2.1.1节),接着我们给增加microposts的model(2.1.2节);

[size=medium]2.1.1 users model[/size]

user不用的结构对应着在页面上会有不同的表格,我们用最简单的结构来创建User model,它有一个唯一的int类型的主键,id,和一个公共可见的名字,string类型,和一个email地址,可以看做用户的第二用户名。所以,user的数据模型如下图2.2所示,
[img]http://dl.iteye.com/upload/attachment/367717/04b466eb-0d36-36ba-84b5-96c28ee04ac8.png[/img]
图2.2
我们将在6.1.1节中学到,上表中的Users标签,代表着在数据库中的一个users表,上表的属性就是它的字段。

[size=medium]2.1.2 microposts model[/size]
micropost的数据模型比user的更简单,它只有一个id和一个string类型的content来代表发言的内容。有一个附加的关系,我们希望将micropost和特定的user联系起来,我们可以可以添加一个user_id来记录post的所有者,这样,micropost的最终结果如图2.3所示,
[img]http://dl.iteye.com/upload/attachment/367723/52b778a4-8e43-3074-b2c5-3d0738495adc.png[/img]
图2.3
我们可以在2.3.3节(更详细的在第11章)中找到user_id的属性如何可以让我们更简单的表达user和micropost之间一对多的关系。

[size=medium]2.2 Users 资源[/size]

在这一节,我们将实现2.1.1节中User数据模型的网络接口。通过这个网络接口和模型的组合,使我们可以通过HTTP协议来实现对user资源的CRUD(添加,查询,更新,和删除)
简介里面提到的,我们的User资源将会通过脚手架生成器(Scaffold generator)来产生。脚手架生成器是每一个Rails项目的标配;scaffold的参数是要产生的资源名称,在这里是User,后面可以的可选参数,可以使数据模型的属性和类型。

$ rails generate scaffold User name:string email:string
invoke active_record
create db/migrate/20100615004000_create_users.rb
create app/models/user.rb
invoke test_unit
create test/unit/user_test.rb
create test/fixtures/users.yml
route resources :users
invoke scaffold_controller
create app/controllers/users_controller.rb
invoke erb
create app/views/users
create app/views/users/index.html.erb
create app/views/users/edit.html.erb
create app/views/users/show.html.erb
create app/views/users/new.html.erb
create app/views/users/_form.html.erb
invoke test_unit
create test/functional/users_controller_test.rb
invoke helper
create app/helpers/users_helper.rb
invoke test_unit
create test/unit/helpers/users_helper_test.rb
invoke stylesheets
create public/stylesheets/scaffold.css


命令后面更上 name:string 和email:string,可以让我们在rails自己产生的页面表单中有这2个数据模型的属性。如图2.2,提示,在命令中没必要添加属性id,因为他会被rails自动创建。
程序的第一步,我们应该使用rake运行数据库迁移,如下:

$ rake db:migrate
== CreateUsers: migrating ====================================================
-- create_table(:users)
-> 0.0017s
== CreateUsers: migrated (0.0018s) ===========================================


就这样非常简单的更新了数据库,我们创建了一个新的users数据模型,我们将会在6.1.1节中学习数据库迁移migrations。
(如果大家的数据库是空的,或者程序新建的话,先运行 rake db:create,他会创建开发环境和测试环境的数据库)
之后我们可以通过命令 rails s(rails server的简写)来启动服务器,
(该命令也可以带参数,可以设置启动的服务器,默认启动的是WEBrick,也可以设置启动的环境,默认是开发环境)

$ rails s
=> Booting WEBrick
=> Rails 3.0.3 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server


我们可以在 http://localhost:3000/上看到我们的演示程序。

Box 2.1 Rake
在Unix系统上,make工具在执行源代码上有着非常重要的作用,非常多的电脑黑客输下面的代码输到不用大脑了。。。(可以这样翻译吧。。。muscle memory)
$ ./configure && make && sudo make install
(---------------------------------华丽的分割线,我需要休息啦。——————)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值