包含标签 Ruby 的文章

Around Alias

Ruby 中的环绕别名 (around Alias) 带来的一系列 Google 先来看一段代码,体验一下什么是环绕别名 (around Alias) : class String alias :old_length :length def length "Length of'#{self}'is: #{old_length}" end end "abc".length #=> "Length of'abc'is: 3" 后面去 RubyChina 学习发现这是一种 Alias method chain pattern, 在 Rails3 中使用非常广泛,在 Rails5 上面被 prepend 替代了。在 Ruby 2.0 出来之前,Alias method chain pattern 这种做法在 Rails3 ActiveSupport 提供了 alias_method_chain 来辅助实现。 归根结底: 通过环绕别名,既修改了自己的逻辑,又不需要调用者更改自己的代码 什么是 alias_method_chain 很多人都很迷茫,不知道这个方法怎么用,所以栈爆网有这么一个问题: Ruby on Rails: alias_method_chain, what exactly does it do? when would you use alias_method_chain and why?……

阅读全文

Best Practice about ROR

[TOC] About ruby 带 block 遍历数组应该使用 each 而不是 for before: 这里需要遍历数组并且打印 for elem in [1, 2, 3, 4, 5] puts elem end Ruby 里面使用 each 带一个 block是一个更有效率的做法 after: [1, 2, 3, 4, 5].each do |elem| puts elem end 还可以变得更简单一点: [1, 2, 3, 4, 5].each { |elem| puts elem } 收集结果(遍历数组元素的处理结果)使用 map 而不是 each + << 这里希望收集数组中特定元素的大写形式 before: result = [] ['biology', 'english', 'Math'].each do |major| next if major.……

阅读全文