一个简单的基于Ruby on Rails的web应用事例
目的:完成对一张表的增、删、改、查操作。
1、创建一个Rails 应用程序:
在命令行模式下,进入你的工作空间目录,如新建一个目录:rails_app,执行rails sample命令,即生成了sample目录及一些列的文件,这就是我们工程所在的目录。
2、创建数据库:
我们使用MySQL作为我们的后台数据库,可以使用很多工具来操作MySQL数据库,如:EMS、MySQL QueryBrowser、PHPMyAdmin等,在这里,我们使用命令行来直接操作数据库。
cd sample
sample> mysql -u root -p
Enter password: *******
Welcome to the MySQL monitor. Commands end with ; or g.
mysql> create database sample_development;
mysql> create database sample_test;
mysql> create database sample_production;
mysql> grant all on sample_development.* to ‘samleuser’@'localhost’;
mysql> grant all on sample_test.* to ‘samleuser’@'localhost’;
mysql> grant all on sample_production.* to ‘samleuser’@'localhost’;
mysql> exit
我们共创建了三个数据库,并将权限全部分配给了用户samleuser,在此不得不提一下sample\config\database.yml,该文件为rails应用程序的数据库配置文件,可以使用Edit Plus或者Notepad2等工具来编辑,该文件的基本格式为:
development:
adapter: mysql
database: db_development
username: user
password: pwd
host: localhost
encoding: utf8
test:
adapter: mysql
database: db_test
username: user
password: pwd
host: localhost
production:
adapter: mysql
database: db_production
username: user
password: pwd
host: localhost
建三个库的目的很明显了吧?
database.yml 有三个部分,分别是development,test 和production 数据库。使用编辑器修改每个字段以与我们创建的数据库相匹配。注意,在新的database.yml 文件中我们让development 和test 环境下的username 字段为空。这是很方便的,因为它意味着不同的开发者将分别使用自己的username 来连接。但是,我们应该报告一些与MySQL 相关的东西,数据库驱动程序,和操作系统,并让这些字段为空,这样Rails会试着以root 身份连接数据库。如在数据库中没有’root’@’localhost.localdomain’用户,你会得到一个错误,此时在这两个字段放置明确的 username ,上面这三段数据库的设置,只需要另一段生效就可以了,在我们建库的时候,我们将权限是全部分配给一个用户的,如果我们当初是分配给三个用户,那么在此,我们可以通过设置不同的用户和对应数据库,以作不同的访问控制。在此,我们保留development,即:
development,
adapter: mysql
database: db_development
username: samleuser
password:
host: localhost
encoding: utf8
(这个参数可加可不加,我在windows上使用webrick的时候,如果不加,中文无法操作,但是在unix上发布的时候,是没有问题的,也许是当时我在windows上的MySQL字符集设置错了,酌情使用。)
这样表示我们使用db_development这个库。
3、创建数据表
通常在rails的应用中,我们使用脚本来创建数据表,在sample\db\create.sql中加入一下脚本:
drop table if exists products;
create table products (
id int not null auto_increment,
title varchar(100) not null,
description text not null,
image_url varchar(200) not null,
price decimal(10,2) not null,
primary key (id)
);
进入应用实例目录下,在命令行下执行
mysql -h localhost -u samleuser -p db_development 。
4、生成应用代码
进入sample目录,执行:
ruby script/generate scaffold products 或者分步:
ruby script/generate model products
ruby script/generate controller productsrails会创建很多rhtml文件,这些就是rails自动针对products表生成的管理界面了。
5、配置控制器
修改文件..app/controllers/products_controller.rb,如下:
class ContactController < ApplicationController
model :products
scaffold :products
end
6、启动WebRick
webrick为rails自带的web server,执行
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
[2006-05-19 11:44:45] INFO WEBrick 1.3.1
[2006-05-19 11:44:45] INFO ruby 1.8.2 (2004-12-25) [i386-mswin32]
[2006-05-19 11:44:45] INFO WEBrick::HTTPServer#start: pid=2672 port=3000
则表示启动正常,打开浏览器,访问http://localhost:3000/products来访问我们建立的针对products的维护。
注意:如果在建立好了一个模块的维护后,如现在的products,发现字段需要调整,那么我们只需要将要添加的字段,添加到建库脚本中,按照以上的步骤,从步骤3开始重复一次,就可以了。