• 可以先去看下《ruby 元编程》。类似

    if interface["ip"].nil?
      interface["ip"] = iface.ip
    end
    

    可以重构为

    interface["ip"] ||= iface.ip
    

    这类是比较基础的元编程。 一些可以在逻辑上进行重构:

    next if node["topology_resource_id"].nil?
    

    =>

    @nodes.select{|n| n["topology_resource_id"].present?}.each do |node_name, node|
    

    有些地方个人觉得很奇怪:

    if !iface.nil?
    

    =>

    if iface.present?
    

    而类似

    topology_resource            = TopologyResource.find(node["topology_resource_id"])
    .....
    iface =   topology_resource.topology_resource_interfaces.find_by_name interface_name
    
    

    的地方是有可能报错的。

    physnet           = vlan_result["physnet"]          
    external_network  = vlan_result["external_network"]
    
    interface["physnet"]          = physnet
    interface["external_network"] = external_network
    

    中间变量显得没什么意义

  • 试一下 rvm

  • #3 楼 @hardywu 可以在 ruby china 发帖试试,个人觉得在这里招人靠谱

  • #3 楼 @realwol 个人觉得算代码行数评绩效不大合理,感觉修 bug 的人特别亏,哈哈。。。

  • Git - rebase at 2014年10月28日

    rebase 是 git 的一个重要功能,用它确实有趣得多,但处理的好反而容易在解决冲突的时候造成不必要的麻烦,我有时候宁肯 pull 也不敢随便就 rebase 也是因为这个原因。要讲 rebase 的话,不可避免地要阐述一下和 merge 之间的差别以及适用的场合。

  • 招人还需要公道的月钱啊

  • 是 ruby 方面的吗?

  • rake db:migrate 的时候在后面指定一下版本:VERSION=xxxxxx 不然默认全部执行一遍,免不了出现冲突。