文/Terrance
这篇文章针对那些对Ruby On Rails感兴趣的朋友,一步一步的带你在10分钟内写出第一个Rails程序,并且包含了完整的CRUD,也就是 Create,Read,Update,Delete(创建,读取,更新,删除)。通过这篇教程,你就可以看到相对于其他流行的网络应用程序框 架,Rails的优势有多么的明显。
首先我们需要安装Rails,安装Rails的最简单方法是下载Instant Rails: http://instantrails.rubyforge.org/
Instant Rails不需安装,绿色软件,直接解压缩到一个目录就可以,解压推荐用WinRAR的最新版,因为InstantRails的目录结构比较复杂,很多解 压软件会出错。解压好以后运行InstantRails.exe,Instant Rails会侦测到这是第一次运行,询问是否对配置文件进行初始化,回答是。Instant Rails将会打开,点击写着I的按钮,在下拉菜单中选择Rails Applications -> Open Ruby Console Window(你也可以使用windows中的命令窗口)。
打开的命令窗口将位于Rails安装目录下面,首先我们需要做的是建立我们的第一个Rails程序。我们的第一个程序将是一个图片收集程序,允许用户添加,查看,修改,删除图片。为了简单,我们将省去上传功能。
在提示符下面输入:
rails album
上面这行告诉rails我们要建立一个新的程序,名字是album。回车以后,rails将会自动建立程序的基本结构。屏幕上将会出现类似于这样的输出:
C:\rails\rails_apps>rails album
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create db
create doc
create lib
create lib/tasks
create log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create script/process
create test/fixtures
create test/functional
create test/integration
create test/mocks/development
create test/mocks/test
create test/unit
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create Rakefile
create README
create app/controllers/application.rb
create app/helpers/application_helper.rb
create test/test_helper.rb
create config/database.yml
create config/routes.rb
create public/.htaccess
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/boot.rb
create config/environment.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/console
create script/destroy
create script/generate
create script/performance/benchmarker
create script/performance/profiler
create script/performance/request
create script/process/reaper
create script/process/spawner
create script/process/inspector
create script/runner
create script/server
create script/plugin
create public/dispatch.rb
create public/dispatch.cgi
create public/dispatch.fcgi
create public/404.html
create public/422.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
现在,我们的第一个程序的基本结构就已经建立好了。我们的程序需要数据库来保存我们收集的图片,所以下一步,我们的目标就是建立一个新的数据库。一 般在这个时候,其他的编程框架就需要用一些数据库相关的工具,比如用SQL脚本。但是在Rails中我们并不需要其他的软件去完成这件事。
先进入到我们刚刚建立好的程序的目录下:
cd album
这时你的提示符应该看起来有点像这个:
C:\rails\rails_apps\album>
然后在提示符下面输入:
rake db:create:all
程序输入如下:
C:\rails\rails_apps\album>rake db:create:all
(in C:/rails/rails_apps/album)
这样,我们的数据库已经建立好了。下一步开始变得有趣了,我们要让Rails自动生成我们程序的基本CRUD代码,同时给数据库加入数据表。我们要做的是一个图片收集程序,所以我们需要基本数据有:图片的名称,图片的描述和图片的链接URL。
在提示符下面输入:
ruby script/generate scaffold Picture title:string description:text url:string
看起来有一点乱,不过其实很简单。我们告诉rails我们要执行的动作是生成代码,并在我们上一步建立的数据库中加入一个叫做图片Picture的 数据表,里面的内容包括类型为字符串的图片标题title,类型为文字的图片描述description,类型为字符串的图片链接url。回车后,返回的 内容如下:
C:\rails\rails_apps\album>ruby script/generate scaffold Picture title:string description:text url:string
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/pictures
exists app/views/layouts/
exists test/functional/
exists test/unit/
create app/views/pictures/index.html.erb
create app/views/pictures/show.html.erb
create app/views/pictures/new.html.erb
create app/views/pictures/edit.html.erb
create app/views/layouts/pictures.html.erb
create public/stylesheets/scaffold.css
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/picture.rb
create test/unit/picture_test.rb
create test/fixtures/pictures.yml
create db/migrate
create db/migrate/001_create_pictures.rb
create app/controllers/pictures_controller.rb
create test/functional/pictures_controller_test.rb
create app/helpers/pictures_helper.rb
route map.resources :pictures
这样,Rails已经为了我们生成了用来建立数据表的代码。我们运行它就好了。
rake db:migrate
这一步的输入如下:
C:\rails\rails_apps\album>rake db:migrate
(in C:/rails/rails_apps/album)
== 1 CreatePictures: migrating ================================================
-- create_table(:pictures)
-> 0.0780s
== 1 CreatePictures: migrated (0.0780s) =======================================
现在数据表就完全建立好了。下一步要做什么呢?开始写冗长乏味的程序?很遗憾,Rails已经帮我们写好了。不相信嘛?现在就去看看吧。
首先,打开Rails自带的调试HTTP服务器。
ruby script/server
屏幕上将会显示如下信息:
C:\rails\rails_apps\album>ruby script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. INT => stop (no restart).
** Mongrel 1.1.2 available at 0.0.0.0:3000
** Use CTRL-C to stop.
如果你看到这些,证明你的HTTP服务器打开了。现在,不要关掉这个命令窗口。打开你的浏览器,去看看你刚刚建立好的第一个包含完整CRUD功能的网络应用程序(Web Application)吧!
在浏览器中输入:
http://localhost:3000/pictures
当然你也可以直接点击这里的链接。
怎么样?我们的第一个Rails程序还不坏吧? 点击New Picture将把我们带到添加新图片的页面,输入图片的名称,描述和链接然后点击Create将会把新的图片信息保存到数据库。尝试添加几个图片进入我 们刚刚建立的程序中,可以看到在列表页面中的右侧,每个图片都有Show,Edit和Destory功能,分别负责图片的查看,编辑和删除。
就是这样,我们的第一个Rails程序建立好了,很简单,不是吗?
总结
整个过程中我们所有用到的和建立程序本身相关的命令就是下面这简单的几条:
rails album
rake db:create:all
ruby script/generate scaffold Picture title:string description:text url:string
rake db:migrate
比起写几百行代码去完成相同的工作,Rails为我们节省了宝贵的时间,让我们把更多的精力放在程序的功能和界面上。当然,本教程中只介绍了Rails最基本的应用,还有更多方便有趣的功能等你去探索。怎么样?和Ruby On Rails一起疯狂吧!