接上。上篇ruby基本的环境算是搭建成功。但还是半成。因为如果你加入任何controller的话,会报错的。rails默认数据库是sqlite3,你需要安装sqlite3的ruby驱动。
从http://hlee.javaeye.com/blog/342575摘抄一段:
首先下载rar包,包里一共有6个文件,将它们全部解压缩到你ruby的bin目录中,假设你的ruby安装在了c盘
那么这个目录就应该是 c:\ruby\bin
接下来 开始->运行->CMD
在命令提示符里面敲 gem install -l c:\ruby\bin\sqlite3-ruby-1.2.3-mswin32.gem 回车
看到下面的提示
C:\>gem install -l c:\ruby\bin\sqlite3-ruby-1.2.3-mswin32.gem
Successfully installed sqlite3-ruby-1.2.3-x86-mswin32
1 gem installed
Installing ri documentation for sqlite3-ruby-1.2.3-x86-mswin32…
Installing RDoc documentation for sqlite3-ruby-1.2.3-x86-mswin32…
说明你安装成功了
现在创建一个站点目录吧:控制台下输入:rails -d postgresql E:\Mytest,然后会在E:\Mytest搭个rails框架。
然后输入:ruby script/server
启动服务器。浏览器里输入:http://localhost:3000,可以打开了。
这时把站点目录/Public/index.html删除掉。
sqlite对于大多数人来说还是不太熟悉的。
顺便说下mysql的支持:
首先安装好MySql。
下载ruby连接MySql 的so文件 在http://www.vandomburg.net/pages/mysql-ruby-windows-2.7.1.zip
把mysql.so 放到ruby 的lib\ruby\site_ruby\1.8\i386-msvcrt下.
下载一个msvcr70.dll放在C:\windows\system32\下。
一般这样就可以了。
如果出错的话,再把MySQL/bin/libmysql.dll复制到ruby\bin下。
还是来操作postgresql,话说postgresql其实不比mysql差,无论哪方面。
首先安装postgresql,在http://www.postgresql.org/download/windows下载One click installer,最新版本是postgreSQL 8.4。安装后,把postgresql安装目录C:\Program Files\PostgreSQL\8.4\bin下所有.dll复制到C:\Ruby\Bin里面。这样是避免ruby的postgresql和postgresql的版本不一致,访问站点会出现:”无法定位序数 284 于动态链接库 SSLEAY32.dll 上”的错误。
然后打开控制台,转到你的站点目录(就刚才那个E:\Mytest)里,输入“gem install postgres-pr”,这个就是安装postgresql的驱动了。但在站点/config/database.yml里的adapter不要设成postgres-pr,而要设成postgresql。同时把development结点设置如下(注意冒号后面有个空格,同时注意大小写,不然不认):
development:
adapter: mysql
database: cookbook
host: localhost
username: root
password:
保存,退出,现在基础总算搞定了。
在postgreSQL中新建数据库Demo:
CREATE DATABASE “Demo”
WITH OWNER = postgres
ENCODING = ‘UTF8′
LC_COLLATE = ‘Chinese, Hong Kong S.A.R.’
LC_CTYPE = ‘Chinese, Hong Kong S.A.R.’
CONNECTION LIMIT = -1;
新建表tbl_UserInfo:
CREATE TABLE “tbl_UserInfo”
(
“uName” character varying(50) NOT NULL,
“uPwd” character varying(50) NOT NULL
)
WITH (
OIDS=FALSE
);
ALTER TABLE “tbl_UserInfo” OWNER TO postgres;
插入一条数据:
INSERT INTO “tbl_UserInfo”(
“uName”, “uPwd”)
VALUES (’Dujianyu’, ‘123456′);
注意字段大小写,postgresql是分大小写的。
现在控制台路径依然在E:\Mytest(站点目录)里,输入:
ruby script/generate controller say
调用script目录下的generate来生成一个say的控制器。
打开站点目录\app\controllers\,看到已经生成一个say_controller.rb,打开,
把全部源码改为:
require ‘postgres’
class SayController < ApplicationController
def hello
@time = Time.now
conn = PGconn.connect(’localhost’,5432,”,”,’Demo’,'postgres’,'123456′)
@res = conn.query(’select * from “tbl_UserInfo”‘)
conn.close
end
def goodbye
end
end
在这个controller里定义了两个变量,下面供view调用。
有了controller,接下来就加view了,在站点目录\app\views\say\新建一个hello.rhtml,对应刚才的action:hello。然后打开加内容如下:
<html>
<head>
</head>
<body>
Application:<%= @time %>
<br/>
<table border=”1″ width=”300px”>
<tr>
<td>uName</td>
<td>uPwd</td>
</tr>
<%
for data in @res
%>
<tr>
<td>
<%=data['uName']%>
</td>
<td>
<%= data['uPwd']%>
</td>
</tr>
<%
end
%>
</table>
</body>
</html>
其实就是html+后台代码,跟asp差不多。
加完以后,浏览器输入:http://localhost:3000/say/hello,如下显示:
Application:Wed Jul 15 14:15:13 +0800 2009
| uName | uPwd |
| Dujianyu | 123456 |
说明读取数据库成功!
附postgreSQL数据类型说明:
SERIAL8
存储自动递增的惟一整数,最多 8 字节。
BIT
固定长度的位串。
BIT VARYING(n)
VARBIT(n)
可变长度的位串,长度为 n 位。
BOOLEAN
存储逻辑布尔值(true/false/unknown),可以是 TRUE、t、true、y、yes 和 1,或者 FALSE、f、false、n、no 和 0。
BYTEA
用于存储大型二进制对象(比如图形)的原始二进制数据。使用的存储空间是 4 字节加上二进制串的长度。
CHAR(n)
CHARACTER(n)
包含固定长度的字符串,用空格填充到长度 n。
DATE
用 4 字节的存储空间存储日历日期(年、月、日)。
DATETIME
存储日历日期和天内的时间。
DECIMAL(p,s)
NUMERIC(p,s)
存储精确的数值,精度(p)和刻度(s)为 0 或更高。
FLOAT4
REAL
存储浮点数,精度为 8 或更低和 6 个小数位。
FLOAT8
DOUBLE PRECISION
存储浮点数,精度为 16 或更低和 15 个小数位。
SMALLINT
存储有符号或无符号 2 字节整数。
INTEGER
存储有符号或无符号 4 字节整数。
INT8
BIGINT
存储有符号或无符号 8 字节整数。
SERIAL
SERIAL4
存储自动递增的惟一整数值,最多 4 字节存储空间。
TEXT
存储长度可变的大型字符串数据,最多 1 GB。PostgreSQL 自动压缩 TEXT 字符串。
TIME (WITHOUT TIME ZONE |
WITH TIME ZONE)
存储天内的时间。如果不存储数据库服务器的时区,就使用 8 字节的存储空间;如果存储时区,就使用 12 字节。
TIMESTAMP (WITHOUT TIME ZONE |
WITH TIME ZONE)
存储日期和时间。可以存储或不存储数据库服务器的时区,使用 8 字节存储空间。
VARCHAR(n)
CHARACTER VARYING(n)
CHARACTER VARYING
存储可变长度的字符串,最大长度为 n。不存储末尾的空格。