Using ERB in YAML Configuration File

A while back in Railscast #85 Ryan Bates demonstrated how to add a YAML-based configuration file to a Rails application. You start with the configuration file — say RAILS_ROOT/config/app_config.yml — containing your configuration data:

And then you load the file from an initializer — say RAILS_ROOT/config/initializer/load_config.rb — containing the following:

And from then on a Hash named APP_CONFIG will be available throughout your application containing the configuration specific to the environment in which your application is running, i.e., development, test or production.

But what if you want to dynamically configure one or more values in your configuration file? Other YAML files loaded by Rails such as fixture files or database.yml are processed through ERB before being loaded. Wouldn’t it be nice to be able to do the same in your application configuration file?

As it is Rails will not process those ERB snippets, but you can change that with one small change to your initializer:

Now, instead of loading the file directly, YAML loads the string returned by ERB#result which will contain the contents of the app_config.yml after the ERB snippets have been evaluated.

From: http://urgetopunt.com/rails/2009/09/12/yaml-config-with-erb.html

前两日的服务器问题

昨天百无聊赖的时候收到一封邮件,说我的服务器出了问题,我立刻去访问,发现还是好的,然后刷新,连不上数据库了,再刷新,挂了⋯⋯

服务器这前两天挂了两次,前天半小时,昨天2小时左右。

用linode很长时间,有朋友问我这个VPS怎么样。就目前来看,linode的客服响应速度还是很快的,服务器出现问题会立刻发传票,修复速度也挺快。昨天硬盘坏掉了,我那时还在想有些数据可能是要没有了,恢复以后发现什么也没丢。如果服务器出故障,最新的情况他们也会及时更新。

速度上属于可以接受的范围,其实网上这些说的很多了。服务器还是比较稳定的。我这看上去像是做广告,算了⋯⋯

其实我是想说这两日服务器的状况,如果那时你正在访问,后来发觉挂了,很抱歉。

2012-07-20

如果不算上从前在QZONE上发的零星点点,从开始写上一个博客一直到现在,竟然有六年了。

博客搬家后一直很少再去注意从前的博客,今天偶然回去看一眼,才注意到第一篇博文是06年发的。那时还在研究做一个全站flash的博客,那时flash很流行,闪客这个字眼和黑客并列。那时买了第一台属于自己的电脑,除了和舍友们的游戏时间,自己还在一旁啃as和asp。那时下了一整天的redhat,刻录了三张CD,从完全不懂开始捣鼓自己的电脑……这些生涩的文字让我想去那个什么都不懂的时间,从第一次接触dreamweaver到帮网络中心维护网站。从科技部到塞外缘,再到软着陆和网络小组,图书馆机房的网刻到一张不知怎么得到的web开发讲师证书……那时的完整代码产品在自己脑海里是遥远的存在。

那时候好多朋友都在写博客,到了现在,真正坚持下来的人却没有几个。看着从前的博客,那时朋友言论和自己研究的好多东西都还在那里,只是物是人非,空剩下那些片段勾起的回忆,而他们早就不再自己生活的范围。现如今,他们中的多数人早已失去联系,其他人多数成为网络空间里一个灰色头像,只剩下博客里的文字串起的更精准的记忆。现在我已经不写太多的生活记忆,只写一些技术文章,或是类似吐嘈的随笔,早已经没有了从前那些奇怪的想法。那时的想法真多啊——图书馆后面的草地上学空翻和街舞、广场上的滑板社、宿舍CS战队、网页开发组、wow插件……我们已经变成另一个人,不再是那个年轻有活力有想法没脑子的人,炙热青春的回忆也随着点滴文字埋藏到日志的最后一页,随着岁月雪藏湮灭。

很多时候,记忆也是骗人的东西,它的扭曲力量发生时,我们却完全意识不到。直到打开从前生涩的文字,才发现那翻页的数字上蕴含的东西,能够让自己的回忆真正完整和准确。

 

rails中的render,redirect_to和flash

rails中的render和redirect_to我们使用的次数应该很多,写下来算是一个笔记。

首先render是渲染出页面,而redirect_to是跳转。我们写程序有个原则是不要重复造轮子,所以我们如果有一个view模板写出来后经常会有其他的action使用,比如我们写了文章列表的页面模板,然后搜索的页面也用得到,这时使用render来渲染对应的模板,便不用再重写一个搜索的view模板。而redirect_to接受的参数则像link_to,是作为跳转的。而render只可以使用同一个controller的view。

render的时候我们也许会碰到flash的问题。flash是一条信息,用过以后会自动清掉。用法:flash[:message] = "something",它的原理是写入seesion的一段话,用完后删除,但如果我们用的是render,flash是对这个view模板上一直有效的。所以搜索的flash和列表页的flash混在了一起,搜索完切换到列表页发现flash消息还在显示!这时我们可以使用flash.now[:message] = "something",就可以避免此类问题。为什么呢?因为flash.now不是保存在cookie中,而是在request中。

所以一般情况下,flash[:error]和redirect_to一起使用,flash.now[:error]则和render配合使用。