首探:Ruby on Rails 简单了解
一. 安装
Ruby安装:https://ruby-china.org/wiki/rvm-guide
注:安装了RVM和Gem后
安装rails: gem install rails -v 5.1.4 # 指定版本安装
二. 创建Rails项目
rails _5.1.4_ new hello_app # 创建指定rails版本的项目
1.项目目录
2.关于目录文件的解释
3.关于项目中的Gemfile中的依赖包的版本介绍
(1).如果没在 gem 指令中指定版本号,Bundler 会自动安装最新版。例如:
(2).始终安装最新版(>=)。例如:
(3).只安装最后一个数字变化的版本(~>)。例如:
注:Ruby对版本控制稍微有些严苛,和Python有很大的区别,版本不同就有可能导致程序报错
4.安装和更新这些Gem
bundle install # 安装,一般你创建项目的时候就已经给你安装了 bundle update # 更新
5.运行Rails项目
rails server
三. Rails的架构模式MVC
在初期阶段,概览一下 Rails 应用的工作方式多少会有些帮助。你可能已经注意到了, 在 Rails 应用的标准文件结构中有一个名为 app/ 的目录, 其中有三个子目录: models, views 和 con-trollers 。这表明 Rails 采用了“模型-视图-控制器”(简称 MVC)架构模式。这种模式把应用中的数据(例如用户信息)与显示数据的代码分开,这是图形用户界面(Graphical User Interface,简称 GUI)常用的架构方式。
注:和Python的Django框架的区别就是Django的架构模式为:MTV
四. 万物之本源 --- hello world!
进入文件:hello_app/app/controllers/application_controller.rb
class ApplicationController < ActionController::Base protect_from_forgery with: :exception def hello render html: "hello, world" end end
进入文件:hello_app/config/routes.rb
Rails.application.routes.draw do # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html root "application#hello" end
然后:
注:hello, world终于出来了,庆祝吧!!!
五. 整个测试小项目
1.先整个数据库postgresql
在Gemfile文件中加点东西
group :production do gem 'pg', '0.20.0' end
2.运行bundle
bundle install --without production
注:安装 gem 时要指定 --without production 选项,不安装生产环境使用的 gem
3.想想库中数据模型
(1).来咱先生成Users的资源
rails generate scaffold User name:string email:string
注:通过脚手架生成CURD的代码,劝你先别细看(毕竟也看不懂,对吧)。解释一点:把 scaffold 传给 rails generate 命令就可以使用 Rails 的脚手架了。传给 scaffold 的参数是资源名的单数形式(这里是 User ), 后面可以再跟着一些可选参数,指定数据模型中的字段
注:在执行的命令中加入了 name:string 和 email:string ,这样就可以实现图中的 User 模型了。注意, 没必要指定 id 字段, Rails 会自动创建并将其设为表的主键(primary key)。
(2).接下来就是迁移数据库了
rails db:migrate
注:搞定了~..~
注意,注意:在 Rails 5 之前的版本中, db:migrate 命令使用 rake 执行,而不是 rails 。因此,如果你还要维护以前的应用,一定要知道如何使用 Rake
(3).User的访问路径
注:自己去瞧瞧吧
(4).在创建第二个模型之前,试试MVC
①. 进入文件:hello_app/config/routes.rb
会发现文件内多了行东西
注:Rails 路由,为 Users 资源定义了一条规则(:users 这个写法看着很奇怪,它是一个符号, 后边在细说)
既然都到这了就把跟路由改为users的索引路由,也就是users列表
②. 进入文件:hello_app/app/controllers/users_controller.rb
注:class UsersController < ApplicationController 这种写法,在 Ruby 中这表示类继承。
瞧一瞧脚手架给你生成的代码,是不是很开心
③.进入文件:hello_app/app/views/users
注:看看脚手架给你生成的模板,看完就更开心了呐
④.脚手架生成代码不足的不足之处
• 没有验证数据
没有验证数据。 User 模型会接受空名字和无效的电子邮件地址,而不报错。
• 没有验证身份
没有验证身份。没实现登录和退出功能,随意一个用户都可以进行任何操作。
• 没有测试
没有测试。也不是完全没有,脚手架会生成一些基本的测试,不过很粗糙也不灵便,没有针对数据验证和身份验证的测试,更别说针对其他功能的测试了。
• 没样式,没布局
没样式,没布局。没有共用的样式和网站导航。
• 没真正理解
是不是很真实。
(5).生成 Microposts 资源
# 老样子 rails generate scaffold Micropost content:text user_id:integer
注:剩下的数据库迁移啥的,自己往上翻,太麻烦不写了
(6).Microposts 生成的路由
注:自己试试,然后找找脚手架给创建的其他的文件,别说找不到,上面写着呐
。。。
先到这,明天继续