Ruby Hash inner another Hash is every empty -
i create method group commits of user per month in hash:
def calculate_month_ranking(commits) rank = hash.new(hash.new(0)) commits.each |commit_yml| commit = yaml.load commit_yml.data commit[:commits].each |local_commit| time = time.parse(local_commit[:timestamp]) month = "#{time.month}/#{time.year}" rank[month][commit[:user_name]]+= 1 binding.pry # debug end end rank end
but rank[month]
have value, if call rank
, value every empty. why?
[1] pry(main)> rank[month] => {"user1"=>4, "user2"=>1} [2] pry(main)> rank => {}
your problem in flowing line, assignment not correct hash
rank[month][commit[:user_name]]+= 1
i don't know values, adding here example can try out this
declare hash following
rank = {}
assign values key pair
rank.merge!(:month => {:user_name => 'test' })
hear adding console output
2.0.0-p481 :007 > rank = {} => {} 2.0.0-p481 :008 > rank.merge!(:month => {:user_name => 'test' }) => {:month=>{:user_name=>"test"}} 2.0.0-p481 :009 > rank => {:month=>{:user_name=>"test"}} 2.0.0-p481 :010 > rank[:month] => {:user_name=>"test"}
Comments
Post a Comment