[技术博客] 软工-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
如何修改现有数据库状态。因此,删除或修改以前的迁移可能会使数据库出错,因此笔者强烈不建议这样做。