Class: ConfModifier

Inherits:
Object
  • Object
show all
Defined in:
lib/common/socket/conf_modifier.rb,
lib/common/socket/rlib/conf_modifier.rb

Overview

This class supply conf modification related service e.g. modify single/batch conf items

Author

chenjie

Data

2009-4-30

Instance Method Summary collapse

Constructor Details

#initialize(confPath) ⇒ ConfModifier

Returns a new instance of ConfModifier.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/common/socket/conf_modifier.rb', line 13

def initialize(confPath)
  	@confPath = confPath
	#lineNum : key
  	@dic= Hash.new
	#key : value
  	@conf = Hash.new
  
  file = File.open(@confPath)
  cnt = 0
 
  file.each{ |line|
    #print line
    cnt+=1
    
    if line.strip[0, 1] == '#' or line.strip.length == 0
      @dic[ cnt ] = line.strip
    else
      list = line.strip.split(":")
      key = list[0].strip
if list[1] != nil then
      	list.delete_at(0)
	value = list.join(":").strip
else
	#只有key没有value的情况
	value = ''
end

      @dic[ cnt ] = key
      @conf[key] = value
    end
    }
  
  @lines = cnt
    
  file.close
end

Instance Method Details

#get_conf(key) ⇒ Object

获取某个配置项的值



112
113
114
# File 'lib/common/socket/conf_modifier.rb', line 112

def get_conf(key)
	return @conf[key]
end

#modify(key, newValue) ⇒ Object

修改单个配置项



55
56
57
58
59
60
61
62
63
64
65
# File 'lib/common/socket/conf_modifier.rb', line 55

def modify(key, newValue)
  if @conf.has_key?(key)
puts "modify from [" + key + "=>"  + @conf[key] + "] to [" + key + "=>" + newValue + " ]"
   @conf[key] = newValue
  else
 puts "add new conf " + key + "=>" + newValue
    @lines += 1
    @dic[@lines] = key
    @conf[key] = newValue
  end
end

#modifyall(hash) ⇒ Object

批量修改配置项



73
74
75
76
77
78
79
# File 'lib/common/socket/conf_modifier.rb', line 73

def modifyall(hash)
	if hash != nil then
hash.each{|key,value|
	modify(key, value)
}
	end
end

#writeconfObject

按顺序回写配置文件



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/common/socket/conf_modifier.rb', line 88

def writeconf
  file = File.open(@confPath, 'w')
  @dic.sort_by { |key, value| key }
  @dic.each_key { |ki|
    if @dic[ki].strip.length != 0
	#key, value
      if @conf.has_key?(@dic[ki])
        file.print(@dic[ki] ,  " : ",@conf[@dic[ki]] , "\n")
      else
        file.print( @dic[ki] , "\n")
      end
    else
      file.print( "\n")
    end
    }

  file.close
end