November 16, 2013

在 ClojureScript 中使用 macro 简化 Angular.js 代码

背景

在 Angular.js 中配置 module.config 和 module.controller 等时, 需要使用一种稍微麻烦一点的方式:

function PhoneListCtrl($scope, $http) {...}

phonecatApp.controller('PhoneListCtrl', ['$scope', '$http', PhoneListCtrl]);

即需要重复指定需要的参数: 函数的参数和数组中的字符串. 这样做的目的是防止这些 JavaScript 代码被压缩混淆后, 函数的参数被重命名以至于 An......

October 21, 2013

Ruby 中的方法拦截

使用 alias_method

如果想调整 实例方法 的行为,例如在执行 to_i 方法之前验证字符串的格式,可以这样:

class String

def to_i_with_validation

raise "Invalid integer format: #{self.inspect}" if self !~ /\A-?\d+\Z/

to_i_without_validation

end

alias_method :to_i_without_validation, :to_i

alias_method :to_i, :to_i_wit......

March 10, 2013

在 Rails 项目中使用 Cucumber 进行验收测试

(注:文中用到的项目源码位于 github)

在某些情况下,Cucumber 非常适合用来做验收测试。

1. 在 Rails 项目中配置 Cucumber

在 Gemfile 中的 test 区域添加:

group :test do

gem 'cucumber-rails', :require => false

end

然后执行 bundle install。

接下来执行 rails generate cucumber:install (可以先在后面加 --help 查看可用的选项)。

2. 一个简单的测试

创建 features/view_posts......