Ruby on Rails Tutorial (Michael Hartl)中文翻译第二章 演示程序 (1)_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Ruby on Rails Tutorial (Michael Hartl)中文翻译第二章 演示程序 (1)

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

 2010/12/30 8:05:55  iseesea  http://iseesea.javaeye.com  我要评论(0)
  • 摘要:(Iseesea翻译,转帖请保留~谢谢~~有支持才有坚持~)基于Rails3.0.3俺试着翻译这本书,如有异议或者需要可以直接看原文。。。嘎嘎。不足之请多指教~.我边学边翻译吧,顺便学习英语。http://railstutorial.org/由于第一章主要是一些介绍和关于git的使用,所以就不翻译了,有需要的话再回去翻译。第二章演示程序在这一章,我们将开发一个简单的演示程序来显示一些Rails的魅力
  • 标签:程序 翻译 rails Ruby RIA
(Iseesea翻译,转帖请保留~谢谢~~有支持才有坚持~)

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

http://railstutorial.org/

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

第二章 演示程序
在这一章,我们将开发一个简单的演示程序来显示一些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"



             图片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节);

2.1.1 users model

user不用的结构对应着在页面上会有不同的表格,我们用最简单的结构来创建User model,它有一个唯一的int类型的主键,id,和一个公共可见的名字,string类型,和一个email地址,可以看做用户的第二用户名。所以,user的数据模型如下图2.2所示,

           图2.2
我们将在6.1.1节中学到,上表中的Users标签,代表着在数据库中的一个users表,上表的属性就是它的字段。

2.1.2 microposts model
micropost的数据模型比user的更简单,它只有一个id和一个string类型的content来代表发言的内容。有一个附加的关系,我们希望将micropost和特定的user联系起来,我们可以可以添加一个user_id来记录post的所有者,这样,micropost的最终结果如图2.3所示,

图2.3
我们可以在2.3.3节(更详细的在第11章)中找到user_id的属性如何可以让我们更简单的表达user和micropost之间一对多的关系。

2.2 Users 资源

在这一节,我们将实现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
(---------------------------------华丽的分割线,我需要休息啦。——————)







发表评论
用户名: 匿名