- 发现了一个好框架
- 15分钟入门 Rails.
- 在国外, Rails程序员的平均工资最高. 在国内, 2,3年的Rails程序员工资也轻松高过其他程序员.
- Ruby on Rails程序员特别好找工作. 如果说现在移动端(ios, android) 一个职位有5个人应聘的话, 那么 Ruby职位就是 10个空缺才有1个候选人.
- Rails 是 Web开发的框架之王. 完虐其他框架.
- 性能不差. 用于优酷无线后端(7亿用户)
- 传统语言(特别是需要编译的语言) java/oc/php 让人郁闷, Ruby让人快乐.
最初, Rails的流行是源于 一段视频, 15分钟搭建一个Blog. 各种基本功能都有.
我的个人经历05年毕业后, 到09年,做了3年半的java. 我一直是身边人做java最快, 做的又最好的人. 不过, 给自己最大的感受是:
做java 非常痛苦. 一点儿很小的功能, 就需要我花上好多时间去做. 做了2,3年之后,感觉自己本应该什么都懂了, 实际上一到自己单干项目时, 特别无力. 只会做些后端. 连CSS都不会. 为什么? 因为每天要加班. 从早上干到晚上, java 代码写的多, 但是解决的问题太少.
后来, 身边的java大神( 当时的javaeye( 现在的iteye) 上的朋友 ) , 一个一个的都转到了 ruby. 当时的大神才是大神, 都是跟 James Gosling 合影的那种. 所以我就随着他们一起转到了Ruby上.
最大的感受就是: 自己的时间多了.以前某个功能, 需要我干一天, 现在只需要2小时.
一个功能, 用Java做, 先写5个Class, 然后 strategy, bridge 各种设计模式都用上. 代码轻松几百行. 现在用Ruby做, 几行代码搞定.
所以, 做了Ruby之后, 最大的好处是 时间充足了. 于是, 我就有时间学习各种其他知识: javascript, css, web自动化工具, H5, 移动端等等.
所以, 我来带领大家对Rails有个了解~ 希望入行的同学, 欢迎随时与我联系~ 好多公司跟我要Ruby的人呢~
架构小知识: MVCMVC 几乎是最经典的架构. 10个框架,9个MVC /MMVC ...
简单的说:
- Model: 操作数据库
- View: 在浏览器端显示的视图
- Controller: 把request分发给action 处理. (一个controller包含多个action.)
(命令都以在Linux端为例. 在这里可以看到我的教程: 图文并茂版: 如何配置win7 + ubuntu 环境)
-
安装了ruby ( Ruby的语法, 见之前的文章:
Ruby Lesson 1: 初识
Ruby Lesson 2: 基础知识
Ruby Lesson 3: 进阶
) -
安装 bundler 这个 gem:
$ gem install bundler
-
安装Rails. (这里以 4.1.6 版本为例子)
$ gem install rails -v 4.1.6
安装时会出现一系列的命令, 只要最后你输入:
$ rails -v
看到显示版本号,就说明安装好了.
$ rails -v
Rails 4.1.6
创建一个Rails项目.
使用命令: $ rails new <项目名>
, 例如:
$ cd /workspace
$ rails new library
就创建了一个项目,名为: library
. (图书馆)
可以看到,生成了一堆文件:
然后它会自动执行 ‘bundle install’命令.
Rails使用bundler来管理各种依赖跟java的jar 一样. ruby中也有很多第三方包, 我们管它叫 gem (小宝石)
每个Rails项目,都要依赖很多gems. 一个一个的管理会特别麻烦.
在java中,使用 maven, ivy来管理.那么在Rails中,就使用 bundler来管理.
bundler通过一个文件和一个命令来管理.
- 文件: Gemfile. 定义了所有的gem版本.
- 命令: $ bundle install , 会自动安装所有的 gems.
编辑你的Gemfile(根目录下) 文件, 让它的内容看起来如下:
# 为了让安装gem速度更快,使用了淘宝的镜像.
source 'https://ruby.taobao.org/'
gem 'rails', '4.1.6'
gem 'sqlite3'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'therubyracer', platforms: :ruby
gem 'jquery-rails'
gem 'turbolinks'
上面就是一个非常完备的Gemfile了.
安装各种依赖, gems.先安装好 sqlite3的依赖:
$ sudo apt-get install libsqlite3-dev
然后通过 命令: $ bundle install
即可.
使用命令:
$ bundle exec rails server
bundle exec
: 是rails命令的前缀. 它会告诉rails, 以后用到的gem, 都是Gemfile中规定的版本.
下图就是启动后的命令.
打开浏览器, 访问 localhost:3000 ,能看到首页.(对于好奇宝宝来说,这个页面是存在于gem 文件中的.在刚才生成的library目录下找不到它)
开始动手第一步:现在项目没有任何内容. 只是有了一个骨架.
所以我们需要给他增加内容,丰满它.
例如: 输入一个网址, 显示一个页面.
假设,用户需要访问的URL: http://localhost:3000/books/list
那么, 我们只需要:
- 修改路由(router)
- 创建对应的controller, action
- 创建对应的页面(erb)
向该文件中,增加:
下面的代码:
Rails.application.routes.draw do
# 加上下面的代码.
resources :books do
collection do
get :list
end
end
end
它会生成一段”路由”, 也就是说,会识别 /books/list
这个URL,并且把它交给 books controller 的 list action 来处理.
新建一个文件: app/controllers/books_controller.rb ,(见下面截图)
一个controller 是由多个action(也就是普通方法组成的)
不用的action, 处理不同的 url .
这个list action 里没有任何代码. 它会直接跳转到对应的erb页面( app/views/books/list.html.erb)
class BooksController < ApplicationController
def list
end
end
3. 创建对应的视图文件
新建 "app/views/books/list.html.erb "
(所有books controller中的视图,都要放到 "app/views/books" 目录下)
(action 叫什么名字,视图就叫什么名字. "list" action对应的视图,就是: list.html.erb
)
为了简单起见,它只显示HTML代码.
<p>三体1 - 地球往事</p>
<p>三体2 - 黑暗森林</p>
<p>三体3 - 死神永生</p>
看到结果
访问浏览器: http://localhost:3000/books/list
可以看到结果:
这是我们看到的最简单的结果页面.
在视图(erb) 中,使用ruby 代码.erb的完整拼写是: embedded ruby, 跟JSP, PHP一样,可以在HTML的间隙插入Ruby 代码.
修改 app/views/books/list.html.erb
可以看到,语法与PHP, JSP 一样.
<% %>
来执行ruby 代码.
<%= %>
来显示返回值.
<h3> 下面的代码,都是由 RUBY代码生成的</h3>
<% books = ['三体1 - 地球往事', '三体2 - 黑暗森林', '三体3 - 死神永生'] %>
<% books.each do book %>
<p> <%= book %> </p>
<% end %>
再次看到结果
访问浏览器: http://localhost:3000/books/list
可以看到结果:
http://host/books/list
上面的url, 如果是按照rails的约定惯例来看的话,就是: 显示books的list页面.
所以,rails 会把这个请求,根据 路由(router),发送给 对应的方法(也就是 controller中的 action)。
2. 配置路由(router) 的具体方法:修改路由文件: config/routes.rb
:
Rails.application.routes.draw do
resources :books do
collection do
# 下面这个路由, 让rails 可以处理URL: /books/list
get :list
end
end
end
3. Controller 与 Action 的写法.
list action 做一些 处理, 显示对应的 erb (JSP, PHP也是一样的)
class BooksController < ApplicationController
def list
# 啥也不写,就渲染对应的
# app/views/books/list.html.erb
end
end
4. 渲染erb页面
如果要渲染的是一个 erb 页面, 我们可以在erb中直接写ruby代码.
<% %>: 仅执行
<%= %>: 执行并显示结果到页面中.
例如:
<h3>注意: 使用了ruby的代码来显示HTML</h3>
<% books = ['三体1 - 地球往事', '三体2 - 黑暗森林', '三体3 - 死神永生'] %>
<% books.each do book %>
<p><%= book %></p>
<% end %>
源代码
本节源代码可以在下列地址下载:
https://github.com/sg552/rails_lesson_1_setup_and_run
PPT可以来这里下载:
http://siwei.me/about-me/speaks
热门评论
收藏起来 回头了解一下
收藏起来 回头了解一下
可以适当了解下 先收藏了