一. 安装

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 简单了解的更多相关文章

  1. 继续:Ruby on Rails 简单了解

    一. 接着上一篇继续 1.限制微博的长度 在 Rails 中实现这种限制很简单,使用验证(validation)功能即可.要限制微博的长度最多为 140 个字符 (1).打开文件:app/models ...

  2. [Ruby on Rails系列]6、一个简单的暗语生成器与解释器(上)

    [0]Ruby on Rails 系列回顾 [Ruby on Rails系列]1.开发环境准备:Vmware和Linux的安装 [Ruby on Rails系列]2.开发环境准备:Ruby on Ra ...

  3. Linux超快速安装Ruby on Rails

    Linux超快速安装Ruby on Rails 时间 2014-11-25 11:45:11 Flincllck Talk 原文  http://www.flincllck.com/quick-ins ...

  4. 通过Ruby On Rails 框架来更好的理解MVC框架

    通过Ruby On Rails 框架来更好的理解MVC框架   1.背景    因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC ...

  5. 10个基于 Ruby on Rails 构建的顶级站点

    本文系国内 ITOM 行业领军企业 OneAPM 工程师翻译整理自 Raviraj Hegde 的文章 Top Sites Built with Ruby on Rails. 就其本身而言,Ruby ...

  6. 如何从 0 开始学 ruby on rails (漫步版)

    如何从 0 开始学 ruby on rails (漫步版) ruby 是一门编程语言,ruby on rails 是 ruby 的一个 web 框架,简称 rails. 有很多人对  rails 感兴 ...

  7. 如何从 0 开始学 Ruby on Rails

    如何从 0 开始学 Ruby on Rails (漫步版)Ruby 是一门编程语言,Ruby on Rails 是 Ruby 的一个 web 框架,简称 Rails. 有很多人对 Rails 感兴趣, ...

  8. (转) 如何从 0 开始学 ruby on rails (漫步版)

    原文:http://readful.com/post/12322300571/0-ruby-on-rails ruby 是一门编程语言,ruby on rails 是 ruby 的一个 web 框架, ...

  9. ruby on rails on windows

    这次想系统学会rails,最终目标是将redmine改造成顺手的工具,主要的手段就是开发redmine插件.虽然网上都推荐使用类Unix系统,可手头只有win7系统,就安装了. 难免会遇到这样那样的问 ...

随机推荐

  1. MySQL_(Java)使用JDBC向数据库中插入(insert)数据

    MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...

  2. R-ts()

    概述 ts(gm,frequency=12,start=c(1975,1)) 这个命令表示: frequency=12表明时间单位为年,而且在每一个时间单位中有12个均匀间隔的观察值. ​ 因此gm是 ...

  3. [心得]暑假DAY1 | 7-7考试总结

    呼.. 正式开始暑假集训. 今天一上午还在搞7-7的考试改题 然而,该来该去,TLE48过不去了 不知道哪的问题,loj上1w3ms(卡常都没能救得了) 至于T1和T3,简单总结一下算了 排序 感觉很 ...

  4. 新版uni-app 在微信小工具调试遇到报错解决方案

    问题描述:我在运行到微信小程序是运行报错打不开微信小程序报错如下图 结局方案:将微信小程序安全设置开启如下图

  5. rocketmq的linux搭建环境

    3.3. 上传解压[两台机器] # 上传 apache-rocketmq.tar.gz 文件至/usr/local # tar -zxvf apache-rocketmq.tar.gz -C /usr ...

  6. kindeditor 引用js架包问题

    最近在搞kindeditor(富文本编辑器),遇到了很多插件修改无效的问题,仔细研究了一下才发现,别有洞天. 下面来介绍一下引用的js架包.具体有什么用. <!-- kindeditor.js ...

  7. C# 防火墙操作之开启与关闭

    通过代码操作防火墙的方式有两种:一是代码操作修改注册表启用或关闭防火墙:二是直接操作防火墙对象来启用或关闭防火墙.不论哪一种方式,都需要使用管理员权限,所以操作前需要判断程序是否具有管理员权限. 1. ...

  8. Struts2.3+Spring3.2+Hibernate4.2框架搭建

    一.环境 SSH使用的版本:struts2.3.14.spring3.2.2.hibernate4.2.0 数据库:MYSQL tomcat版本:apache-tomcat-7.0.42 二.所需要导 ...

  9. 品牌logo在EDM数据营销中的运用

    作为让客户识别并记住的“门面”, 品牌LOGO的设计与宣导一直都是品牌化输出的重中之重 . 而在邮件营销中,为了让用户在浏览邮件内容前先有品牌概念,营销人员在放置LOGO时常常仅把显眼突出纳入考虑因素 ...

  10. JavaScript中的普通函数和构造函数

    在写JavaScript代码过程中,用到需要写构造函数的地方不多,但还是需要详细了解一下 本文尽量描述清楚什么是JavaScript中的构造函数,以及普通函数和构造函数的区别