通过Ruby On Rails 框架来更好的理解MVC框架
 
1.背景
   因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC框架。如今我了解到一款十分优秀的框架 Rails,而且爱不释手,所以推荐给大家,帮助你更好的了解 MVC框架。
2.环境准备
   操作系统:Linux( 建议使用Ubuntu12.04或者更高 windows7 下面开发真的很费事,搭建环境比较困难 ) 。
    Ruby: 1.9.3 (建议不要使用 2.0以上的,因为针对它的开源项目很少)
    Rails: 和1.9.3 配套的 Rails 3.2.13 (3.2系列的都可以,建议不要使用 Rails 4)
    备注:因为搭建环境十分麻烦,既不像 windows那样无脑点击安装,又不是像传统的 apt-get安装,所以针对如何安装 Ruby On Rails环境请参考附录1
3.开发MVC 框架
    我们开发一个发表文章的网站
    打开终端 : 测试 rails -v (如果不可以的话,参看附录一)
    (1).新建一个项目: rails new demo –skip-bundle ( 当前目录下面已经有一个 demo文件夹 )
    (2)cd demo 修改 Gemfile文件第一行 ,将 source 改成 http://ruby.taobao.org/
    (3)配置项目: bundle install
    (4)创建一个文章(Post)的 Model类 ,然后在创建一个控制类( PostsController),可以对文章进行增删改差,在创建一系列的 View用于现实。我们查看当前目录 demo
在查看app目录:
    assets  controllers  helpers  mailers  models  views
 
    其中的model 对应的就是model class , controller就是 control class, view 就是显示层。
    上面试对MVC 的介绍,下面我们创建这写针对文章 post的三层结构,之需要一条命令:
    rails generate scaffold post title:string author:name content:text
   我们需要将这个model绑定到数据库:
    rake
    启动项目:
    rails server
测试: 打开浏览器: localhost:3000/posts/ 大功告成,可以增删改差 post。 ( 代码中的是http://localhost:3000/admins)
4.MVC Rails 中的体现
   其中我们执行的最关键的一条命令
    rails generate scaffold post title:string author:name content:text
   会生成很多的文件:
    首先是Model 层: 在 app/models/中会有一个文件 posts,他就是 Model层的 Class
    再者是Controller 层:处理用户的各种请求,在 app/controllers/中有一个posts_cpntroller.rb 就是控制层,会处理各种 http请求,如增删改查文章。里面有很多的函数和逻辑处理代码。
    接着是View 层面: 在 app/views/posts/会有4 个文件,用于不同的方法显示文章,修改文章等等。
    这就是三层结构MVC。
5.总结
    Rails是以款非常优秀的开源框架,他将 MVC 架构完美的体现出来,而且十分的轻量级,并且内置了 Server用于开发,入门非常简单,而且在这个过程中我们只是敲了 4条命令,和一个启动项目 Server的命令,便实现了一个简单的网站发表文章的功能。同时还是使用的 MVC 框架实现。所以这是一个开发网站的很好的框架,同时 rails框架上有很多的开源项目,用于我们的项目开发,如 ckeditor webclip and so on.
    通过简单的操作我们已经实现了一个发表文章的功能的网站。如果是软件工程的课程,做一个类似的 bolg,在添加一个 model comments(评论), 这不就是一个软件工程的大作业吗?其实只需要几分钟,这样的一个论坛,或者博客就已经完成了,当你还在 kubi的抱着厚厚的将近 1000页的参考书的时候,我已经将项目做完了,虽说是前台显示不怎么好看,但是后台已经写好了,只需要稍加修饰即可。所以还在学习 PHP, JSP, ASPX的娃儿,赶紧转到 Ruby On Rails上面来吧。
    
 
附录1:安装 Ruby on Rails 环境
    首先将如何安装的方式的命令写下来,当安装环境的时候,需要很长的时间,在看看这写看似废话的介绍。
    先粘贴安装命令(会遇到各种问题,所以一条一条讲解,先不着急操作)
    sudo apt-get update
 
    sudo apt-get install curl
 
    curl -L https://get.rvm.io | bash -s stable
 
    source ~/.rvm/scripts/rvm
 
    rvm requirements | sudo apt-get install
 
    rvm install 1.9.3
 
    rvm use 1.9.3 --default
 
    rvm rubygems current
 
    换源
    gem install rails 3.2.13
    
    首先确保安装了Ubuntu OS, 推荐 12.0(因为我学习 SE 的时候是大三上,同时也在学习 Linux课程,所以建议你可以安装双操作系统,其实 Linux是非常好的开发环境,上面开发 java, Python, Java, Ruby, NodeJs要远远好过windows ),并且可以链接网络(安装 iNode或者 yah3c)。
    1.sudo apt-get update
 &&sudo apt-get upgrade (不废话了)
    2.sudo apt-get install curl
 
 (Ubuntu 依靠软件源安装的一个 curl工具,就是可以使用命令行下载的工具)
    3.curl -L https://get.rvm.io | bash -s stable
 
    下载一个远程的sh脚本文件执行,安装上 rvm。
    什么是RVM 呢? 这里详细介绍一下: ubuntu软件安装的方式最常见的就是 sudo apt-get install softwarename.这个 Ruby On Rails也可以使用这种方式安装,但是会出现不兼容的各种奇怪的错误,我试过。 比如安装 ruby,我们使用 spt-get install ruby.因为以来ubuntu 的软件源,所以在 source那里提供的是那个版本就只能安装那个版本了。然后我们安装 rails,因为 rails依赖于当前的 ruby环境( Ruby 是一种语言, Rails是一种框架),所以就会出见各种不兼容的问题。如果使用 apt-get install rails 就会安装到4.0 但是现在很多的 rails开源项目还不支持 rails4,所以。。。打个比方:如果一款手机配置十分好,性能也特别高,唯一的确定就是在这款手机上只有几个软件,那你会去买 ?
    在回来说说这个rvm就是管理 ruby环境的,一个操作系统上可以安装多个版本的 ruby语言解释环境。需要使用 rvm来管理当前使用那一个版本的 ruby。
    4. source ~/.rvm/scripts/rvm
 
    将RVM 脚本加入到当前的环境,可以执行 rvm命令
    5.rvm requirements | sudo apt-get install
   安装rvm 所需要的环境
    6.rvm install 1.9.3
 
    使用rvm 安装ruby1.9.3 ,如果不可以尝试 rvm install -v 1.9.3
    至此我们已经安装好了ruby 1.9.3 的环境了,做一下测试,在命令行输入 ruby -v
    显示的是ruby 1.9.3 。。。。。
    7.rvm use 1.9.3 –default
 
   将ruby 1.9.3 设置成默认的ruby环境,同时也会安装好了 gem环境
    8. rvm rubygems current
 
   测试gem : gem -v 返回 当前的 gem 版本好建议更新一下 gem update –system
    什么是gem 呢? gem是一个安装软件的命令,专门针对 rails的安装工具,相当于 apt-get。在 Rails框架中会有很多的开源项目,这写开源项目都是可以用做二次开发的,所以我们把他们集成起来,使用专门的一个服务器去维护,当然,如果你写的代码足够优秀,也可以提交到上面去的。
    因为这个服务其在国外,所以访问速度不是一般的慢,即使你的网速足够快,也会出现访问不了的情况,所以需要 (换源),对于 ubuntu了解的同学一定将 ubuntu apt-get的source 换成国内的。在这里我们需要将 gem的源换成国内的 使用的是 http://ruby.taobao.org/
    9. 换源
    输入命令 gem sources –l
    输出: https://rubygems.org/
    gem sources -r “ 上面输出的内容 ”  会显示 成功删除
    gem sources -a http://ruby.taobao.org/
    gem sources -l 只显示 taobao的 source
    10.安装rails
    gem install rails -v 3.2.13
   测试: rails -v  输出 3.2.13 成功安装 Ruby on Rails环境
    可能存在新打开的终端无法执行rails 一系列命令 重新执行命令 :
       source ~/.rvm/scripts/rvm
 
    其实windows 下面的Ruby on Rails 我也安装好了,只是十分的麻烦,所以不想在写教程了。而且也不好用。
   
Yang Tengfei
2013.08.03
于广州中山大学

通过Ruby On Rails 框架来更好的理解MVC框架的更多相关文章

  1. 理解MVC 框架

    前言:很多前端开发者面临着这样的问题,在项目开发中承担的工作越来越多,后端要做的越来越少,需要的技术棧越来越多,经常有人问你个技术是你完全不会的,对自己的职业生涯越来越怀疑.从前认为HTML+CSS+ ...

  2. 框架学习笔记:Unity3D的MVC框架——StrangeIoC

    作为从AS3页游走过来的人,看见StrangeIoC会额外亲切,因为StrangeIoC的设计和RobotLegs几乎一致,作为一款依赖注入/控制反转(IoC)的MVC框架,StrangeIoC除了使 ...

  3. 其实想要完全理解MVC框架并不是太容易

    完全理解MVC并不是很容易.使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考.同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难.每个构件在使用之前都需 ...

  4. Ruby on Rails Tutorial 第二章 之 用户资源&MVC&REST

    说明:用户资源包括用户数据模型和这个模型相关的Web页面. 1.用户数据模型如下: 2.使用Rails内置的脚手架生成用户资源中,执行如下所示命令: $ rails generate scaffold ...

  5. 更好的理解MVC

    mvc除了将数据层和逻辑层分离外,还有更好的优化了代码结构 m只和c交互,v也只和c交互,m与v的交互需要通过c,一共只用考虑4条路 如果不是这样的话,m v c需要考虑和每个人交互,那么就是要考虑 ...

  6. 写自己的ASP.NET MVC框架(上)

    http://www.cnblogs.com/fish-li/archive/2012/02/12/2348395.html 阅读目录 开始 ASP.NET程序的几种开发方式 介绍我的MVC框架 我的 ...

  7. 【原创】三分钟教你学会MVC框架——基于java web开发(2)

    没想到我的上一篇博客有这么多人看,还有几位看完之后给我留言加油,不胜感激,备受鼓励,啥都别说了,继续系列文章之第二篇.(如果没看过我第一篇博客的朋友,可以到我的主页上先浏览完再看这篇文章,以免上下文对 ...

  8. [Java] 使用 Spring 2 Portlet MVC 框架构建 Portlet 应用

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-spring2-portal/ Spring 除了支持传统的基于 Servlet 的 Web 开发之 ...

  9. 设计 REST 风格的 MVC 框架

    http://www.ibm.com/developerworks/cn/java/j-lo-restmvc/ 传统的 JavaEE MVC 框架如 Struts 等都是基于 Action 设计的后缀 ...

随机推荐

  1. [转] swf文件加密基础

    本来打算下班回来就写这个东西,一方面算是对今天学习的一个笔记记录,另外一方面,给一些朋友普及一些swf文件加密基础知识.之所以说是基础,那是因为我也是刚学习了一点,灰常的基础.不过晚上看了一会我是传奇 ...

  2. (转)ajax.dll,ajaxpro.dll的区别和用法

    ASP.NET AjaxPro的应用 1.首先下载AjaxPro组件.并将AjaxPro.dll引用到网站(或项目). 2.修改Web.config.在 <system.web> 元素中添 ...

  3. equals(==),toString

    equals/==: 只有指向同一个对象是,才返回true. 特殊: String s1 = new String("hello"); String s2 = new String ...

  4. 尽量少用if else

    Michael Feathers是Object Mentor International公司的技术顾问.他的工作不仅是技术开发,他还参与对世界各地技术团队进行培训.指导等工作.他曾开发了将JUnit迁 ...

  5. 读取XML文件的节点内的内容

    <?xml version="1.0" encoding="utf-8" ?> <data> <tag3>15</ta ...

  6. 一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合.

    select *from timp a, timp b where a.name > b.name 结果:

  7. 学习WCF之——wcf程序的创建

    这是我参考的主要资料——wcf学习之旅:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html 首先,如博客上介绍的一样,创建空白的项 ...

  8. java编程规范

    一.规范存在的意义 应用编码规范对于软件本身和软件开发人员而言尤为重要,有以下几个原因: 1.好的编码规范可以尽可能的减少一个软件的维护成本 , 并且几乎没有任何一个软件,在其整个生命周期中,均由最初 ...

  9. [Xamarin] 關於Internal Storage ,存取App內部使用資料 (转帖)

    最近在開發App,會使用到必須要處理一些App所使用的資料,上網路查一下Android 得作法,包含我自己也實作了一下,可能是因為對Java || Android 不是很孰悉,常常錯在 java.la ...

  10. Topshelf入门

    简介 Topshelf允许我们快速的开发.调试和部署windows服务. 官方网站 使用方法 第一步:安装 Install-Package Topshelf Install-Package Topsh ...