首探: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 生成的路由

注:自己试试,然后找找脚手架给创建的其他的文件,别说找不到,上面写着呐
。。。
先到这,明天继续
首探:Ruby on Rails 简单了解的更多相关文章
- 继续:Ruby on Rails 简单了解
一. 接着上一篇继续 1.限制微博的长度 在 Rails 中实现这种限制很简单,使用验证(validation)功能即可.要限制微博的长度最多为 140 个字符 (1).打开文件:app/models ...
- [Ruby on Rails系列]6、一个简单的暗语生成器与解释器(上)
[0]Ruby on Rails 系列回顾 [Ruby on Rails系列]1.开发环境准备:Vmware和Linux的安装 [Ruby on Rails系列]2.开发环境准备:Ruby on Ra ...
- Linux超快速安装Ruby on Rails
Linux超快速安装Ruby on Rails 时间 2014-11-25 11:45:11 Flincllck Talk 原文 http://www.flincllck.com/quick-ins ...
- 通过Ruby On Rails 框架来更好的理解MVC框架
通过Ruby On Rails 框架来更好的理解MVC框架 1.背景 因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC ...
- 10个基于 Ruby on Rails 构建的顶级站点
本文系国内 ITOM 行业领军企业 OneAPM 工程师翻译整理自 Raviraj Hegde 的文章 Top Sites Built with Ruby on Rails. 就其本身而言,Ruby ...
- 如何从 0 开始学 ruby on rails (漫步版)
如何从 0 开始学 ruby on rails (漫步版) ruby 是一门编程语言,ruby on rails 是 ruby 的一个 web 框架,简称 rails. 有很多人对 rails 感兴 ...
- 如何从 0 开始学 Ruby on Rails
如何从 0 开始学 Ruby on Rails (漫步版)Ruby 是一门编程语言,Ruby on Rails 是 Ruby 的一个 web 框架,简称 Rails. 有很多人对 Rails 感兴趣, ...
- (转) 如何从 0 开始学 ruby on rails (漫步版)
原文:http://readful.com/post/12322300571/0-ruby-on-rails ruby 是一门编程语言,ruby on rails 是 ruby 的一个 web 框架, ...
- ruby on rails on windows
这次想系统学会rails,最终目标是将redmine改造成顺手的工具,主要的手段就是开发redmine插件.虽然网上都推荐使用类Unix系统,可手头只有win7系统,就安装了. 难免会遇到这样那样的问 ...
随机推荐
- Kamil and Making a Stream
E. Kamil and Making a Stream 参考:Codeforces Round #588 (Div. 2)-E. Kamil and Making a Stream-求树上同一直径上 ...
- 树状数组(BIT)
树状数组 树状数组是在线段树的结构上改造而来数据结构,主要用于完成: 给定一个初始值全为0的数列 ①给定i,计算返回a1+a2+--+ai的值 ②给定i和x,执行ai+=x BIT的求和 ll sum ...
- Vue_(基础)商品管理-demo
实现对商品的增加.删除.数量的修改功能 删除商品可选择直接删除当前商品.删除选中商品.删除所有商品 添加商品时会自动添加日期字段 商品的属性 goods : { id : '', name : '', ...
- Xshell远程连接的具体操作和Xshell多会话设置小技巧
前几天给大家分享了Xshell的安装教程,今天给大家分享如何在Xshell中进行远程连接,并且分享一下如何设置一条命令可以发送多个终端,这里以Xshell6为例进行说明,具体的教程如下. 1.依次点击 ...
- 浅淡数据仓库(二)星型模式与OLAP多维数据库
在关系数据库管理系统中实现的维度模型称为星型模型模式,因为其结构类似星型结构.在多为数据库环境中实现的维度模型通常称为联机分析处理(OLAP)多维数据库
- flask 第七篇 路由系统
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
- leetcode题目3.无重复字符的最长子串(中等)
题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "a ...
- MySort作业与IO-Myhead
一.MySort 1.题目要求 模拟实现Linux下Sort -t : -k 2的功能. 要有伪代码,产品代码,测试代码(注意测试用例的设计) 参考 Sort的实现.提交博客链接. 2.产品代码 im ...
- Cortex-M3 异常返回值EXC_RETURN
[EXC_RETURN] 在进入异常服务程序后,硬件自动更新LR的值为特殊的EXC_RETURN.当程序从异常服务程序返回,把这个EXC_RETURN值送往PC时,就会启动处理器的异常中断返回序列.因 ...
- LC 677. Map Sum Pairs
Implement a MapSum class with insert, and sum methods. For the method insert, you'll be given a pair ...