由于同事强烈推荐,公司最近在考虑将一些小型项目从Spring+ibatis+webx(mvc框架)开发改为ruby on rails开发,所以就接触了ruby语言和rails这个框架,感觉这个框架很适合小型项目的开发,重null到一个连接数据库的拥有曾删改查的网站(当然没有ued,界面很简单),一分钟之内就可以搞定啊,速度那是相当快啊,有木有啊,呵呵
如果做java web开发的就知道,有时候我们做的都是重复的劳动,从建立数据库开始然后写dao-bo-ao-web层,基本上都是重复的劳动,共性也很大,无非就是那些曾删改查,以前在学校就这样认为了,现在项目大了感觉更强了,感觉我们的时间都浪费在这里,大家想应该有一种方法解放大家(ruby语言的创建也就是这个目的),所以像rails这样的框架应运而生,这类框架称之为敏捷开发,要问多敏捷,你只用建立一个domain,然后后面的事情就交给框架做了吧!谁用谁知道,但国内用这个的还不多,以至于我编写我的第一个helloword程序就用了两天,一天半都用在搭建环境上(不是环境难搭建,是我总是犯错误),所以在这里写出来,让大家学习的时候不用两天,就可以开始rails之旅
这里我重rubyonrails的官网文档讲(全英文啊,让我这个英语年年60分的童鞋压力很大啊)
(1)what is rails
“Rails is a web application development framework written in the Ruby language”
rails是一个用ruby语言编写的web程序开发框架
(2)他的目的
“It is designed to make programming web applications easier by making assumptions about what every developer needs to get started.”
也就是使在开发web程序的时候更快
(3)rails还有几条特别有意思的指导原则
1.DRY “Don’t Repeat Yourself"
2 Convention Over Configuration
3
REST is the best pattern for web applications
大家自己去体会吧
2 The
MVC Architecture
第二是mvc,这个不管你用什么语言做web开发,你都应该知道的模式,而rails就运用了这个模式,在等下建立项目的时候你会有更深的体会
(1)Models
A model represents the information (data) of the application and the rules to manipulate that data
一个模型相当于就是一个javabean吧,在rais中一个模型对应数据库中的一张表,如果用过hibernate的童鞋就该知道(不知道这是不是传说中的模型驱动开发)
(2)Views
Views represent the user interface of your application
说白了,views就是UI
(3) Controllers
Controllers provide the “glue” between models and views
也就是连接views和models的
3 ruby on rails安装(也就是让我最纠结的)
我走过很多弯路,希望大家不要走了
(1)应为对于java程序员都用惯java了,所以jruby要更适合于java程序员,jruby是ruby写的运行在jvm上的语言(不知道定义的是否正确)
所以首先下载jruby
http://www.jruby.org/ 解压,设置环境变量,然后再cmd中jruby -v 现实版本就ok
(2)然后是rails
下载rails.gem(根据版本名字会不同,最新3.07)
http://rubyforge.org/frs/?group_id=307 gem是一个相当于maven的工具,可以下载很多依赖
下载后cmd定位到rails.gem那个文件夹,运行 gem insall rails.gem,然后rails等一些依赖都会被下载
安装完成后一样cmd rails -v 如果版本不是3.07 运行命令gem update rails
(3)好像就没有3了,如果上面两部都成功的话,你的环境就搭建好了,是不是很简单啊,是不是啊,我为什么就要两天呢!
4 ruby on rails 的HelloWord程序
(1) cmd 运行命令 rails new appname --database=mysql (appname 是你的项目名称,由于rails会自动生成数据库配置文件,所以这里指定数据库后面改的会少一点,默认是 SQLite3)
这样建立程序后运行会报错(大概的意思是找不到mysql2驱动),这里我纠结了半天,国内网站都找不到解决方法,国外倒是很多,所以又考验我的english了
最后的解决办法是创建项目的时候加上一个参数-,-template=http://jruby.org/rails3.rb 然后问题就解决了(连官方文档都没这么做,就不知道这么他就可以),大概就是照一个模板来创建数据库
完整的命令
rails new appname --database=mysql --template=http://jruby.org/rails3.rb
(2)修改
config/database.yml
那些参数不用我说吧,什么usernam 啊password啊.....你懂的
(3)运行rake db:create
如果数据库配置没有错的话,这里会自动创建你指定的数据库,如果报错,那你就检查你的配置吧
(4)启动服务器 rails自带了一个服务器 执行命令 rails server(其实rails s 就ok了)
如果服务器启动成功,他会提示在本地3000端口
打开浏览器 http://localhost:3000 如果无问题就会有个页面
(5)创建一个控制器
1.输入命令
rails generate controller home index
2.修改/views/home/index.html.erb
改为熟悉的<h1>Hello, Rails!</h1>
3.删除public/index.html
4.修改config/routes.rb
找到这里修改
#...
# You can have the root of your site routed with "root"
# just remember to delete public/index.html.
root :to => "home#index"
然后访问helloword就出来了
这里还没有连接数据库,还没体验到rails的强大
(6)
rails generate scaffold Post name:string title:string content:text
创建一个Post的model,有name,title,content字段,后面是类型
这条命令后,rails会创建重model,view,controler的所有东西(很强大啊)
(7)想model maping到数据库中
运行rake db:migrate
成功后数据库就会有你指定的字段了,除了你指定的字段,rails还帮你创建id,创建时间和跟新时间的两个时间戳,还有一张vision表(应该记录版本的吧)
(8)修改app/views/home/index.html.erb,为post的页面添加一个连接
<h1>Hello, Rails!</h1>
<%= link_to "My Blog", posts_path %>
(9) 然后就是http://localhost:3000,点击mypost你就可以增删改查了
至此 你的比hellword更强大的程序就ok了,你想一下如果熟悉的话你花多少时间?3分钟?2分钟?还是更少?
其实rails的功能远远不止这些,什么校验啊,ajax啊,ormapping ...........等等自己去发现吧
然后要介绍的就是rubyonrail的开发工具,其实自己愿意什么都可以,但最好用的我觉得还是rubymine 收费的,你说好用不,不过我有序列号,要的可以给我邮件evan8126@gmai.com!
由于我也是初学,如果有什么错误请高手指正,如果有问题请留言,能解决的一定回复!Thanks