这是一个变革的时代,web开发正在逐渐跨入一个新的境地。过去我们使用Ruby On Rails最让人兴奋的是ActiveRecord提供的简单但有点神奇的接口,但随着Rails3.1 Asset Pipeline1的发布,js,css正式成为了一等公民。我们越来越多开始遇到Rails提供API,前端HTML5 + CSS3 + Heavy JS的App。
这是一个很让人兴奋的改变,同时发生的是Hacker/Geeker们开始研究新的花样来发布个人网站,记录博客。从wordpress开始 Blog程序一直在发展,但没有本质的改变。2007-2009的时候你打开Rails程序员的博客,十有九是Mephisto2,到现在Rails官方的博客仍然是Mephisto。Mephisto基本上使用Rails写的Wordpress,理念上比较相似,也有挺多Theme,但Rails与生俱来的部署难问题限制了他的发展。Mephisto之后最不错的一个博客软件是Enki3,Enki的目标很简单,就是一个给Developer的博客软件,所以不像Mephisto一样大包大揽,没有太多东西需要配置,“clean, simple, easy to understand code base”,是Enki的哲学。我觉得Enki确实是一个不错的给程序员使用的博客软件,但问题是这已经不是一个写博客的时代了,所以事实上我们没有遇到几个使用Enki的博客。
但Hacker们不是普通的互联网用户,Twitter虽然满足了60%的使用需求,有的时候人们仍然需要通过一篇较长的文字来分享自己对某个技术问题的理解,或者最近做的一些新的尝试,很多时候这些文章促进了技术的发展,我们需要这些文字,也希望那些出色的Hacker们能多多分享。所以大家开始尝试新的记录博客的方法。最成功的就是Jekyll4。
Jekyll是github的创始团队中的Tom Preston建立的,“Jekyll is a blog-aware, static site generator in Ruby”,静态文件,template driven,可以直接部署到Github Pages11等各种优点让Jekyll成为了最近一俩年Hacker们记录博客的首选。今天我介绍的Octopress5就是完全基于Jekyll的一个blog框架,在Jelyll的基础上增加了默认的html模板,默认的js,css,和一套简单的配置,部署方案。因为Github Pages是使用Jekyll来驱动的,所以使用Octopress也可以直接部署到Github Pages。
从我自己的需求出发,有几个原因选择Octopress而不是其他的开源博客引擎来写blog:
Octopress的安装,部署都很简单,默认的主题也不错,很适合想记录一点文字的Developer。但如果需要一个CMS,建立一个简单但是功能完整的站点,有比较多的逻辑需要处理,需要完全制作新的样式,可能Octopress不是最适合的。有很多Ruby Base的CMS,都大同小异,使用最广泛的是Radiant8, Rails官方的站点也是用的他。不过我推荐的是Nestacms9,Nesta是Sinatra12写的,和Octopress很相似,静态页面,支持markdown,支持git发布,但因为是Sinatra Base,扩展起来很方便,加入SCSS,甚至Coffee Script10都很简单。
所以我的结论是,写Blog用Octopress,写一个小站点,用Nesta,唯一麻烦的是需要自己的host。
参考
1 Rails3.1引入了asset pipeline.
2 mephisto is a Rails implemented Blog System.
3 enki is A Ruby on Rails blogging app for the fashionable developer .
4 jekyll is a blog-aware, static site generator in Ruby.
5 octopress is A blogging framework for hackers.
6 Markdown is a text-to-HTML conversion tool for web writers.
7 SCSS makes CSS fun again.
8 Radiant is a no-fluff, open source content management system designed for small teams.
9 Nesta is A lightweight CMS, implemented in Sinatra.
10 Coffee Script is a little language that compiles into JavaScript.
11 Github Pages allows you to publish content to the web by simply pushing content to one of your GitHub hosted repositories.
12 Sinatra is a ruby based lightweight web development framework.