关于 Rails 中 time_ago_in_words 的缓存

昨天很 Happy 的把自己的个人项目部署起来了,结果后来发现有个地方出了点问题。就是在生产环境下,views中使用time_ago_in_words会有问题,由于页面是缓存到redis的。这就导致我们得到的类似1分钟之前这个结果始终都是不变的,而且还会引发I18n的问题。因为不同用户使用的语言设置可能不同,如果创建者使用的英文,那么time_ago_in_words在缓存中的就是英文,而中文环境的浏览者看到的也是中文了。虽然可以通过给cache中加入locale来区分不同语言环境保存不同的cache,但是时间显示错误的这个问题还是没法解决。

ActiveRecord 中的一个小陷阱

我们在 ActiveRecord 中使用where查询时,通常是下面这样写

使用 Capistrano 3 部署 Rails 应用

之前跑应用的时候一直是自己手动一步一步搭起来的,之前看到论坛上有好多帖子谈到自动化部署的。一直打算要在自己的项目种来实验一下的,结果一直。。。懒,今天终于下定决心,开始研究 Capistrano 的文档,开始体验一下自动化部署的。 好多人觉得部署这种事情,就一步一步跑起每个模块就好了,为什么要用这种也算挺重量级的框架来部署呢。以前我也是这么认为,但是发现随着应用的复杂度的提升,用到的东西越来越多,部署确实是一个比较大的工程了。而且自动化部署的好处是只需第一次配置好,今后的所有的部署只需根据现在的部署文件简单的修改一下就好了。反观手动部署的话,每次都要重复同样的一堆指令,开始还好,久了就真的难以忍受了。现在开始进入正题。

Secret Token in Rails

记得以前在读Ruby on Rails Tutorial的时候,里面提到了下面的内容:

关于 Symbol#to_proc() 的一些事情

今天在群里看到有朋友问到,像["first", "second", "third"].map(&:capitalize)这种看起来比较高端的用法,背后的实现过程到底是什么呢。记得以前恰好在 Ruby 元编程的书中看到过这个,这里就谈一下对它的理解吧。

Rails 中 I18n 的使用

最近开始着手自己的一个小项目的国际化工作,虽然其实根本没个外国的用户,但是本着学习的原则还是严格的 来进行了一次,而在这过程中也对 Rails 中国际化有了一个较为全面的认识。

WWDC 2014

这是这几年看的最爽的一次发布会了,不得不感叹 Apple 的强大。一场发布会一下又感觉 Apple 领先了整个 业界好几年,不枉熬夜到这么晚看这场发布会了。

不输入密码连接远程服务器

在部署应用的时候,我们通常要连接远程服务器,如果不使用一些专门的 ssh 软件而是使用终端的话。首先要在 shell 输入

使用 Facebook 账号登录网站

随着各种产品的不断出现,大家注册的各种账号也越来越多,如果能用一个账号来登录不同的网站那么将带来很大 的便利。Facebook 做为社交网站的 No.1,用它的账号来做登录验证是个不错的选择。 实现这个功能,我们需要用到 OmniAuth 这个 gem,先说说 OmniAuth 是什么:

Using decorators for view output

在处理 Views 的过程中,我们时常会遇到需要写一些 Helper Method 的情况。通常的做法是我们把它放在 app/helpers 这个目录下,大部分时间这是没什么问题的,但是有时候我们也会遇到一些特殊的情况。