把 AngelNest 的 mass assignment 漏洞给修补了,嘿嘿:https://github.com/fredwu/angel_nest/commit/ab636d677295cca9c42e525bc737dc6978e1a663
先把整体的架构框架搭起来,把基础功能完善,再补测试,只写功能性测试,
这个其实比不写测试还危险。
TDD 或是一个 unit 一个 test。
说写进 model 里好的都应该去复习 MVC 的基础知识。。。-_-#
Yehuda 的 proposal 在这里:https://gist.github.com/1974187
我个人非常赞同 safe guarding 应该是 controller 的责任,而不是 model 的责任。
咦,这篇文章里竟然有提到我~ hoho~ :D
我一句话都不用,一个链接就可以了,嘿嘿 :D http://contributors.rubyonrails.org/contributors/fred-wu/commits
难道是太复杂所以没人来尝试么?o_O
def rand_split(array, max_element=3)
new_array = []
while array != []
new_array << array.shift(1 + rand(max_element))
end
new_array
end
MiniTest 测试代码:
describe '#rand_split' do
let(:array) { (0..100).to_a }
let(:result) { rand_split(array.clone, 3) }
it 'returns an array of elements' do
result.must_be_kind_of Array
result[0].must_be_kind_of Array
end
it 'has a maximum of 3 items in each element' do
result.each do |element|
element.size.to_s.must_match /1|2|3/
end
end
it 'has the correct number of total items' do
result.flatten.size.must_equal array.size
end
it 'has elements containing 1 item' do
result.sort{ |x, y| x.size <=> y.size }[0].size.must_equal 1
end
it 'does not have elements with more than 3 item' do
result.sort{ |x, y| x.size <=> y.size }[-1].size.must_equal 3
end
end
#1 楼 @sunzheng91 如果是团队作业,或是开源项目的话,这样做法是很不负责任滴…… :\
class_eval
和 instance_eval
的命名有些搞-前者 eval 在 class 上,所以是给所有的 instance 用。后者 eval 在当前 class instance 上,所以只有当前这个 class 可以用。
MongoDB 虽然很出名,但是在业界也算是“臭名昭著”了。。。呵呵。。。
咳咳,虽然已经在前几楼推荐过了,但是作为原作者,我还是再来推荐一下我的 https://github.com/fredwu/angel_nest :)
Monaco
rvm get head
rvm install 1.9.3-falcon
我用的 Tango。
我以前也是手动创建目录和文件。前不久开始用 bundler 来创建了:https://github.com/sitepoint/security_guard :D
Rails 3.2 以上直接
config.assets.logger = false
就可以了。
我目前在用 D7000 + Sigma 17-50mm F/2.8(同类镜头中成像质量最高的)。
买了台 Panasonic GX1 + 14-42mm X + 14-140mm,但 m4/3 的成像质量实在是和 APS-C 相距甚远(原因之一其实是我买的镜头比较一般)。
目前在等 NEX-7。我已经买了 Nikon -> NEX 的转接头了,嘿嘿。