|
[笔记]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 [email protected]") %>
</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章,还是没有完,差一点,明天来。 |
|