From 9fbc76390212dd597779e627b1f22645c4bc1f26 Mon Sep 17 00:00:00 2001 From: Tan Le Date: Sat, 18 Apr 2015 21:53:53 +1000 Subject: [PATCH] Replace Hash#keys.each with Hash#each_key for some perf boost --- app/controllers/posts_controller.rb | 2 +- app/controllers/topics_controller.rb | 2 +- app/models/directory_item.rb | 2 +- app/models/group.rb | 2 +- app/models/incoming_links_report.rb | 4 ++-- app/models/post.rb | 2 +- app/models/topic.rb | 2 +- app/serializers/post_revision_serializer.rb | 6 +++--- lib/post_revisor.rb | 2 +- lib/score_calculator.rb | 2 +- lib/site_settings/yaml_loader.rb | 2 +- spec/integrity/i18n_spec.rb | 2 +- 12 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 57b829e53..370eae68c 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -436,7 +436,7 @@ class PostsController < ApplicationController result[:is_warning] = false end - PostRevisor.tracked_topic_fields.keys.each do |f| + PostRevisor.tracked_topic_fields.each_key do |f| params.permit(f => []) result[f] = params[f] if params.has_key?(f) end diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb index cdc7a2819..d226f6f1c 100644 --- a/app/controllers/topics_controller.rb +++ b/app/controllers/topics_controller.rb @@ -128,7 +128,7 @@ class TopicsController < ApplicationController guardian.ensure_can_edit!(topic) changes = {} - PostRevisor.tracked_topic_fields.keys.each do |f| + PostRevisor.tracked_topic_fields.each_key do |f| changes[f] = params[f] if params.has_key?(f) end diff --git a/app/models/directory_item.rb b/app/models/directory_item.rb index 65d8dede2..aa954ea84 100644 --- a/app/models/directory_item.rb +++ b/app/models/directory_item.rb @@ -19,7 +19,7 @@ class DirectoryItem < ActiveRecord::Base def self.refresh! ActiveRecord::Base.transaction do exec_sql "TRUNCATE TABLE directory_items" - period_types.keys.each {|p| refresh_period!(p)} + period_types.each_key {|p| refresh_period!(p)} end end diff --git a/app/models/group.rb b/app/models/group.rb index 8d1e38f42..b36f5cee2 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -151,7 +151,7 @@ class Group < ActiveRecord::Base end def self.ensure_automatic_groups! - AUTO_GROUPS.keys.each do |name| + AUTO_GROUPS.each_key do |name| refresh_automatic_group!(name) unless lookup_group(name) end end diff --git a/app/models/incoming_links_report.rb b/app/models/incoming_links_report.rb index 2d1563f68..57531025e 100644 --- a/app/models/incoming_links_report.rb +++ b/app/models/incoming_links_report.rb @@ -36,7 +36,7 @@ class IncomingLinksReport num_clicks = link_count_per_user num_topics = topic_count_per_user report.data = [] - num_clicks.keys.each do |username| + num_clicks.each_key do |username| report.data << {username: username, num_clicks: num_clicks[username], num_topics: num_topics[username]} end report.data = report.data.sort_by {|x| x[:num_clicks]}.reverse[0,10] @@ -67,7 +67,7 @@ class IncomingLinksReport num_clicks = link_count_per_domain num_topics = topic_count_per_domain(num_clicks.keys) report.data = [] - num_clicks.keys.each do |domain| + num_clicks.each_key do |domain| report.data << {domain: domain, num_clicks: num_clicks[domain], num_topics: num_topics[domain]} end report.data = report.data.sort_by {|x| x[:num_clicks]}.reverse[0,10] diff --git a/app/models/post.rb b/app/models/post.rb index 7e0e5e455..7dc8ab166 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -221,7 +221,7 @@ class Post < ActiveRecord::Base TopicLink.where(domain: hosts.keys, user_id: acting_user.id) .group(:domain, :post_id) - .count.keys.each do |tuple| + .count.each_key do |tuple| domain = tuple[0] hosts[domain] = (hosts[domain] || 0) + 1 end diff --git a/app/models/topic.rb b/app/models/topic.rb index e21492388..89d380d96 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -613,7 +613,7 @@ class Topic < ActiveRecord::Base end def update_action_counts - PostActionType.types.keys.each do |type| + PostActionType.types.each_key do |type| count_field = "#{type}_count" update_column(count_field, Post.where(topic_id: id).sum(count_field)) end diff --git a/app/serializers/post_revision_serializer.rb b/app/serializers/post_revision_serializer.rb index d7630a96d..383d4142e 100644 --- a/app/serializers/post_revision_serializer.rb +++ b/app/serializers/post_revision_serializer.rb @@ -178,7 +178,7 @@ class PostRevisionSerializer < ApplicationSerializer } # Retrieve any `tracked_topic_fields` - PostRevisor.tracked_topic_fields.keys.each do |field| + PostRevisor.tracked_topic_fields.each_key do |field| if topic.respond_to?(field) latest_modifications[field.to_s] = [topic.send(field)] end @@ -198,7 +198,7 @@ class PostRevisionSerializer < ApplicationSerializer revision[:revision] = pr.number revision[:hidden] = pr.hidden - pr.modifications.keys.each do |field| + pr.modifications.each_key do |field| revision[field] = pr.modifications[field][0] end @@ -210,7 +210,7 @@ class PostRevisionSerializer < ApplicationSerializer cur = @all_revisions[r] prev = @all_revisions[r - 1] - cur.keys.each do |field| + cur.each_key do |field| prev[field] = prev.has_key?(field) ? prev[field] : cur[field] end end diff --git a/lib/post_revisor.rb b/lib/post_revisor.rb index 69dc825fa..af0ae277e 100644 --- a/lib/post_revisor.rb +++ b/lib/post_revisor.rb @@ -300,7 +300,7 @@ class PostRevisor return unless revision = PostRevision.find_by(post_id: @post.id, number: @post.version) revision.user_id = @post.last_editor_id modifications = post_changes.merge(@topic_changes.diff) - modifications.keys.each do |field| + modifications.each_key do |field| if revision.modifications.has_key?(field) old_value = revision.modifications[field][0] new_value = modifications[field][1] diff --git a/lib/score_calculator.rb b/lib/score_calculator.rb index 343edbe5b..a9ee09758 100644 --- a/lib/score_calculator.rb +++ b/lib/score_calculator.rb @@ -33,7 +33,7 @@ class ScoreCalculator def update_posts_score(min_topic_age) components = [] - @weightings.keys.each { |k| components << "COALESCE(#{k}, 0) * :#{k}" } + @weightings.each_key { |k| components << "COALESCE(#{k}, 0) * :#{k}" } components = components.join(" + ") builder = SqlBuilder.new( diff --git a/lib/site_settings/yaml_loader.rb b/lib/site_settings/yaml_loader.rb index 6ff21eff6..5142f5aab 100644 --- a/lib/site_settings/yaml_loader.rb +++ b/lib/site_settings/yaml_loader.rb @@ -16,7 +16,7 @@ class SiteSettings::YamlLoader def load yaml = YAML.load_file(@file) - yaml.keys.each do |category| + yaml.each_key do |category| yaml[category].each do |setting_name, hash| if hash.is_a?(Hash) # Get default value for the site setting: diff --git a/spec/integrity/i18n_spec.rb b/spec/integrity/i18n_spec.rb index db87efc56..4996cdbe0 100644 --- a/spec/integrity/i18n_spec.rb +++ b/spec/integrity/i18n_spec.rb @@ -16,7 +16,7 @@ describe "i18n integrity checks" do end it "needs an i18n key (notification_types) for each Notification type" do - Notification.types.keys.each do |type| + Notification.types.each_key do |type| I18n.t("notification_types.#{type}").should_not =~ /translation missing/ end end