这个博客系统是基于 Ruby on Rails 3.2rc2 构建的。参加 GitCafe 的开发后学习到了很多关于 Rails 的东西,于是使用了如下 Gem 包重构了博客:

  1. devise 用于账号管理相关的功能,十分强大,但同时也配置比较复杂。

  2. slim-rails slim 语言可以简化 erb 文件的编写,将一切冗余剔除。利用类似 yaml 的风格来处理嵌套和结构。这样所有的结束符都不需要写了。用过之后再也不想写 html 或是 erb 了。视图就清理出来了。

  3. inherited_resources 将标准的 CRUD 操作完全打包,只需要继承 Class OoxxController < InheritedResource::Base,就有了完整的七个操作,而且自定义也十分简单。控制器会变得无比干净。

  4. inherited_resources_views 这个依赖于上一个包,既然控制器继承自 InheritedResource::Base,那么利用 Rails 3.1 的视图继承特性可以将标准的表单视图全部去掉,统一继承自 app/views/inherited_resource/base/。这个组件只需要生成一次视图即可移除。唯一的问题在于默认生成在 app/views/inherited_resource/,需要手动移动。

  5. redcarpet 用于 Markdown 处理,新版变得无比强大和复杂,支持多种标记语言。

  6. crack 用于处理 XML 和 JSON 的读取。这个功能做成了一个 rake 任务,从 XML 文件中恢复数据库。导出直接使用视图层提供的指定 format 输出来获取 XML 文件。这个功能就像这个 Gem 包的名字一样,完全是图省事的一个简单暴力的解决方案。已经从 RubyGems 移动到了 GitHub Gems 中去了。可以在 Gemfile 中添加 gem 'crack', git: 'git://github.com/jnunemaker/crack.git',来加入到 Rails 中。或是 gem install jnunemaker-crack -s http://gem.github.com/ 来添加到系统中去。

  7. sass & compass 在 Rails 3.1 之后 sass 就默认被包含进了 Rails。这个想 slim 一样用类似 yml 风格来处理 css 嵌套。并且提供更为强大的变量和 mixin 处理。加上 compass 框架,css 的兼容性和扩展性变得无比强大和简单。compass 包含常见的 IE 兼容性处理,css 圆角,多浏览器兼容的各类阴影,分栏效果,按钮 sprite 等等。

有了这些 Gem 包的辅助,代码量直线下降,而且更为清晰易于扩展。实属居家旅行必备之 Gem 包。