- 浏览: 30473 次
- 性别:
- 来自: 苏州
最新评论
Agile Web Development with Rails 3nd Edition学习笔记-创建Depot工程
- 博客分类:
- Ruby and Rails
开始学习ROR了,由于在开始跟着书做这个Depot工程时才决定把整个过程整理出来写成博客的,所以书开始部分讲的环境安装部分都没有整理。等以后再补充上来吧。
由于是刚刚开始学这个,所以在实验和总结的时候还是有一些疑问。在下面的内容中也都记录了下来。以便以后能够把曾遇到的问题逐个解决。当然,如果看了我总结的内容的朋友有知道答案的,还望指点小弟一二。另外,如果我描述的东西有哪里不正确的。还望朋友们指出。谢谢!
1. 创建Depot工程
创建一个使用MySQL作为后台数据库的Rails工程
工程创建好之后,数据库的配置信息在生成的depot/config/database.yml文件中。
内容如下:
如果需要,可以修改生成的数据库名称,以及用户名。
如果用户名不填,则使用使用者的登录用户访问数据库。
2. 创建开发数据库
该命令将创建一个没有任何表格的空数据库。数据库名为depot_development。
3. 测试数据库设置:
在实验的时候,执行这条命令之后出现了如下错误信息:
在网上查了一下,原来是没有权限访问数据库。因为默认生成的数据库配置信息中的password字段没有设置。简单的设置该字段之后问题解决。
问题:
是不是可以不在这里填写数据库访问的密码呢?感觉很不安全的说。不知道后面是不是有关于这个问题的说明。等看到了再在这里增加解决方法吧。
还有个问题,就是是不是如果没有进行第二步的操作创建空数据库的话,这条命令是否能够自动的创建数据库呢?没有尝试。问题先留在这里。等跟着书上的介绍把这个Depot做完了之后再实验吧。
这条命令其实会访问数据库,并在数据库中生成一个名为schema_migrations的表。这个表用来维护每次执行该命令时,使用depot/db/migrate/YYYYMMDDXXXXXX_create_products.rb文件名中YYYMMDDXXXXXX部分作为‘Version’来管理表的变更信息。
问题:
上面Version中的XXXXXX部分,从格式来看,应该是该rb文件生成的时分秒信息。但是看了实验时生成的值和生成该文件的时间之后,发现根本匹配不上。所以不知道是什么了。也就没有写成HHmmss来描述。)
回答:
经过后面实验时的观察,XXXXXX部分的值为格林威治时间。也就是0时区的时间。所以migrate文件的文件名规则为<YYYYMMDDHHmmss>-<operation>.rb。
4. 创建Products模块,并生成表
该命令将会生成如下信息:
这里就可以看到那个用来创建数据库表的rb文件了。
其实表中的字段是由这条命令中第二行的内容指定的。具体字段和类型为:
问题:
通过ruby script/generate scaffold -h查看该命令的格式是:
script/generate scaffold ModelName [field:type, field:type]
这里只能指定字段的名称和类型,那么怎么指定字段是必填字段还是非必填字段呢?
生成products表:
这条命令将会使用刚生成的db/migrate/20080601000001_create_products.rb文件来创建表和其中的字段。并将“20080601000001”作为Version字段的值填写到schema_migrations表中。
从生成的表可以看到,该命令除了按照我们指定的字段名和类型生成了相应的字段外,还生成了如下
4个字段:
其中,id字段是必填并且自动增加的字段。而最后那个既没有名字也没有类型的字段是必填字段。其它我们指定的字段都不是必填字段。
问题:
1. 最后那个字段是什么?做什么用的?
2. 我们指定的字段怎么设置成必填字段呢?
5. 运行
到现在,我们还没有写一行代码,但是这个工程已经可以带着数据库运行了。
运行下面的命令启动Web服务:
在浏览器地址栏中输入
我们就可以看到Product部分的运行情况了。默认生成代码为我们提供了一个和论坛很类似的界面。虽然界面还是非常非常的简单和原始,但是基本的功能却都具有了。我们可以添加新的“帖子”,查看“帖子“列表,并可以查看、修改或者删除一个“帖子“。
从这点来看,ROR在开发论坛上真的是非常的简单和便利了。不过这才刚刚开始。不知道之后是否会同样的简单。而那些更高级的功能以及数据的管理是否都能够很容易的实现。
由于是刚刚开始学这个,所以在实验和总结的时候还是有一些疑问。在下面的内容中也都记录了下来。以便以后能够把曾遇到的问题逐个解决。当然,如果看了我总结的内容的朋友有知道答案的,还望指点小弟一二。另外,如果我描述的东西有哪里不正确的。还望朋友们指出。谢谢!
1. 创建Depot工程
创建一个使用MySQL作为后台数据库的Rails工程
引用
rails --database=mysql depot
工程创建好之后,数据库的配置信息在生成的depot/config/database.yml文件中。
内容如下:
引用
development:
adapter: mysql
encoding: utf8
database: depot_development
username: root
password:
host: localhost
adapter: mysql
encoding: utf8
database: depot_development
username: root
password:
host: localhost
如果需要,可以修改生成的数据库名称,以及用户名。
如果用户名不填,则使用使用者的登录用户访问数据库。
2. 创建开发数据库
引用
mysqladmin -u root -p create depot_development
该命令将创建一个没有任何表格的空数据库。数据库名为depot_development。
3. 测试数据库设置:
引用
rake db:create RAILS_ENV='development'
在实验的时候,执行这条命令之后出现了如下错误信息:
引用
Couldn't create database for {"encoding"=>"utf8","username"=>"root",
"adapter"=>"mysql","database"=>"depot_development", "pool"=>5,
"password"=>nil,"socket"=>"/var/run/mysqld/mysqld.sock"},
charset: utf8,collation: utf8_general_ci (if you set the charset
manually,make sure you have a matching collation)
"adapter"=>"mysql","database"=>"depot_development", "pool"=>5,
"password"=>nil,"socket"=>"/var/run/mysqld/mysqld.sock"},
charset: utf8,collation: utf8_general_ci (if you set the charset
manually,make sure you have a matching collation)
在网上查了一下,原来是没有权限访问数据库。因为默认生成的数据库配置信息中的password字段没有设置。简单的设置该字段之后问题解决。
问题:
是不是可以不在这里填写数据库访问的密码呢?感觉很不安全的说。不知道后面是不是有关于这个问题的说明。等看到了再在这里增加解决方法吧。
还有个问题,就是是不是如果没有进行第二步的操作创建空数据库的话,这条命令是否能够自动的创建数据库呢?没有尝试。问题先留在这里。等跟着书上的介绍把这个Depot做完了之后再实验吧。
引用
rake db:migrate
这条命令其实会访问数据库,并在数据库中生成一个名为schema_migrations的表。这个表用来维护每次执行该命令时,使用depot/db/migrate/YYYYMMDDXXXXXX_create_products.rb文件名中YYYMMDDXXXXXX部分作为‘Version’来管理表的变更信息。
问题:
上面Version中的XXXXXX部分,从格式来看,应该是该rb文件生成的时分秒信息。但是看了实验时生成的值和生成该文件的时间之后,发现根本匹配不上。所以不知道是什么了。也就没有写成HHmmss来描述。)
回答:
经过后面实验时的观察,XXXXXX部分的值为格林威治时间。也就是0时区的时间。所以migrate文件的文件名规则为<YYYYMMDDHHmmss>-<operation>.rb。
4. 创建Products模块,并生成表
引用
ruby depot/script/generate scaffold product \
title:string description:text image_url:string
title:string description:text image_url:string
该命令将会生成如下信息:
引用
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/products
exists app/views/layouts/
exists test/functional/
exists test/unit/
exists public/stylesheets/
create app/views/products/index.html.erb
create app/views/products/show.html.erb
create app/views/products/new.html.erb
create app/views/products/edit.html.erb
create app/views/layouts/products.html.erb
create public/stylesheets/scaffold.css
create app/controllers/products_controller.rb
create test/functional/products_controller_test.rb
create app/helpers/products_helper.rb
route map.resources :products
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/product.rb
create test/unit/product_test.rb
create test/fixtures/products.yml
create db/migrate
create db/migrate/20080601000001_create_products.rb
exists app/controllers/
exists app/helpers/
create app/views/products
exists app/views/layouts/
exists test/functional/
exists test/unit/
exists public/stylesheets/
create app/views/products/index.html.erb
create app/views/products/show.html.erb
create app/views/products/new.html.erb
create app/views/products/edit.html.erb
create app/views/layouts/products.html.erb
create public/stylesheets/scaffold.css
create app/controllers/products_controller.rb
create test/functional/products_controller_test.rb
create app/helpers/products_helper.rb
route map.resources :products
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/product.rb
create test/unit/product_test.rb
create test/fixtures/products.yml
create db/migrate
create db/migrate/20080601000001_create_products.rb
这里就可以看到那个用来创建数据库表的rb文件了。
其实表中的字段是由这条命令中第二行的内容指定的。具体字段和类型为:
引用
title:string # 字段:title 类型:string
description:text # 字段:description 类型:text
image_url:string # 字段:image_url 类型:string
description:text # 字段:description 类型:text
image_url:string # 字段:image_url 类型:string
问题:
通过ruby script/generate scaffold -h查看该命令的格式是:
script/generate scaffold ModelName [field:type, field:type]
这里只能指定字段的名称和类型,那么怎么指定字段是必填字段还是非必填字段呢?
生成products表:
引用
rake db:migrate
这条命令将会使用刚生成的db/migrate/20080601000001_create_products.rb文件来创建表和其中的字段。并将“20080601000001”作为Version字段的值填写到schema_migrations表中。
从生成的表可以看到,该命令除了按照我们指定的字段名和类型生成了相应的字段外,还生成了如下
4个字段:
引用
id:integer
created_at:datetime
updated_at:datetime
:
created_at:datetime
updated_at:datetime
:
其中,id字段是必填并且自动增加的字段。而最后那个既没有名字也没有类型的字段是必填字段。其它我们指定的字段都不是必填字段。
问题:
1. 最后那个字段是什么?做什么用的?
2. 我们指定的字段怎么设置成必填字段呢?
5. 运行
到现在,我们还没有写一行代码,但是这个工程已经可以带着数据库运行了。
运行下面的命令启动Web服务:
引用
ruby script/server
在浏览器地址栏中输入
引用
http://localhost:3000/products
我们就可以看到Product部分的运行情况了。默认生成代码为我们提供了一个和论坛很类似的界面。虽然界面还是非常非常的简单和原始,但是基本的功能却都具有了。我们可以添加新的“帖子”,查看“帖子“列表,并可以查看、修改或者删除一个“帖子“。
从这点来看,ROR在开发论坛上真的是非常的简单和便利了。不过这才刚刚开始。不知道之后是否会同样的简单。而那些更高级的功能以及数据的管理是否都能够很容易的实现。
发表评论
-
Agile Web Development with Rails 3nd Edition学习笔记-隐藏空的购物车
2010-04-29 23:19 1047到现在位置,我们已经完成了产品列表和购物车功能。虽然看起来已经 ... -
Agile Web Development with Rails 3nd Edition学习笔记-高亮显示改变
2010-04-28 22:24 883当客户点击了“Add to Cart“按钮之后,购物车的数据改 ... -
Agile Web Development with Rails 3nd Edition学习笔记-创建一个基于Ajax的购物车
2010-04-27 22:59 952上篇笔记中,我们通过partial把购物车信息放到了index ... -
Agile Web Development with Rails 3nd Edition学习笔记-使用Ajax将购物车放入Sidebar
2010-04-27 00:38 1073之前,当用户点击了“Add to Cart“按钮之后,页面会跳 ... -
Agile Web Development with Rails 3nd Edition学习笔记-完成购物车
2010-04-26 22:41 867这一篇,我们来完成我们的购物车的制作吧。 首先,为了客户能够很 ... -
Agile Web Development with Rails 3nd Edition学习笔记-错误处理
2010-04-26 22:07 868这一部分其实东西很少,这里不做过多的描述,仅仅是记录下来,以便 ... -
Agile Web Development with Rails 3nd Edition学习笔记-创建更智能的购物车
2010-04-25 17:05 822上篇笔记我们已经让我们的网站能够保存客户选购的产品了,但是,似 ... -
Agile Web Development with Rails 3nd Edition学习笔记-创建购物车
2010-04-23 22:06 905上篇笔记中,我们为保 ... -
Agile Web Development with Rails 3nd Edition学习笔记-把Sessions放进数据库
2010-04-21 22:21 1030depot在线商店需要一个能保存用户选购的各种各样的商品的地方 ... -
Agile Web Development with Rails 3nd Edition学习笔记-格式化价格和添加购物按钮
2010-04-19 22:42 1047这篇只有很少的一点内 ... -
Agile Web Development with Rails 3nd Edition学习笔记-创建页面布局模板
2010-04-19 01:32 1025典型的网站一般都具有 ... -
Agile Web Development with Rails 3nd Edition学习笔记-创建产品目录列表
2010-04-18 19:48 800按照书上的引导,我们 ... -
Agile Web Development with Rails 3nd Edition学习笔记-美化我们的程序
2010-04-18 18:37 1036我们的程序现在显示出来的画面还是那么的原始和难看,接下来我们要 ... -
Agile Web Development with Rails 3nd Edition学习笔记-为数据增加校验处理
2010-04-18 00:23 988数据的校验是在model ... -
Agile Web Development with Rails 3nd Edition学习笔记-向数据库表追加字段
2010-04-18 00:07 935我们可以使用migration工具在存在的数据库表中追加字 ...
相关推荐
Agile Web Development with Rails, 2nd Edition <br>有两份PDF文件,大小分别是7.39MB和6.55MB <br>作者: Dave Thomas , David Heinemeier Hansson , Leon Breedt , Mike Clark , James Duncan Davidson ,...
### 敏捷Web开发与Rails 3:关键知识点解析 #### 一、Rails版本与兼容性 本书《敏捷Web开发与Rails》第三版是基于Rails 2编写的。截至本书印刷时,当前可用的Rails Gem版本为2.1。书中所包含的所有代码均已在该...
文件列表中的《Agile Web Development with Rails 3nd Edition Beta.pdf》很可能是这本书的电子版,读者可以通过阅读此PDF文件获取完整的学习资料,包括详细的章节讲解、示例代码和练习题,以便在实践中不断巩固和...
在《Agile Web Development with Rails》中,读者可以学习到如何运用敏捷方法来规划项目,实施增量式开发,并通过频繁的反馈来提高产品质量。 Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web开发框架,它...
Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly. You concentrate on creating the application, and Rails takes care of the details., Tens of thousands of ...
总之,"depot"压缩包为学习者提供了一个宝贵的实践平台,通过实际操作,学习者可以更好地理解《Agile Web Development with Rails-Second Edition-Beta》中介绍的理论和技巧,从而提升自己的Rails开发技能。
Rails敏捷开发第三版,很不错的rails入门书,对初学rails的人很有用
《敏捷Web开发与Rails》第四版是一本专为软件开发者设计的权威指南,全面涵盖了使用Ruby on Rails框架进行敏捷Web应用开发的知识。Rails 3是该版本的重点,它引入了许多新特性和改进,使得开发过程更为高效且灵活。...
《敏捷Web开发与Rails:程序指南 第四版》是一本深度探讨使用Ruby on Rails框架进行敏捷Web应用开发的专业书籍。本书旨在帮助开发者充分利用Rails 4的特性,提高开发效率,实现快速迭代和高质量的代码编写。 Rails是...
书中的"Pragmatic.Bookshelf.Agile.Web.Development.with.Rails.2nd.Edition.Dec.2006.eBook-BBL"可能是该书籍的电子版文件,它包含了全书的章节和内容。读者可以通过这个电子版深入学习Rails开发的各种技巧和最佳...
Agile Web Development with Rails, Third Edition by Sam Ruby, Dave Thomas, David Heinemeier Hansson Rails just keeps on changing. Rails 2, released in 2008, brings hundreds of improvements, including...
Agile Web Development with Rails 1-14节_ppt(老师发的修正版)
《敏捷Web开发与Rails 2nd Edition》源码解析 在Web开发领域,Rails框架以其高效、灵活和生产力提升的特点,成为了许多开发者首选的工具。《敏捷Web开发与Rails 2nd Edition》这本书深入浅出地介绍了如何使用Ruby ...
《敏捷Web开发与Rails》是一本深度探讨如何利用Ruby on Rails框架进行敏捷Web开发的指导书籍,由Dave Thomas、David Heinemeier Hansson等多位在Rails社区有着深厚贡献的作者共同编写。本书不仅覆盖了Rails的基本...