一. 安装

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. HDU 5813 Elegant Construction ——(拓扑排序,构造)

    可以直接见这个博客:http://blog.csdn.net/black_miracle/article/details/52164974. 对其中的几点作一些解释: 1.这个方法我们对队列中取出的元 ...

  2. vue 2.x 的 v-bind 指令的 .prop 事件修饰符详解

    vue 官方文档对 .prop 修饰符的解释是: 使用例子: 那么,具体的原理和用法是什么呢?这要从 html 的 DOM node 说起. 在 html 标签里,我们可以定义各种 attribute ...

  3. 2018-2019-2 网络对抗技术 20165205 Exp8 Web基础

    2018-2019-2 网络对抗技术 20165205 Exp8 Web基础 1.原理与实践说明 1.1实践内容 Web前段HTML:能正常安装.启停Apache.理解HTML,理解表单,理解GET与 ...

  4. Ubuntu16.04安装nginx(并启用SSL)

    一.安装环境介绍 需要预先安装gcc,通常ubuntu默认自带,所以默认已经有这个环境了,后续步骤默认是使用root账户进行的 二.下载及安装nginx相关组件 1.进入任意目录,我选用的是通常选用的 ...

  5. 转:VMware 15 安装 MAC OS 10.13 原版(详细图文教程)

    -----------------转载------------------------ 原文:https://blog.csdn.net/qq_40147863/article/details/847 ...

  6. leetcode334 递增的三元子序列

    class Solution { public: bool increasingTriplet(vector<int>& nums) { //使用双指针: int len=nums ...

  7. element UI 验证select 下拉问题

    解决方式: 添加了type类型.

  8. 实用的60个CSS代码片段[上]

    1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...

  9. Service-stack.redis 使用PooledRedisClientManager 速度慢的原因之一

    现在越来越多的开发者使用service-stack.redis 来进行redis的访问,但是获取redisclient的方式有多种方式,其中有一种从缓冲池获取client的方式很是得到大家的认可. L ...

  10. java 抽取 word,pdf 的四种武器

    转自:https://www.ibm.com/developerworks/cn/java/l-java-tips/     感谢作者发布的文章 用 jacob 其实 jacob 是一个 bridag ...