[技术博客] 软工-Ruby on Rails 后端开发总结分享
[技术博客] 软工-Ruby on Rails 后端开发总结分享
在这次软件编写中,我们的后端使用了Ruby on Rails (RoR)
框架。
Rails框架是用Ruby编写的。这意味着当我们为Ruby on Rails编写代码时,我们正在使用Ruby。在这个技术博客中,笔者将分享一些自己对Rails
的理解。
理解rails作业流程:以如何引导完成请求/响应周期以访问博客应用程序中的文章列表为例
用户单击一个按钮,然后对URL进行GET请求
/articles
。Web服务器收到此请求。然后,Rails#index
基于中的URL /控制器映射执行相应的控制器操作routes.rb
。控制器调用
Article.all
通过Article
模型从数据库加载文章的集合。该集合被分配给一个实例变量。视图将呈现给发出请求的用户,该用户将内插实例变量值以显示文章列表。
在Ruby中,一切皆对象
在面向对象的编程中,对象是类的实例。在Ruby中,所有类都是class的实例
Class
。例如:
class => Fixnum
class.class => class
有一些语句不是对象,如块,方法和条件语句(即:
if
,else
)。Ruby是动态类型的语言
Ruby是动态类型的。程序员可以即时更改变量类型。
在Ruby中,以下代码行顺序地地运行,不会引发错误。
x = 1
x = "foo"
Ruby中的getter和setter方法的信息
一个getter允许访问一个实例变量。设置器允许设置实例变量。
我们可以手动定义getter和setter方法:
class Car
def color
@color
end
def color=(color)
@color = color
end
end
c = Car.new
c.color = 'red'
puts c.color # => red
但是Ruby提供了三种访问器方法,它们执行相同的操作并且更简洁:
attr_reader
(getter),attr_writer
(setter)和attr_accessor
(setter和getter)。class Car
attr_accessor :color
end
c = Car.new
c.color = 'blue'
puts c.color #=> blue
如何列出应用程序中的所有路由
$rake routes
我们也可以添加| grep `,来过滤返回的路由。
这一方法在实际工程中可以用来进行debug等操作
什么是Gemfile
在Gemfile中,我们为Ruby应用程序指定了依赖项。它位于项目的根目录中。Gemfile.lock包含已安装gems的确切版本的记录。这样,如果另一台计算机clone该项目,则可以安装相同的版本。相反,在Gemfile中指定一个gem而不固定到特定版本只会安装gem的最新版本。
在我们的实践中,遇到环境配置出错的情况,有时是Gemfile.lock出错导致的
有哪些Rails设计模式
Rails中有许多设计模式,包括服务对象,值对象,表单对象,查询对象,视图对象,策略对象和装饰器。
Rails如何管理数据库状态
程序员可以手动生成并向迁移(migrate)文件添加说明。
这些指示
ActiveRecord
如何修改现有数据库状态。因此,删除或修改以前的迁移可能会使数据库出错,因此笔者强烈不建议这样做。
[技术博客] 软工-Ruby on Rails 后端开发总结分享的更多相关文章
- [技术博客] 软工-Ruby on Rails前端工具链的配置以及对Web应用结构设计的一点思考
一.相关工具链简介 HAML HAML是专门面向Ruby on Rails模版语法设计的一门标记语言,其结合RoR的views部分模版语法的特点,对原来的*.html.erb(嵌入Ruby代码的HTM ...
- [技术博客] win10下vagrant+centos7 rails虚拟开发机配置流程
由于少昂早年已经在此踩过坑了,因此在这里,我们现在直接贴上他早年的博客链接:https://www.cnblogs.com/HansBug/p/7403306.html
- 【技术博客】基于vue的前端快速开发(工具篇)
一.Vue教程 vue.js是一套构建用户界面的渐进式框架.vue采用自底向上增量开发的设计.vue的核心库只关心视图层,非常容易学习,非常容易与其它库和已有项目整合.vue完全有能力驱动采用单文件组 ...
- [技术博客] 敏捷软工——JavaScript踩坑记
[技术博客] 敏捷软工--JavaScript踩坑记 一.一个令人影响深刻的坑 1.脚本语言的面向对象 面向对象特性是现代编程语言的基本特性,JavaScript中当然集成了面向对象特性.但是Java ...
- [福大软工] Z班——个人技术博客评分
个人技术博客 作业地址 https://edu.cnblogs.com/campus/fzu/SoftwareEngineering2015/homework/1070 作业要求 个人技术博客单次作业 ...
- 【软工】[技术博客] 用Monaco Editor打造接近vscode体验的浏览器IDE
[技术博客] 用Monaco Editor打造接近vscode体验的浏览器IDE 官方文档与重要参考资料 官方demo 官方API调用样例 Playground 官方API Doc,但其搜索框不支持模 ...
- 个人作业——软件工程实践总结&个人技术博客
一. 回望 (1)对比开篇博客你对课程目标和期待,"希望通过实践锻炼,增强软件工程专业的能力和就业竞争力",对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪 ...
- [技术博客]大闸蟹的技术博客,通过gitlab api进行用户批量创建
技术博客--通过gitlab api批量注册用户 gitlab登录界面本身提供了register功能,但需要手工一个个添加,对于一次性会添加整个班级的学生的软工平台来说并不科学合理.使用gitlab ...
- [技术博客]海报图片生成——小程序canvas画布
目录 背景介绍 canvas简介 代码实现 难点讲解 圆角矩形裁剪失败之PS的妙用 编码不要过硬 对过长的文字进行截取 真机首次生成时字体不对 drawImage只能使用本地图片 背景介绍 目标:利用 ...
随机推荐
- ubuntu-常用设置备忘
环境 系统平台:Ubuntu 16.04.6 其他版本设置也差不多 vim喜好设置 系统安装vim sudo apt-get install vim 通过修改 /etc/vim/vimrc 文件设置 ...
- Mysql - You can't specify target table '表名' for update in FROM clause 错误解决办法
背景 在MySQL中,写SQL语句的时候 ,可能会遇到 You can't specify target table '表名' for update in FROM clause 这样的错误 错误含义 ...
- Spring AOP Aspect的简单实现(基于XML)
第一步:导包 第二步:实现类和切面类 Service("userService")public class IUserviceImpl implements IUserServic ...
- Lambda表达式——注重过程的编程思想
一.使用匿名内部类的匿名对象创建线程和Lambda表达式写法 Lambda表达式写法不用去定义一个Runable接口的实现类: 二.方法入参是一个接口或者接口的实现类 三.对某个类的一些对象实例进行排 ...
- Emit优化反射(属性的设置与获取)
在频繁的通过反射来设置和获取属性的值时是比较耗时的,本章通过Emit技术优化反射来提高获取和设置属性值的效率 一.实现代码: /// <summary> /// 设置器委托 /// < ...
- Linux RHCE7.0 笔记(常见符号)
1.无交互式创建用户 echo "password" | passwd --stdin username 2.Linux重定向符号 > :表示将符号左侧的内容,以覆盖的方式输 ...
- 制作nginx+php的docker镜像方法
制作nginx+php的docker镜像方法一.准备安装的工具工具:docker-17.06.0-ce.nginx-1.13.2.PHP-5.5.38 .supervisor配置思路:1.安装dock ...
- 自己实现一个Controller——精简型
写在最前 controller-manager作为K8S master的其中一个组件,负责众多controller的启动和终止,这些controller负责监控着k8s中各种资源,执行调谐,使他们的实 ...
- c++ 打包函数教程
c++当要重复运行一些代码时可以打包一个函数 当没有返回值时用void打包函数: #include <iostream> #include <stdio.h> using na ...
- 在PHP中使用SPL库中的对象方法进行XML与数组的转换
虽说现在很多的服务提供商都会提供 JSON 接口供我们使用,但是,还是有不少的服务依然必须使用 XML 作为接口格式,这就需要我们来对 XML 格式的数据进行解析转换.而 PHP 中并没有像 json ...