当前位置 : 主页 > 编程语言 > ruby >

首探:Ruby on Rails

来源:互联网 收集:自由互联 发布时间:2021-06-23
一. 安装 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

一. 安装

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

注:自己试试,然后找找脚手架给创建的其他的文件,别说找不到,上面写着呐

。。。

先到这,明天继续

上一篇:没有了
下一篇:Hello Jekyll
网友评论