Sun 05 February, 2012

千里之行,始于足下 —— 《道德经》
1step是1st step的缩写。
有多少次,一个新想法在脑中成型,我摩拳擦掌,为即将诞生的一批新生代码兴奋不已。不过,真正的第一步,并不是打开编辑器/IDE狂飙代码,而是准备开发环境。
以一个Ruby项目为例,我要做的是:
- 安装RVM
- 安装一个特定版本的Ruby
- 安装bundler
- 编写一个Gemfile
- 创建lib目录,存放源码
- 创建spec目录,存放测试
- 创建一个Rakefile,用作构建脚本
当然,这还是仅仅是一个个人项目,如果是公司项目,要准备的东西会更多。几乎每一次,要做的事情几乎都是一样的,做多了,自然就烦了。作为一个程序员,我们当然要把自己从这种繁琐中解脱出来。
1step就是一次朝着这个方向努力的尝试。
运行1step很简单,把下边这条命令贴到命令行里。
bash -s stable < <(curl -s https://raw.github.com/dreamhead/1step/master/ruby/starter.sh)
它就会替我们
- 安装RVM,如果已安装RVM,但RVM过老,则升级RVM
- 如果没有安装相应的ruby版本,则安装ruby
- 为项目创建一个.rvmrc,存放项目配置
- 如果没有bundler,则安装bundler
- 如果没有Gemfile,就生成一个默认的Gemfile
- 运行bundle install安装gem
- 创建一个缺省的项目骨架
- lib目录用以存放源码
- spec目录用以存放测试,如果spec_helper.rb不存在,则创建一个缺省的spec_helper.rb
- 如果没有Rakefile,则创建一个缺省的Rakefile
目前,1step才刚刚起步,我只完成了在Mac环境下Ruby项目的准备。在后续的计划中,我还打算做Rails和node.js环境的安装。
就个人而言,这个项目有几个有趣的地方:
- 这是我第一次用shell脚本做项目。因为这个项目本身就是一个事关安装和设置环境的项目,假设目标机器上装有诸如Ruby这样的环境是不现实的,但装有shell还是可以预期的。正是因为第一次用shell,所以,我会因为变量和等号之间多了一个空格而百思不得其解。如果你愿意查看源码,会看到很多用法不是太地道的地方。
- 部署在github上。这是从RVM和NPM上学来的。正如前面所见,只要在命令行里执行一条命令就可以了,无需用户下载保存,然后再去运行。这么做的好处是,我只要在github上升级了我的发布,所有人用到的命令就都是最新的了。目前而言,我每次提交都是一次最新的发布,真正做到了持续发布。
- 这个项目其实是我脑子里一个更大想法的一部分。我和徐昊聊过,他对我这个想法的总结是,复制ThoughtWorks开发体验。
1step是一个刚刚起步的开源项目,欢迎有兴趣的朋友加入。对了,除我之外的第一个贡献者是hkliya,多谢了!
add to del.icio.us. look up in del.icio.us.
add to furl
I went to see the awesome metal band Anvil last night at the Melting Point in Athens, GA. They played a great show, and here are three highlights. The first video is the first two songs of the night, March … Continue reading
add to del.icio.us. look up in del.icio.us.
add to furl
add to del.icio.us. look up in del.icio.us.
add to furl
I'm not sure which one is worse. But they made me giggle when I thought of them, so here they are.

add to del.icio.us. look up in del.icio.us.
add to furl
add to del.icio.us. look up in del.icio.us.
add to furl