Module: GlobalConst
- Defined in:
- lib/ns_service_pack/global_const.rb
Constant Summary collapse
- APP_CODE_HASHES =
"config/code_hashes/"
- @@global_data =
{}
Class Method Summary collapse
- .constants ⇒ Object
- .load_app_code_hashes!(dir = APP_CODE_HASHES) ⇒ Object
- .load_code_hashes!(hash_or_file = {}) ⇒ Object
-
.mappings ⇒ Object
TODO 考虑在数据结构和设置时优化.
-
.method_missing(method_name, *args, &block) ⇒ Object
TODO 加载的时候直接生成方法,而不用这样动态查找,效率会更好吗?.
Class Method Details
.constants ⇒ Object
24 25 26 27 28 |
# File 'lib/ns_service_pack/global_const.rb', line 24 def self.constants data = @@global_data.select{|k| k.to_s !~ /\w+_mapping$/}.dup data.map{|k, v| data[k] = v.data} data end |
.load_app_code_hashes!(dir = APP_CODE_HASHES) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/ns_service_pack/global_const.rb', line 59 def self.load_app_code_hashes!(dir = APP_CODE_HASHES) if defined? Rails target = "#{Rails.root}/#{APP_CODE_HASHES}" if File.directory?(target) hfiles = Dir.glob("#{target}**/*.yml") hfiles.each do |f| load_code_hashes!(f) end end end end |
.load_code_hashes!(hash_or_file = {}) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/ns_service_pack/global_const.rb', line 37 def self.load_code_hashes!(hash_or_file = {}) if hash_or_file.is_a?(Hash) h = hash_or_file else h = YAML.load(File.open(hash_or_file)) unless h.is_a?(Hash) #格式异常检查,过滤掉空和无效文件 puts "==>Warning: Invalid arguments: #{hash_or_file}, it does not evalute to a Hash!你自己去看,别找我!" return end end nh = h.symbolize_keys nh.keys.each do |k| if @@global_data.key?(k) puts "==>Warning: new value(from #{hash_or_file.inspect}) is set for key:#{k}! Please check that!" end #FIXME 兼容一下以前的版本,以前吧mapping文件的键值定义为:<class_name>_fileds _new_key = k.to_s =~ /_fields$/ ? k.to_s.gsub("_fields", "_mapping").to_sym : k @@global_data[_new_key] = CodeHash.new(nh[k]) end end |
.mappings ⇒ Object
TODO 考虑在数据结构和设置时优化
31 32 33 34 35 |
# File 'lib/ns_service_pack/global_const.rb', line 31 def self.mappings data = @@global_data.select{|k| k.to_s =~ /\w+_mapping$/}.dup data.map{|k, v| data[k] = v.data} data end |
.method_missing(method_name, *args, &block) ⇒ Object
TODO 加载的时候直接生成方法,而不用这样动态查找,效率会更好吗?
18 19 20 21 22 |
# File 'lib/ns_service_pack/global_const.rb', line 18 def self.method_missing(method_name, *args, &block) ms = method_name.to_sym return @@global_data[ms] if @@global_data.key?(ms) raise "Method name: #{method_name}(#{args.inspect}) is not defined!" end |