module GlobalConst
Constants
- APP_CODE_HASHES
Public Class Methods
constants()
click to toggle source
# 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)
click to toggle source
# 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 = {})
click to toggle source
# 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()
click to toggle source
TODO 考虑在数据结构和设置时优化
# 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)
click to toggle source
TODO 加载的时候直接生成方法,而不用这样动态查找,效率会更好吗?
# 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