昨天很 Happy 的把自己的个人项目部署起来了,结果后来发现有个地方出了点问题。就是在生产环境下,views
中使用time_ago_in_words
会有问题,由于页面是缓存到redis
的。这就导致我们得到的类似1分钟之前
这个结果始终都是不变的,而且还会引发I18n
的问题。因为不同用户使用的语言设置可能不同,如果创建者使用的英文,那么time_ago_in_words
在缓存中的就是英文,而中文环境的浏览者看到的也是中文了。虽然可以通过给cache
中加入locale
来区分不同语言环境保存不同的cache
,但是时间显示错误的这个问题还是没法解决。
我们在 ActiveRecord 中使用where
查询时,通常是下面这样写
之前跑应用的时候一直是自己手动一步一步搭起来的,之前看到论坛上有好多帖子谈到自动化部署的。一直打算要在自己的项目种来实验一下的,结果一直。。。懒,今天终于下定决心,开始研究 Capistrano 的文档,开始体验一下自动化部署的。
好多人觉得部署这种事情,就一步一步跑起每个模块就好了,为什么要用这种也算挺重量级的框架来部署呢。以前我也是这么认为,但是发现随着应用的复杂度的提升,用到的东西越来越多,部署确实是一个比较大的工程了。而且自动化部署的好处是只需第一次配置好,今后的所有的部署只需根据现在的部署文件简单的修改一下就好了。反观手动部署的话,每次都要重复同样的一堆指令,开始还好,久了就真的难以忍受了。现在开始进入正题。
记得以前在读Ruby on Rails Tutorial
的时候,里面提到了下面的内容:
今天在群里看到有朋友问到,像["first", "second", "third"].map(&:capitalize)
这种看起来比较高端的用法,背后的实现过程到底是什么呢。记得以前恰好在 Ruby 元编程的书中看到过这个,这里就谈一下对它的理解吧。
最近开始着手自己的一个小项目的国际化工作,虽然其实根本没个外国的用户,但是本着学习的原则还是严格的
来进行了一次,而在这过程中也对 Rails 中国际化有了一个较为全面的认识。
这是这几年看的最爽的一次发布会了,不得不感叹 Apple 的强大。一场发布会一下又感觉 Apple 领先了整个
业界好几年,不枉熬夜到这么晚看这场发布会了。
在部署应用的时候,我们通常要连接远程服务器,如果不使用一些专门的 ssh 软件而是使用终端的话。首先要在 shell 输入
随着各种产品的不断出现,大家注册的各种账号也越来越多,如果能用一个账号来登录不同的网站那么将带来很大
的便利。Facebook 做为社交网站的 No.1,用它的账号来做登录验证是个不错的选择。
实现这个功能,我们需要用到 OmniAuth
这个 gem,先说说 OmniAuth 是什么:
在处理 Views 的过程中,我们时常会遇到需要写一些 Helper Method
的情况。通常的做法是我们把它放在
app/helpers
这个目录下,大部分时间这是没什么问题的,但是有时候我们也会遇到一些特殊的情况。