Agile Web Development with Rails 读书笔记 (一)

这本书看了一段时间,一直没有上手,今天刚才北京回来,新的项目需要提供一个原型,感觉比较适合ROR的开发方式,决定把《Agile Web Development with Rails》中的例子,走一遍,看一下开发的效果。

由于以前很少做WEB程序,做的也基本上是改,而且也很少使用MySql数据库,因此在调试的过程中,的确遇到了很多低级的错误,记录下来,提个醒吧,希望对大家有点帮助。

第1~5章

安装Ruby

下载地址:http://rubyinstaller.rubyforge.org

Mysql管理工具:ems sql manager 2005

下载和安装Ruby和MySql还是比较简单的,由于书中没有提到Mysql的一些管理,最好还是在Google上查看写资料,这样上手能更好一点。

在ROR中常用命令的需要注意的问题

大小写

ruby中所有的命令中,命令动词不区分大小写,但是参数则区分大小写

例如 Ruby –v和ruby –v都可以执行,但是ruby –V就不可以正确执行了。

显示Ruby的版本的命令

ruby –v

执行成功后屏幕显示如ruby 1.8.5 <2006-12-15 patchlevel 12> [i386-mswin32]

解释:ruby的版本为1.8.5 的mswin32版本

显示RubyGems版本

gem --version

显示为但前版本如0.9.2

RubyGems是一个方便而强大的Ruby程序包管理器( package manager),类似RedHat的RPM.它将一个Ruby应用程序打包到一个gem里,作为一个安装单元。

更新Rails

gem update rails

可以自动更新本地的Rails,并依次提示如下更新,需要用户确认

Activesupport
Activerecord
Actionpack
Actionmailer
Actionwebservice

更新Rails是很重要的,这个命令也很简单,程序的升级和维护也是十分方便的。

显示帮助

ruby –h
gem –help

创建应用程序

在命令行依次中执行

E:
CD Code
rails test

会在e:\Code目录中创建一个test目录,系统会在该目录中创建该应用程序的所有目录。

启动Webrick服务

进入到应用程序所在目录,执行ruby script/server即可。

例如:

E:\
CD code
CD Test
ruby script/server

正常执行后会有如下显示
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2007-03-13 11:08:52] INFO  WEBrick 1.3.1
[2007-03-13 11:08:52] INFO  ruby 1.8.5 (2006-12-25) [i386-mswin32]
[2007-03-13 11:08:52] INFO  WEBrick::HTTPServer#start: pid=3232 port=3000
表示服务已经正常运行。

终止服务在CMD窗口执行 Ctrl-C即可。

创建一个控制器


ruby script/generate controller 控制器名称
例如 ruby script/generate controller Say
http://localhost:3000/
该地址会列出关于Ruby的一些文档和帮助

语法举例

编写action

class SayController < ApplicationController
  def hello
  @time=Time.now
end
end
RHTML-动起来
<html>
  <head>
    <title>Hello,Rails!</title>
  </head>
  <body>
    <h1>Hello from Rails!</h1>
    <li>Addition:<%= 1+2 %></li>
    <li>Concatenation:<%= "cow"+"boy" %></li>
    <li>Time in one hour:<%= 1.hour.from_now %></li>
    <% 3.times do %>
      Ho!<br/>
    <% end %>
    <% 3.downto(1) do |count| %>
       <%= count %>   <br/>
    <% end %>
    EMail=<%= h("Ann & Bill <frazers@isp.email>") %>
    </br>
    It is now <%= Time.now() %>
  </body>
<html>

有意思的是数字1也是对象,存在很多的属性和方法。

另外< > 要紧跟着 %,否则系统会认为是错误的。

另外%也要紧跟着=号,否则也会报错。

链接到另外的网页
<%= link_to "hello", :action => "hello" %>
第一个参数指向超链接文本,第2个参数告诉Rails如何生成超链接
:Action是Ruby的一个符号

常见问题
RHTML中文乱码

RHTML和RB文件应该保存成UTF-8的格式,否则中文显示为乱码,下边为网上的一些解决办法,我试验了一下反而觉得不好用。

(转)
Ruby on Rails 学习:解决中文乱码问题
初学Rails,简单的做了一个例子,发现存在中文问题。
大致中文问题归类如下:
1、页面无法显示中文,产生中文乱码
2、Mysql数据库采用utf8后,页面采用utf8,数据库保存是乱码,但页面显示正常。
3、时间格式在页面上的中文显示产生乱码。
打开:application.rb:修改代码如下显示:
1 class ApplicationController < ActionController::Base
2 before_filter :set_charset
3 def set_charset
4 @headers["Content-Type"] = "text/html; charset=utf-8"
5 end
6 end
同时对页面(*.rhtml)上进行增加编码控制:
<meta http-equiv="Content-type" content="text/rhtml; charset=utf8" />
同时在保存页面时,进行编码转换成utf8格式。
做完以上工作的话,利用mysql数据库客户端工具Navicat查看数据库,你会发现数据库中保存的中文数据会出现乱码,因此需要进一步处理:
1、建数据库时采用utf8编码进行建库,同时建表或者导表时要注意采用utf8编码。
2、采用Navicat连接数据库时在Advanced Settings中选择Encoding编码为utf8,同时取消Use MySQL character set的默认选项,再进行连接。
进行以上设置,将会在数据库中显示出正常的中文。同时页面上显示也会是中文,但你会发现对于时间的显示上仍然存在一些小问题。因此在输出时间时需要进行(original_date.strftime("%Y/%m/%d"))转换格式。

第6章

MySql

启动Mysql命令
Mysqld

安装Mysql为服务
Mysqld-nt –install 安装
Mysqld-nt –remove 卸载

执行MySql脚本

mysql -h 服务器  -u  用户 -p密码 <sql脚本

数据库脚本
CreateDatabase
create database depot_development;
create database depot_test;
create database depot_production;
grant all on depot_development.* to 'test'@'localhost';
grant all on depot_test.* to 'test'@'localhost';
grant all on depot_production.* to 'prod'@'localhost' identified by 'mysql';
CreateTable
drop table if exists products;
create table products(
id                  int                             not null auto_increment ,
title               varchar(100)              not null,
description      text                           not null,
img_url           varchar(200)              not null,
price              decimal(10,2)            not null,
primary key (id)
);

这个是书中的脚本,觉得有点问题,大家试试看吧。

配置数据库

修改config/database.yml文件内容

development:
  adapter: mysql
  database: depot_development
  username: root
  password: mysql
  host: localhost

test:
  adapter: mysql
  database: depot_test
  username: root
  password: mysql
  host: localhost

production:
  adapter: mysql
  database: depot_production
  username: root
  password: mysql
  host: localhost

在调试的过程中,总是说/usr/lib/ruby/1.8/yaml.rb:133:in `load': syntax error on line 16, col 2:这个错误,经过Google后才知道,所有的:后边必须有一个空格,否则就报错,真是晕。

创建脚手架

ruby script/generate scaffold Product  Admin

Product代表模型名称,采用大小写混合的方式
Adimin代表控制器名称,采用大小写混合的方式


这些就是今天的试验了,总算弄出来,例子中的真确界面,程序也是正确执行了,感觉上手还是比较快的,在使用中发现的问题在网络上基本上都可以查到,耽误时间的地方主要是因为不熟悉ROR和MySqL上面了,还有就是ROR的一些默认配置文件中的空格问题,刚开始的时候地区很蒙,呵呵,剩下等更加详细的使用了,到此第6章,还是没有完,差一点,明天来。

posted on 2007-03-13 16:44  Duiker  阅读(1946)  评论(0编辑  收藏  举报

导航