-
fixtures就是用来创建模拟数据的。
这些数据会被插入测试数据库,因此不能模拟数据库不存在的属性。
模拟数据可以在单元测试unit test和功能测试functional test中使用,通过表名(:模拟实体名)就可以访问模拟实体。users(:devid)就是一个user,然后users(:devid).name就可以访问name属性的值。
-
本章我们从一个cucumber的逻辑错误开始。从外部的cucumber周期,转向内部的rspec周期。
本章我们使用RSpec来完成了一个red/green/refactor的周期。
这就是BDD的周期。从外到里的驱动开发,从使用cucumber描述的业务scenario,到使用rspec描述的内部对象。
-
我们先在.feature文件中写一个feature的scenario,已经scenario的steps,然后在step_definitions中定义Given,When,Then,然后在通过测试cucumber .feature文件来驱动我们编写实现代码。
当目前为止,我们已经学会使用cucumber从外部描述一件事。在接下来的章节中,我们将会进行从外到里的工作方式,使用RSpec来驱动单个对象的外部行为。
-
缩小用户故事的范围,保证留下的用户故事和一次发布的目标匹配即可。
为一个interation选择用户故事,不要再一个interation中放入太多的用户故事,不要希望一个interation来完成所有的用户故事。
验收准则,我们通过写cucumber feature来描述用户故事。我们在迭代计划会议期间做这件事,使用这些来确定和修改我们的预估。
scenario outline,使得我们减少大量的重复,更加的DRY。
-
TDD(Test-Driven Development)测试驱动开发。
在编写代码之前先编写一个测试,这时候测试是失败的,red,因为还没有写对应的实现代码。然后开始编写实现的代码,然后跑刚才写的测试,直到测试通过,green。
然后我们就重构我们的代码,refactor,然后再次跑我们的测试,green重构成功,red重构失败。失败也没有关系,继续重构。而且有了测试的保证,我们可以很放心的重构。
TDD偏激的做法是,在没有编写测试之前,绝不写一行代码。软件开发,测试先行。用测试来驱动开发。
BDD(Behavior-Driven Development)行为驱动开发。
在应用级别,项目的利害关系人通常不关心数据被持久化到什么地方,什么格式,什么存储类型。当然不是说他们不关心数据,而是说他们更关心他们保存的数据,在他们需要的时候可以获取出来。
-
Rails开发细节《九》Rails的测试
-
常用命令介绍。
-
ruby,class,variable,class method,instance method,class variable,instance variable,singleton
-
ckeditor是一款嵌入网页的富文本编辑器,是一种所见即所得的编辑器,就是你编辑的时候看见的样式,就是将来显示的样式。
自带了常见的文本编辑功能。
-
Rails开发中可能会用到的组件,Ruby && Rails开发资源。
-
时区以及日期的格式化是每个程序员的必修课,就像字符串的各种处理一样重要,而且使用频率很高。
rails默认就是写入utc时间,然后读取也是utc时间。
设置config.time_zone只能保证写入数据库的时间是local,就是保证创建对象的时候created_at和updated_at使用设置的本地时间。
但是读出来的时候还是有可能是utc时间,有可能需要在界面上转换的。
rails推荐使用utc时间,这样就统一了,只是在界面显示的时候格式化为本地时间。
对于任何应用来说,遇到时区问题,都应该考虑语言本身和存储本身,甚至是操作系统本身的时区设置和一些默认值,这样才能最终较好的解决时区问题。
-
new_post_url
产生的路径是绝对路径,http://xxx/posts/new。
new_post_path
产生的路径是相对路径,相对于根目录的路径,/posts/new。
-
Routing路由
-
正则表达式
正则表达式在很多场景都适用。例如,验证字符串是否匹配格式,查找匹配的字符串,替换匹配的字符串。
很多编程语言都支持正则表达式,语法也相近。
正则表达式由两部分组成:模式和匹配字符串。
通常我们说的写一个正则表达式,就是写一个模式。然后验证一些输入的字符串是否匹配这个模式。
-
从安全角度来讲,文件上传要严格控制路径,权限,以及上传的类型。
路径,就是文件在服务器的保存路径,最好是单独路径,不要放在根目录,规划好文件夹,还要做好重命名,因为上传的人不知道服务器上面是不是存在同名的文件,这就涉及文件实际的名称和用户需要看到的文件名的映射。
权限,就是上传路径给用户的权限,最好不要有执行权限,只有读写权限就可以了。有必要的话,需要划分用户文件夹来区分权限。保留一个公共文件夹。等等,根据情况而定。
上传的类型,上传文件肯定和一个场景相关,一个场景可能只需要一类文件,比如文档场景,图片场景。最好在不同的场景控制不同的文件类型。执行文件要严格控制。
-
scaffolding查到的意思是:脚手架。
在rails中也有scaffolding的概念。
rails generate scaffold post title:string content:text published:boolean
执行之后,在提示信息中,我们会看到创建migration、controller、model、view、helper、js.coffee、sass、unit test等一系列东西,post的增删改查,存储,后台,前台都有了。
我理解就是一个框架,就是外围的基础都帮你搭建好了,你可以即插即用,基于这个脚手架进行修改,升级。
-
less
说到Bootstrap,就不得不提less。
less是一种动态的样式表语言,less扩展了css,使得我们可以像写程序一样,写css,提高css的扩展性、重用性,可以运行在客户端,也可以运行在服务端nodejs。
less提供了变量定义,mixins,函数等等常见的程序元素。
mixins是一种组合的方式,提高重用,极大提高css编写效率。
-
很多问题的标题就是报错之后日志中记录的错误信息。
apache的日志在/var/log/apache2/目录中,error.log。当然,也有可能在其他位置。如果是下载httpd,编译安装的话,有可能在/usr/local/apache目录中。
nginx的日志在/opt/nginx/log/中,也是error.log。也是有可能在其他位置的,例如安装目录或者是/var/log/nginx/中。
-
Rails常用命令
-
看过本文之后,你应该熟悉下面的内容:
所有显著的对策。
rails中session的概念,其中存放的内容,常见的***手段。
rails中大量的分配问题。
在提供管理接口的时候,你不得不关注的一些事情。
如何管理用户:登陆,退出,在各个层面的***方法。
流行的注入***方法。
-
Bootstrap是twitter开源的一个集html、css、javascript的前端框架。
Sleek, intuitive, and powerful front-end framework for faster and easier web development.
时髦的,直观的,强大的前端开发框架,使得web开发更快速,更容易。
-
Git是一款分布式的源代码管理工具。
分布式管理工具相对于CVS和SVN这种集中式的代码管理工具,有以下的几点好处:
代码仓库分散,避免单点故障。如果集中的代码仓库出现问题,完全可以根据每个人的代码仓库重建集中的代码仓库,几乎没有什么损失。
每个人在本地都有一个代码仓库,在本地也可以进行代码管理,checkin,checkout,可以离线管理代码,在连线之后再push到集中的代码库中。
还有就是Git在速度方面要大大优于CVS和SVN。
-
cut命令可以对文件做一些分隔,分析的处理,是基于行来处理文件。将文件的每一行按照规律分隔,获取其中的部分内容。
比如说我想得到系统中的所有用户的登录账号,大家都知道系统中有一个/etc/passwd文件,里面有这些内容,但是同时也有其他的内容。
cut -d: -f1 /etc/passwd
上面的命令做什么呢?-d参数用来指明分隔符,因为passwd文件的每一行是用冒号分隔的,-f参数指明你想要的字段,这里指明要第一个字段,也就是登陆账号字段,最后指明文件的位置就可以了。
如果是想要几个字段,可以使用-f1-3代表第一个到第三个字段,-f1,3代表第一个和第三个字段。
cut -d: -f1 /etc/passwd >> /tmp/users
使用上面的命令,cut命令的结果就会保存到/tmp/users文件中。
-
异步是当一个调用请求发送给调用者,调用者不用等待其结果的返回。
实现异步可以采用多线程技术,或者交给另外的进程来处理。
异步是一种行为模式,可以用于很多地方。多线程可以用来实现异步行为模式。
和异步相对应的概念应该是阻塞。
异步与多线程,从辩证关系上看,异步和多线程并不是一个同等关系,异步是目的,多线程只是实现异步的一种手段。异步还可以用消息,或者是委托到其他进程来实现。
多个线程之间可以是同步的,也可以是异步的。
-
设计模式-规约模式C#版
-
设计模式-策略模式C#版
-
突然有一个想法,来自圆桌骑士,就叫做“圆桌团队”吧。
圆桌骑士在百度百科有解释:圆桌骑士 十二圆桌骑士。
圆桌的含意是平等和世界。所有圆桌的骑士彼此平等,并且互为伙伴。
-
Rails开发细节《七》ActiveRecord Associations关联
-
Rails开发细节《六》ActiveRecord Validationa and Callbacks验证和回调
-
Rails开发细节《五》Migrations 数据迁移
virusswb
分享到朋友圈
- 关注技术:Android .Net Ruby/Rails
- 入住博客:2007-02-06 14.1年