Coursera上关于web开发的一门好课,以Ruby on Rails为基础讲述web开发的方方面面,包括网络架构、设计模式、版本控制等等,老师讲述非常清晰,值得推荐。简单做了些备忘笔记。
课程地址:https://www.coursera.org/course/webapplications 果壳MOOC学院介绍地址:
Module 1: Introduction and BackgroundWeb 1.0, 2.0, 3.0Client-Sever Model
Web Application Architecture Tiers
Module 2: Ruby on RailsModel-View-Controller
搭建环境ruby on rails环境
资源列表 – 官网 – 中文指南
Mac使用Homebrew快速安装 mac虽然自带ruby,但是版本较老,建议使用Homebrew进行安装。
$ brew install ruby# 由于国内网络原因,建议换成淘宝gem源,参考:$ gem sources –remove https://rubygems.org/$ gem sources -a https://ruby.taobao.org/$ gem sources -l*** CURRENT SOURCES ***https:$ gem install rails创建一个rails应用$ rails new blog$ cd blog$ rails server# 打开 :3000
rails项目目录详解
博客应用初始化rails new blog# 创建文章和评论组件rails generate scaffold post title:string body:textrails generate scaffold comment post_id:integer body:text# 生成数据库表rake db:migrate# 显示所有URL路径rake routesRails 哲学版本控制
Git Workflow–Remote Repository
Module 3: Database Interactions关系型数据库 join table(多对多关系用join table来连接)
– Schema and Entity-Relationship Models – 可以使用mysqlworkbench来进行方便的建模
Rails EnvironmentsActive Record Design Pattern
通过将对象(object)和关系(ralation)进行映射(ORM- object-relational mapping),使得程序里可以使用一个“虚拟对象数据库”来实现CRUD(数据库的增、查、改、删)。
在rails中使用ActiveRecord模块来实现。
ActiveRecord模块解析模块定义 模块使用 如果从ActiveRecord::Base继承新建类Post,则程序会假定存在数据表posts,并从数据库中将其各项数据赋值到该类中(通过ORM)可以用该类直接调用部分SQL语句,如: Ruby交互命令行# 原生解释器$ irb# 从rails应用根目录执行,会自动载入rails环境,并有自动补全功能$ rails consoleAssociations in Rails
使用方法示例:
has_many belongs_to :postendActiveRecord Validations
rails在生成model的时候进行数据验证:
Module 4: The Ruby Programming Language执行ruby脚本# 列出所有gem包$ gem list # 直接命令行执行ruby语句$ ruby -e ‘puts”hello world!”‘hello world!# 执行ruby文件$ ruby hello.rbruby类my_method , mc = MyClass.new# 创建对象mc.my_method.cls_method# 调用类方法
变量命名通用规则: – name – could be a local variable. – @name – an instance variable. – @@name – a class variable. – $name – a global variable.
Strings 和 正则表达式# string内置变量> “360 degrees=#{2*Math::PI} radians”=> “360 degrees=6.283185307179586 radians”# 反引号执行命令> `date`=> “Tue Oct 15 09:10:21 MDT 2013\n”# 正则匹配,,返回第一个匹配的index,无匹配返回nil> “Homer” =~ /er/ => 3Symbols
ruby中使用symbol表示“名字”,创建方法是在字符串加上冒号,如:foo或:”foo”。其与string 的区别为: – symbol在整个ruby运行期间只有一个,相同的symbol在内存中只有一份;而string是随用随建,即使内容相同的string也会创建不同的两个string对象 – string是可变的,而symbol不可变 – string多用于表示需要改变的文本,而symbol用于key
大理的洱海形如人耳,风平浪静时,