可以先去看下《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
rebase 是 git 的一个重要功能,用它确实有趣得多,但处理的好反而容易在解决冲突的时候造成不必要的麻烦,我有时候宁肯 pull 也不敢随便就 rebase 也是因为这个原因。要讲 rebase 的话,不可避免地要阐述一下和 merge 之间的差别以及适用的场合。
招人还需要公道的月钱啊
是 ruby 方面的吗?
rake db:migrate 的时候在后面指定一下版本:VERSION=xxxxxx 不然默认全部执行一遍,免不了出现冲突。