ruby on rails入门基础
最近有想学一下ruby on rails的冲动,JAVA这东西的确很复杂,做一个系统要消耗相当多的人力与时间,开始厌倦了这种开发方式。之前一直有想学ror的,但是时机不成熟,没那么多的时间与精力,最近突然有了这个决定,那就试一下吧。
虽然早就有了准备,但是搞ror并不是想的那么容易,其基本环境的搭建也不简单,概念也比较多,开始花了几天时间看了一下ruby的基本语法,几天以后发现这样不行,太慢了,于是开始尝试搞个ror的例子,然后就接触了一些新的概念了。基本安装过程大概搞了两三天吧,网上说法很多,但说得都不全,因此多花了些时间,下面把这个基本的入门过程写下来,做个简单的回顾吧。
一、安装ruby、rubygems
在http://rubyinstaller.org/可以下载一个针对windows平台的ruby安装文件,如现在使用的是rubyinstaller-1.9.1-p378-rc2.exe,这个安装文件自带了rubygems,所以不必单独下载,如果机子已经装过了,可以通过gem update --system 命令进行升级。
二、安装rails
经过第一步之后,就可以在windows控制台中使用ruby命令了,如ruby -v,可以显示当前ruby的版本号,直接输入gem install rails -y就会自动搜索网络安装rails,也可以通过gem update rails更新rails。
三、安装数据库
一般例子使用sqlite数据库,这个数据库有点类似HSQLDB,是一个内存数据库,使用很简单,先通过gem install sqlite3-ruby,然后在http://www.sqlite.org/download.html下载sqlite-3_5_6.zip & sqlitedll-3_5_6.zip两个文件,将其解压得到一个exe文件与一个dll文件,将其放入ruby安装目录的bin目录下即可。
鉴于mysql的流行,有必要讲一下mysql的安装过程,首先执行gem install mysql命令,然后将mysql安装目录的bin/libmySQL.dll文件复制到ruby安装目录的bin目录下(还有一个步骤与具体的应用相关联,见后面的步骤)。
尽管如此,试用的时候还是发现连接mysql时服务器一点都不稳定,多刷新两次服务器就停了,也没看见报什么错,而且在使用rake db:migrate时也会出错,因此在windosw平台学习的时候最好还是使用sqlite3,至于连接mysql为什么不稳定,目前还不清楚,但至少mysql(2.8.1)版本的驱动是很不稳定的。原因:
the Ruby MySQL gem currently does not support MySQL 5.1
后来在网上偶然看见过这种情况,实际上mysql的libmySQL.dll版本的问题,不能用最新的版本。附件上传了一个,应该没有问题,把libmySQL.dll文件放在ruby/bin目录下。
不过这个mysql gem 存在字节编码问题,所以后来有了更好的mysql2,这个mysql2在linux下安装相对简单,如果要在windows下使用,需要先安装devkit,然后才能安装mysql2,这方面的资料可在网上找找。
四、创建应用
基本环境建好后,就可以做一个简单的应用了:
1.建一个ruby的工作目录,如rubywork,通过windows控制台命令进行其目录下,然后通过rails demo命令创建当前工作区的基本文件。
2.启动服务,通过demo>ruby script/server webrick启动web服务,可用ctro+c关闭服务,其中webrick是一个ror的web服务器,这个服务器主要在开发环境中使用,实际应用中可使用mongrel。值得一提的在script目录中,包含了许多有用的脚本。启动成功后可看见以下图片:
webrick也是属于测试开发的时候使用,性能肯定好不了的,在windows平台下,推荐使用mongrel,但是目前的mongrel好像并不支持ruby1.9,所以用不了。
3.创建一个简单的控制器,通过demo> ruby script/generate controller Say创建一个叫Say的控制器,通过这个命令,生成了一个控制器需要的大部分文件,只需要对少量的文件进行更改即可,首先来看生成的demo>app>controllers>say_controller.rb文件:
上面的代码可以看出命令生成了一个空的控制器,现在需要做的就是向其添加相应的操作代码,如添加一个跳转方法hello,可以这样:
这个hello对应相当于一个Action方法,这样就可以通过http://localhost:3000/say/hello来访问这个方法了,但是这个访问这个方法后该往里跳转呢,因此还得增加一个erb文件才可以,默认情况下,ror会访问demo>app>views>say目录下与controller中的action方法相同的erb文件,即hello.erb,由于命令没有生成此文件,所以必须手动添加此文件,文件内容如下:
这样访问http://localhost:3000/say/hello时,就会显示相应的Hello Rails了。
还有一个地方需要注意,就是关于数据库的配置方法,上面讲了,与数据库相关联的文件实际上是在具体的应用中的,更准确的说,是在应用目录>config>database.yml文件中,此文件就是数据库连接的配置文件,如果使用sqlite3,则内容如下:
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
如果使用的mysql,则内容如下:
development:
adapter: mysql
database: development
username: root
password: 200596
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: mysql
database: test
username: root
password: 200596
pool: 5
timeout: 5000
production:
adapter: mysql
database: production
username: root
password: 200596
pool: 5
timeout: 5000
需要注意的是,development,test,production对应的database最好是分别对应不同的数据库。
这样一个基本的ror工程就完成了。
虽然早就有了准备,但是搞ror并不是想的那么容易,其基本环境的搭建也不简单,概念也比较多,开始花了几天时间看了一下ruby的基本语法,几天以后发现这样不行,太慢了,于是开始尝试搞个ror的例子,然后就接触了一些新的概念了。基本安装过程大概搞了两三天吧,网上说法很多,但说得都不全,因此多花了些时间,下面把这个基本的入门过程写下来,做个简单的回顾吧。
一、安装ruby、rubygems
在http://rubyinstaller.org/可以下载一个针对windows平台的ruby安装文件,如现在使用的是rubyinstaller-1.9.1-p378-rc2.exe,这个安装文件自带了rubygems,所以不必单独下载,如果机子已经装过了,可以通过gem update --system 命令进行升级。
二、安装rails
经过第一步之后,就可以在windows控制台中使用ruby命令了,如ruby -v,可以显示当前ruby的版本号,直接输入gem install rails -y就会自动搜索网络安装rails,也可以通过gem update rails更新rails。
三、安装数据库
一般例子使用sqlite数据库,这个数据库有点类似HSQLDB,是一个内存数据库,使用很简单,先通过gem install sqlite3-ruby,然后在http://www.sqlite.org/download.html下载sqlite-3_5_6.zip & sqlitedll-3_5_6.zip两个文件,将其解压得到一个exe文件与一个dll文件,将其放入ruby安装目录的bin目录下即可。
鉴于mysql的流行,有必要讲一下mysql的安装过程,首先执行gem install mysql命令,然后将mysql安装目录的bin/libmySQL.dll文件复制到ruby安装目录的bin目录下(还有一个步骤与具体的应用相关联,见后面的步骤)。
尽管如此,试用的时候还是发现连接mysql时服务器一点都不稳定,多刷新两次服务器就停了,也没看见报什么错,而且在使用rake db:migrate时也会出错,因此在windosw平台学习的时候最好还是使用sqlite3,至于连接mysql为什么不稳定,目前还不清楚,但至少mysql(2.8.1)版本的驱动是很不稳定的。原因:
引用
the Ruby MySQL gem currently does not support MySQL 5.1
后来在网上偶然看见过这种情况,实际上mysql的libmySQL.dll版本的问题,不能用最新的版本。附件上传了一个,应该没有问题,把libmySQL.dll文件放在ruby/bin目录下。
不过这个mysql gem 存在字节编码问题,所以后来有了更好的mysql2,这个mysql2在linux下安装相对简单,如果要在windows下使用,需要先安装devkit,然后才能安装mysql2,这方面的资料可在网上找找。
四、创建应用
基本环境建好后,就可以做一个简单的应用了:
1.建一个ruby的工作目录,如rubywork,通过windows控制台命令进行其目录下,然后通过rails demo命令创建当前工作区的基本文件。
2.启动服务,通过demo>ruby script/server webrick启动web服务,可用ctro+c关闭服务,其中webrick是一个ror的web服务器,这个服务器主要在开发环境中使用,实际应用中可使用mongrel。值得一提的在script目录中,包含了许多有用的脚本。启动成功后可看见以下图片:
webrick也是属于测试开发的时候使用,性能肯定好不了的,在windows平台下,推荐使用mongrel,但是目前的mongrel好像并不支持ruby1.9,所以用不了。
3.创建一个简单的控制器,通过demo> ruby script/generate controller Say创建一个叫Say的控制器,通过这个命令,生成了一个控制器需要的大部分文件,只需要对少量的文件进行更改即可,首先来看生成的demo>app>controllers>say_controller.rb文件:
- class SayController < ApplicationController
- end
class SayController < ApplicationController end
上面的代码可以看出命令生成了一个空的控制器,现在需要做的就是向其添加相应的操作代码,如添加一个跳转方法hello,可以这样:
- class SayController < ApplicationController
- def hello
- @time=Time.now
- end
- end
class SayController < ApplicationController def hello @time=Time.now end end
这个hello对应相当于一个Action方法,这样就可以通过http://localhost:3000/say/hello来访问这个方法了,但是这个访问这个方法后该往里跳转呢,因此还得增加一个erb文件才可以,默认情况下,ror会访问demo>app>views>say目录下与controller中的action方法相同的erb文件,即hello.erb,由于命令没有生成此文件,所以必须手动添加此文件,文件内容如下:
- <html>
- <head>
- <title>
- Hello Rails
- <%=@time%>
- </title>
- </head>
- <body>
- Hello Rails
- </body>
- </html>
<html> <head> <title> Hello Rails <%=@time%> </title> </head> <body> Hello Rails </body> </html>
这样访问http://localhost:3000/say/hello时,就会显示相应的Hello Rails了。
还有一个地方需要注意,就是关于数据库的配置方法,上面讲了,与数据库相关联的文件实际上是在具体的应用中的,更准确的说,是在应用目录>config>database.yml文件中,此文件就是数据库连接的配置文件,如果使用sqlite3,则内容如下:
引用
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
如果使用的mysql,则内容如下:
引用
development:
adapter: mysql
database: development
username: root
password: 200596
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: mysql
database: test
username: root
password: 200596
pool: 5
timeout: 5000
production:
adapter: mysql
database: production
username: root
password: 200596
pool: 5
timeout: 5000
需要注意的是,development,test,production对应的database最好是分别对应不同的数据库。
这样一个基本的ror工程就完成了。