这篇日志的内容是在看完《web敏捷开发》《Web开发敏捷之道》的第二章后的的一个实践。平台是windows xp sp2,编辑器是gVim 7.2。实践的过程中遇到了几个问题,庆幸还是很顺利的一一解决了,整体下来挺流畅的,因为问题基本还是在于开发环境上。进入正题:
首先搭建开发环境。
在win32上有两个选择,一个是使用Instant Rails这个开发包,安装好之后便可以直接使用了,因为其包括了rails、服务器Apache以及数据库mySQL。但是,这里实践时并未使用这种方法,而是使用第二种方法。第二种方法其实也挺容易的,就是后面会碰到这次实践的主要问题。安装方法的步骤如下:
- 安装ruby,我选用的版本是ruby 1.8.6。按默认选项安装完成之后,便已经包括了RubyGems这个包管理器以及一个编辑器SciTE。
- 更新RubyGems,安装完成后的版本是0.9.x,在命令行中输入gem update --system进行更新,完成之后的版本是1.3.1。
- 安装rails:gem install rails 。
这样,rails环境的安装告一段落。
选择编辑器
工欲善其事,必先利其器。
花了点时间去了解了下关于ruby开发工具。《web敏捷开发》《Web开发敏捷之道》书上有简要的介绍了下ruby的编辑器。值得一提的是,不管是书上还是rails官方网站上都首推Mac OS x平台上的TextMate,那个x分钟开发出一个博客的视频里所用的编辑器也是Textmate。Win平台有类似于e-window,同样是商业产品,懒得去折腾破解啥的。另外一个貌似还不错的IDE是aptana,这个IDE之前有一些日志介绍,安装RadRails插件后便可以进行开发;没有深入去使用,因为觉得目前还不适合去使用这种IDE。最后的最后,选择了gVim,带有rails.vim这个东东。rails.vim的主页上的一段介绍蛮有意思的:
TextMate may be the latest craze for developing Ruby on Rails applications, but Vim is forever. This plugin offers the following features for Ruby on Rails application development.
着手编写程序
- 在命令行中输入rails demo创建一个demo应用程序。
- 输入ruby script/generate controller say创建一个类
- 编辑demo/app/controller目录下的controller_say这个文件,添加如下代码:
class SayController < ApplicationController
def index
@time = Time.now()
end
end
- 运行WEBrick服务器:ruby script/server。
- 在浏览器打开http://lcoalhost:3000/say/index
三大错误分析及解决方法:
在这5个步骤之后,查看浏览器时问题出现了。若按《web敏捷开发》《Web开发敏捷之道》一书上说明,此时在浏览器里看到的内容将是提示缺少模板文件:
Template is missing
Missing template say/index.erb in view path D:/Ruby/work/demo/app/views:
但是,此时浏览器上提示未能载入sqlite3文件:
MissingSourceFile in SayController#
no such file to load -- sqlite3
这个问题出现的原因在于在创建rails应用程序时若未指定所使用的数据库,那么默认使用sqlite。所以,很明显这是由于未安装sqlite3-ruby这个数据库驱动程序造成的。解决的方法可以选择安装sqlite这个数据库或者选用其他的数据库(如mySQL)。我这里选用前者,在命令行输入:
gem install sqlite3-ruby
回车之后,又一段错误:
Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.
c:/ruby/bin/ruby.exe extconf.rb install sqlite3-ruby --remote
nmake
'nmake' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1
.2.4 for inspection.
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_
api/gem_make.out
这个问题在sqlite-ruby项目主页的bugs报告中有提到,原因在于sqlite3-ruby 1.2.4不兼容win32平台,所以指定sqlite3-ruby的版本即可:
gem install sqlite3-ruby --version 1.2.3
刷新浏览器,第三个错误出现:
没有找到sqlite3.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。
原因很明显缺少sqlite3.dll这个文件,在sqlite的官网下载页面上下载sqlitedll-3_6_10.zip,并解压至c:/ruby/bin/目录下。
至此问题解决。刷新浏览器后终于看到了模板文件丢失的提示。
错误总结,若在win32上使用sqlite作为开发数据库,第二需要安装sqlite3-ruby,并且指定版本为1.2.3,第二需要下载sqlite3.dll这个文件并放置于ruby安装目录的bin文件夹下。
编写Hello,Rails
创建上面所提示缺少的模板文件index.rhtml,文件名称对应于say_controller.rb文件中所设定的action名称。index.rhtml文件如下:
<html>
<head>
<title>Hello,Rails!</title>
</head>
<body>
<h1>Hello,Rails!</h1>
<p>now is <%= @time %></p>
</body>
</html>
刷新浏览器便可以看见结果了,第一个rails应用程序结束了。当然还只是熟悉了编辑环境,以及流程而已。