Nursing your code back to good health

Jason Gedge

Staff Developer

Shopify

🙊
def initialize(hash = {}, loaded_path = nil)
  @loaded_path = loaded_path
  @for_cop = Hash.new do |h, cop|
    qualified_cop_name = Cop::Cop.qualified_cop_name(cop, loaded_path)
    cop_options = self[qualified_cop_name] || {}
    cop_options['Enabled'] = enable_cop?(qualified_cop_name, cop_options)
    h[cop] = cop_options
  end
  @hash = hash
  @validator = ConfigValidator.new(self)
end
class Point
  attr_reader :x, :y

  def initialize(x, y)
    @x = x
    @y = y
  end

  def distance(p)
    Math.sqrt(squared_delta(x, p.x) + squared_delta(y, p.y))
  end

  private

  def squared_delta(a, b)
    (a - b)**2
  end
end
class Point
  attr_reader :x, :y

  def initialize(x, y)
    @x = x
    @y = y
  end

  def distance(p)
    Math.hypot(x - p.x, y - p.y)
  end

  private

  def squared_delta(a, b)
    (a - b)**2
  end
end
😱😭

Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite… The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise.

Ward Cunningham, 1992

Technical debt | ˈtɛknɪk(ə)l dɛt

noun

Code artifacts that impose additional cognitive effort when they need to be understood, extended, or modified.

Lines of code

Who really needs more than one file?
screenshot of a terminal with lots of code

Cyclomatic Complexity

The road not taken (but maybe sometimes)
an acyclic directed graph

Lack of cohesion methods

Apples and oranges
a suit-wearing dog sitting at a desk

Perfection is the enemy of progress

Winston Churchill

Dead code detection

  • Find method definitions, collecting their names
  • Find potential references to those names
  • Ignore references in test files
definitions = Set.new
references = Set.new
files.each do |file|
  ast = parse(file)
  definitions |= method_names(ast)
  unless test_file(file)
    references |= references(ast)
  end
end

return definitions - references
definitions = Set.new
references = Set.new
files.each do |file|
  ast = parse(file)
  definitions |= method_names(ast)
  unless test_file(file)
    references |= references(ast)
  end
end

return definitions - references

Parser options

💎 parser

$ ruby-parse -e "class MyClass; def initialize; @ivar = 1; end; end"
(class
  (const nil :MyClass) nil
  (def :initialize
    (args)
    (ivasgn :@ivar
      (int 1))))
$ ruby-parse -e "class MyClass; def initialize; @ivar = 1; end; end"
(class
  (const nil :MyClass) nil
  (def :initialize
    (args)
    (ivasgn :@ivar
      (int 1))))

https://github.com/ruby/ruby/blob/master/node.h 

  enum node_type { ... }

https://github.com/ruby/ruby/blob/master/node.c 

  dump_node(VALUE buf, VALUE indent, int comment, const NODE * node)
case NODE_CLASS:
	ANN("class definition");
	ANN("format: class [nd_cpath] < [nd_super]; [nd_body]; end");
	ANN("example: class C2 < C; ..; end");
	F_NODE(nd_cpath, "class path");
	F_NODE(nd_super, "superclass");
	LAST_NODE;
	F_NODE(nd_body, "class definition");
	return;
case NODE_CLASS:
	ANN("class definition");
	ANN("format: class [nd_cpath] < [nd_super]; [nd_body]; end");
	ANN("example: class C2 < C; ..; end");
	F_NODE(nd_cpath, "class path");
	F_NODE(nd_super, "superclass");
	LAST_NODE;
	F_NODE(nd_body, "class definition");
	return;

Parser options

💎 parser

👮 Rubocop

🌲 RubyVM::AbstractSyntaxTree

🚨 🚨 🚨 🚨 🚨

This class is experimental and its API is not stable, therefore it might change without notice. As examples, the order of children nodes is not guaranteed, the number of children nodes might change, there is no way to access children nodes by name, etc.

If you are looking for a stable API or an API working under multiple Ruby implementations, consider using the parser gem or Ripper. If you would like to make RubyVM::AbstractSyntaxTree stable, please join the discussion at https://bugs.ruby-lang.org/issues/14844 .

🚨 🚨 🚨 🚨 🚨
RubyVM::AbstractSyntaxTree.parse_file(path)
definitions = Set.new
references = Set.new
files.each do |file|
  ast = parse(file)
  definitions |= method_names(ast)
  unless test_file(file)
    references |= references(ast)
  end
end

return definitions - references
def walk(node)
  return unless node
  return unless node.is_a?(RubyVM::AbstractSyntaxTree::Node)

  yield node

  node.children.each do |child|
    walk(child) { |n| yield n }
  end
end
def walk(node)
  return unless node
  return unless node.is_a?(RubyVM::AbstractSyntaxTree::Node)

  yield node

  node.children.each do |child|
    walk(child) { |n| yield n }
  end
end
def walk(node)
  return unless node
  return unless node.is_a?(RubyVM::AbstractSyntaxTree::Node)

  yield node

  node.children.each do |child|
    walk(child) { |n| yield n }
  end
end
def walk(node)
  return unless node
  return unless node.is_a?(RubyVM::AbstractSyntaxTree::Node)

  yield node

  node.children.each do |child|
    walk(child) { |n| yield n }
  end
end
def walk(node)
  return unless node
  return unless node.is_a?(RubyVM::AbstractSyntaxTree::Node)

  yield node

  node.children.each do |child|
    walk(child) { |n| yield n }
  end
end
walk(root) do |node|
  case node.type.downcase
    # def foo; end
    when :defn
      method_name = node.children[0].to_s
      definitions << method_name

    # def object.foo; end
    when :defs
      method_name = node.children[1].to_s
      definitions << method_name
  end
end
walk(root) do |node|
  case node.type.downcase
    # def foo; end
    when :defn
      method_name = node.children[0].to_s
      definitions << method_name

    # def object.foo; end
    when :defs
      method_name = node.children[1].to_s
      definitions << method_name
  end
end
walk(root) do |node|
  case node.type.downcase
    # def foo; end
    when :defn
      method_name = node.children[0].to_s
      definitions << method_name

    # def object.foo; end
    when :defs
      method_name = node.children[1].to_s
      definitions << method_name
  end
end
walk(root) do |node|
  case node.type.downcase
    # def foo; end
    when :defn
      method_name = node.children[0].to_s
      definitions << method_name

    # def object.foo; end
    when :defs
      method_name = node.children[1].to_s
      definitions << method_name
  end
end
walk(root) do |node|
  case node.type.downcase
    # def foo; end
    when :defn
      method_name = node.children[0].to_s
      definitions << method_name

    # def object.foo; end
    when :defs
      method_name = node.children[1].to_s
      definitions << method_name
  end
end
definitions = Set.new
references = Set.new
files.each do |file|
  ast = parse(file)
  definitions |= method_names(ast)
  unless test_file(file)
    references |= references(ast)
  end
end

return definitions - references
definitions = Set.new
references = Set.new
files.each do |file|
  ast = parse(file)
  definitions |= method_names(ast)
  unless test_file(file)
    references |= references(ast)
  end
end

return definitions - references
definitions = Set.new
references = Set.new
files.each do |file|
  ast = parse(file)
  definitions |= method_names(ast)
  unless test_file(file)
    references |= references(ast)
  end
end

return definitions - references
# foo(...)
when :fcall
  references << node.children[0].to_s

# foo
when :vcall
  references << node.children[0].to_s
# obj.foo(...)
when :call
  references << node.children[1].to_s

# obj&.foo(...)
when :qcall
  references << node.children[1].to_s
when :lit, :str, :sym
  lit = node.children[0].to_s
  called << lit.to_s if lit.is_a?(Symbol) || lit.is_a?(String)
definitions = Set.new
references = Set.new
files.each do |file|
  ast = parse(file)
  definitions |= method_names(ast)
  unless test_file(file)
    references |= references(ast)
  end
end
return definitions - references
method_definitions.reject_if do |name|
  next true if name.end_with?("_callback")
  next true if name.start_with?("visit_")
  next true if name.start_with?("on_")
  false
end
Method Name,Defined In
act,./app/models/post_action.rb
actual_name,./lib/freedom_patches/raw_handlebars.rb
add_admin_route,./lib/plugin/instance.rb
add_body_class,./lib/plugin/instance.rb
add_class_method,./lib/plugin/instance.rb
add_custom_reviewable_filter,./lib/plugin/instance.rb
add_default,./app/models/global_setting.rb
add_detail,./app/models/post.rb
add_members,./app/controllers/groups_controller.rb
add_message,./script/import_scripts/smf2.rb
add_owners,./app/controllers/admin/groups_controller.rb
add_permitted_post_create_param,./lib/plugin/instance.rb
add_preloaded_group_custom_field,./lib/plugin/instance.rb
add_preloaded_topic_list_custom_field,./lib/plugin/instance.rb
add_prev_data,./app/models/report.rb
add_to_size_cache,./lib/cooked_post_processor.rb
advanced_test,./app/controllers/admin/email_controller.rb
age_in_minutes,./app/models/topic.rb
all_reply_ids,./app/controllers/posts_controller.rb
all_topics_search,./lib/search.rb
application_logo_url,./app/helpers/application_helper.rb
apply_transform!,./lib/content_buffer.rb
approve_bulk,./app/controllers/admin/users_controller.rb
available_scopes,./app/models/user_api_key.rb
award,./app/controllers/admin/badges_controller.rb
aws,./app/controllers/webhooks_controller.rb
before_committed!,./lib/mini_sql_multisite_connection.rb
best_post,./app/models/topic.rb
bio_summary,./app/models/user_profile.rb
body_classes,./app/helpers/application_helper.rb
builder,./app/controllers/robots_txt_controller.rb
builtin,./app/models/group.rb
bulk_perform,./app/controllers/admin/groups_controller.rb
cache_avatar,./lib/file_store/s3_store.rb
callback_url,./lib/auth/discord_authenticator.rb
can_admin_tag_groups?,./lib/guardian/tag_guardian.rb
can_banner_topic?,./lib/guardian/topic_guardian.rb
can_bulk_invite_to_forum?,./lib/guardian.rb
can_change_post_owner?,./lib/guardian/post_guardian.rb
can_change_post_timestamps?,./lib/guardian/post_guardian.rb
can_change_post_type?,./lib/guardian/post_guardian.rb
can_change_primary_group?,./lib/guardian.rb
can_change_trust_level?,./lib/guardian.rb
can_claim_reviewable_topic?,./lib/guardian/user_guardian.rb
can_create_bookmark?,./lib/guardian/bookmark_guardian.rb
can_create_category?,./lib/guardian/category_guardian.rb
can_delete_bookmark?,./lib/guardian/bookmark_guardian.rb
can_delete_category?,./lib/guardian/category_guardian.rb
can_delete_post_action?,./lib/guardian/post_guardian.rb
can_delete_reviewable_queued_post?,./lib/guardian.rb
can_disable_second_factor?,./lib/guardian/user_guardian.rb
can_edit_post?,./lib/guardian/post_guardian.rb
can_edit_user?,./lib/guardian/user_guardian.rb
can_export_entity?,./lib/guardian.rb
can_get_access_to_topic?,./lib/guardian/topic_guardian.rb
can_hide_post_revision?,./lib/guardian/post_revision_guardian.rb
can_invite_group_to_private_message?,./lib/guardian.rb
can_lock_post?,./lib/guardian/post_guardian.rb
can_pick_avatar?,./lib/guardian/user_guardian.rb
can_publish_topic?,./lib/guardian/topic_guardian.rb
can_rebake?,./lib/guardian/post_guardian.rb
can_rescind_all_invites?,./lib/guardian.rb
can_resend_all_invites?,./lib/guardian.rb
can_reset_bounce_score?,./lib/guardian/user_guardian.rb
can_see_flagged_posts?,./lib/guardian/post_guardian.rb
can_see_group?,./lib/guardian.rb
can_see_groups_members?,./lib/guardian.rb
can_see_post_revision?,./lib/guardian/post_revision_guardian.rb
can_see_staff_info?,./lib/guardian/user_guardian.rb
can_show_post_revision?,./lib/guardian/post_revision_guardian.rb
can_sign_up?,./app/helpers/application_helper.rb
can_silence_user?,./lib/guardian/user_guardian.rb
can_unhide?,./lib/guardian/post_guardian.rb
can_unsilence_user?,./lib/guardian/user_guardian.rb
can_update_bumped_at?,./lib/guardian/topic_guardian.rb
can_view_raw_email?,./lib/guardian/post_guardian.rb
cancel_auto_bump_job,./app/models/topic_timer.rb
cancel_auto_delete_job,./app/models/topic_timer.rb
cancel_auto_delete_replies_job,./app/models/topic_timer.rb
cancel_auto_publish_to_category_job,./app/models/topic_timer.rb
cancel_auto_reminder_job,./app/models/topic_timer.rb
cancel_preload,./app/models/topic_list.rb
canonical_link_tag,./lib/canonical_url.rb
cap_unread!,./app/models/topic_user.rb
cards,./app/controllers/users_controller.rb
categories_breadcrumb,./app/helpers/topics_helper.rb
category_badge,./app/helpers/application_helper.rb
category_hashtag_lookup,./lib/pretty_text/helpers.rb
category_tag_hashtag_lookup,./lib/pretty_text/helpers.rb
cdata,./script/import_scripts/support/convert_mysql_xml_to_mysql.rb
cdata_block,./script/import_scripts/disqus.rb
check_avatar_notification,./lib/composer_messages_finder.rb
check_dominating_topic,./lib/composer_messages_finder.rb
check_education_message,./lib/composer_messages_finder.rb
check_get_a_room,./lib/composer_messages_finder.rb
check_new_user_many_replies,./lib/composer_messages_finder.rb
check_reviving_old_topic,./lib/composer_messages_finder.rb
check_sequential_replies,./lib/composer_messages_finder.rb
check_slug,./app/controllers/published_pages_controller.rb
classified_name,./lib/generators/plugin/plugin_generator.rb
clean_up_tutorial_search,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
clear_all!,./lib/rate_limiter.rb
clear_all,./app/controllers/admin/watched_words_controller.rb
clear_all_global!,./lib/rate_limiter.rb
clear_auto_bump_cache!,./app/models/category.rb
clear_custom_filters!,./app/models/reviewable.rb
clear_debounce_cache!,./app/models/search_log.rb
clear_https_cache!,./lib/final_destination.rb
clear_key,./app/jobs/scheduled/pending_reviewables_reminder.rb
clear_problem_message,./app/models/admin_dashboard_data.rb
clear_queue!,./app/services/badge_granter.rb
click,./app/controllers/search_controller.rb
client_overrides_exist?,./app/controllers/extra_locales_controller.rb
client_side_setup_data,./app/helpers/application_helper.rb
committed!,./lib/mini_sql_multisite_connection.rb
compile_ember_handlebars,./lib/freedom_patches/better_handlebars_errors.rb
compile_handlebars,./lib/freedom_patches/raw_handlebars.rb
confirm_request,./app/controllers/users/omniauth_callbacks_controller.rb
connect_info,./app/controllers/users/associate_accounts_controller.rb
contains_gaps?,./lib/topic_view.rb
correct_top_margin,./app/helpers/user_notifications_helper.rb
crawlable_meta_data,./app/helpers/application_helper.rb
create_gitignore_entry,./lib/generators/plugin/plugin_generator.rb
create_plugin,./lib/generators/plugin/plugin_generator.rb
create_upload_url,./app/controllers/admin/backups_controller.rb
crop_instructions,./app/models/optimized_image.rb
crop_instructions_animated,./app/models/optimized_image.rb
custom_avatar_column,./lib/plugin/instance.rb
custom_field_preloaded?,./app/models/concerns/has_custom_fields.rb
cycles,./script/import_scripts/smf2.rb
db_migrate_path,./lib/generators/rails/post_migration_generator.rb
default_locale?,./lib/site_setting_extension.rb
delayed_perform,./app/jobs/base.rb
delete_other_accounts_with_same_ip,./app/controllers/admin/users_controller.rb
deleted_posts,./app/controllers/posts_controller.rb
demons,./lib/demon/base.rb
destroy_bookmark,./app/controllers/posts_controller.rb
destroy_unused,./app/controllers/tags_controller.rb
digest_body,./lib/freedom_patches/rack_patches.rb
digest_custom_html,./app/helpers/user_notifications_helper.rb
digest_custom_text,./app/helpers/user_notifications_helper.rb
dirty?,./lib/cooked_post_processor.rb
disable_safe!,./lib/migration/safe_migrate.rb
disallow_raw_sql!,./lib/freedom_patches/active_record_attribute_methods.rb
discourse_csrf_tags,./app/helpers/application_helper.rb
discourse_stylesheet_link_tag,./app/helpers/application_helper.rb
do_all_work,./lib/scheduler/defer.rb
downsize_instructions,./app/models/optimized_image.rb
downsize_instructions_animated,./app/models/optimized_image.rb
element_content,./lib/feed_item_accessor.rb
email_already_exists_for?,./app/models/topic.rb
email_html_template,./app/helpers/email_helper.rb
email_image_url,./app/helpers/user_notifications_helper.rb
email_login_info,./app/controllers/session_controller.rb
email_topic_link,./app/helpers/email_helper.rb
embed_post_date,./app/helpers/embed_helper.rb
emoji_codes_to_img,./app/helpers/emoji_helper.rb
enable_safe!,./lib/migration/safe_migrate.rb
establish_peer_names,./lib/message_bus_diags.rb
excerpts,./app/controllers/topics_controller.rb
exclude_step,./lib/wizard.rb
exec_migration,./lib/freedom_patches/schema_migration_details.rb
exists_for?,./lib/admin_confirmation.rb
extended,./lib/site_setting_extension.rb
extract_from_apple_mail,./lib/email/receiver.rb
extract_from_exchange,./lib/email/receiver.rb
extract_from_gmail,./lib/email/receiver.rb
extract_from_mozilla,./lib/email/receiver.rb
extract_from_newton,./lib/email/receiver.rb
extract_from_outlook,./lib/email/receiver.rb
extract_from_protonmail,./lib/email/receiver.rb
extract_from_word,./lib/email/receiver.rb
extract_from_zimbra,./lib/email/receiver.rb
extract_quoted_message_ids,./script/import_scripts/smf2.rb
faq_path,./lib/configurable_urls.rb
feature_stats,./app/controllers/topics_controller.rb
find_by_detail,./app/models/post.rb
find_duplicates,./lib/i18n/duplicate_key_finder.rb
flagged_post_actions,./lib/flag_query.rb
flagged_posts,./app/controllers/posts_controller.rb
flagged_posts_report,./lib/flag_query.rb
flush!,./lib/distributed_memoizer.rb
flushdb,./lib/discourse_redis.rb
ga_universal_json,./app/helpers/application_helper.rb
gc_analyze,./script/require_profiler.rb
general,./app/controllers/admin/dashboard_controller.rb
generate_key_pair,./app/controllers/admin/themes_controller.rb
generate_url,./app/models/discourse_single_sign_on.rb
get_current_user,./lib/pretty_text/helpers.rb
get_group_ids,./app/models/invite.rb
get_html,./app/helpers/embed_helper.rb
get_post_as_user,./script/import_scripts/disqus.rb
get_reseed_options,./app/controllers/admin/site_texts_controller.rb
get_topic_info,./lib/pretty_text/helpers.rb
global_template_target,./lib/freedom_patches/raw_handlebars.rb
google_tag_manager_json,./app/helpers/application_helper.rb
grant_permission_to_user,./app/models/topic.rb
gravatar_template,./app/models/user.rb
groupable_user_fields,./plugins/poll/plugin.rb
handle_stream,./lib/i18n/locale_file_walker.rb
handle_unverified_request,./app/controllers/application_controller.rb
handlebars?,./lib/freedom_patches/raw_handlebars.rb
has_filter?,./app/models/top_menu_item.rb
has_specific_category?,./app/models/top_menu_item.rb
has_thumbnail?,./app/models/upload.rb
has_uploaded_avatar,./app/models/user.rb
hide_revision,./app/controllers/posts_controller.rb
history,./app/models/reviewable.rb
html_classes,./app/helpers/application_helper.rb
html_lang,./app/helpers/application_helper.rb
html_site_link,./app/helpers/user_notifications_helper.rb
id_for_slug,./app/controllers/topics_controller.rb
import_categories_from_thread_prefixes,./script/import_scripts/xenforo.rb
import_gallery_topics,./script/import_scripts/ipboard.rb
import_image_categories,./script/import_scripts/ipboard.rb
imports,./lib/stylesheet/importer.rb
include!,./lib/freedom_patches/ams_include_without_root.rb
incoming,./app/controllers/admin/email_controller.rb
incoming_from_bounced,./app/controllers/admin/email_controller.rb
init_tutorial_edit,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
init_tutorial_recover,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
init_tutorial_search,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
initial_load?,./lib/topic_view.rb
insert_like,./script/import_scripts/base/generic_database.rb
interesting_after,./app/models/notification.rb
invited,./app/controllers/users_controller.rb
invited_count,./app/controllers/users_controller.rb
ios_app_argument,./app/helpers/application_helper.rb
ip_info,./app/controllers/admin/users_controller.rb
is_embedded?,./lib/onebox/engine/whitelisted_generic_onebox.rb
is_flagged?,./app/models/post.rb
languages,./lib/highlight_js/highlight_js.rb
last_db_duration,./app/jobs/base.rb
last_post_url,./app/models/topic.rb
latest_feed,./app/controllers/list_controller.rb
list_bookmarks,./lib/topic_query.rb
list_group_topics,./lib/topic_query.rb
list_new,./lib/topic_query.rb
list_posted,./lib/topic_query.rb
list_private_messages,./lib/topic_query.rb
list_private_messages_archive,./lib/topic_query.rb
list_private_messages_group,./lib/topic_query.rb
list_private_messages_group_archive,./lib/topic_query.rb
list_private_messages_sent,./lib/topic_query.rb
list_private_messages_tag,./lib/topic_query.rb
list_private_messages_unread,./lib/topic_query.rb
list_read,./lib/topic_query.rb
list_unread,./lib/topic_query.rb
list_unused,./app/controllers/tags_controller.rb
log_action!,./app/models/user_action.rb
log_change_upload_secure_status,./app/services/staff_action_logger.rb
lookup_primary_user_group,./lib/pretty_text/helpers.rb
lookup_urls,./app/controllers/uploads_controller.rb
mailgun,./app/controllers/webhooks_controller.rb
mailing_list_topic,./app/helpers/email_helper.rb
mailing_list_topic_text,./app/helpers/email_helper.rb
mailjet,./app/controllers/webhooks_controller.rb
make_banner,./app/controllers/topics_controller.rb
mandrill,./app/controllers/webhooks_controller.rb
mark_read,./app/controllers/notifications_controller.rb
mass_award,./app/controllers/admin/badges_controller.rb
messages_for,./app/models/group.rb
missing_mailgun_api_key,./app/models/admin_dashboard_data.rb
moderation,./app/controllers/admin/dashboard_controller.rb
new_from_params,./app/models/user.rb
next_page_path,./lib/topic_view.rb
no_reminder?,./app/models/bookmark.rb
nokogiri_fix_blockquotes,./script/import_scripts/ipboard.rb
normal_priority_types,./app/models/notification.rb
not_close_topics,./script/import_scripts/modx.rb
not_create_permalink_file,./script/import_scripts/modx.rb
not_find_upload,./script/import_scripts/modx.rb
not_found_body,./app/controllers/exceptions_controller.rb
not_import_attachments,./script/import_scripts/modx.rb
not_import_groups,./script/import_scripts/modx.rb
not_import_private_messages,./script/import_scripts/modx.rb
not_mark_topics_as_solved,./script/import_scripts/modx.rb
not_post_process_posts,./script/import_scripts/modx.rb
notification_rows,./app/services/user_action_manager.rb
official_plugins,./lib/discourse.rb
old_clean_up,./script/import_scripts/ipboard.rb
only_security_keys_enabled?,./app/models/concerns/second_factor_manager.rb
only_totp_or_backup_codes_enabled?,./app/models/concerns/second_factor_manager.rb
order_basic_bumped,./lib/topic_query_sql.rb
order_nocategory_basic_bumped,./lib/topic_query_sql.rb
order_nocategory_with_pinned_sql,./lib/topic_query_sql.rb
order_with_pinned_sql,./lib/topic_query_sql.rb
ordered,./app/models/post_action_type.rb
output_locale,./lib/js_locale_helper.rb
page_links,./app/helpers/list_helper.rb
page_title,./lib/topic_view.rb
pause,./lib/scheduler/defer.rb
perform_agree_and_hide,./app/models/reviewable_flagged_post.rb
perform_agree_and_keep,./app/models/reviewable_flagged_post.rb
perform_agree_and_restore,./app/models/reviewable_flagged_post.rb
perform_approve_post_closed,./app/models/reviewable_queued_post.rb
perform_approve_user,./app/models/reviewable_user.rb
perform_delete_and_agree,./app/models/reviewable_flagged_post.rb
perform_delete_and_agree_replies,./app/models/reviewable_flagged_post.rb
perform_delete_and_ignore,./app/models/reviewable_flagged_post.rb
perform_delete_and_ignore_replies,./app/models/reviewable_flagged_post.rb
perform_delete_spammer,./app/models/reviewable_flagged_post.rb
perform_delete_user,./app/models/reviewable_queued_post.rb
perform_disagree,./app/models/reviewable_flagged_post.rb
perform_reject_post,./app/models/reviewable_queued_post.rb
perform_reject_user_block,./app/models/reviewable_user.rb
perform_unsubscribe,./app/controllers/email_controller.rb
plugin_themes,./lib/discourse.rb
post_action_rows,./app/services/user_action_manager.rb
post_rows,./app/services/user_action_manager.rb
postmark,./app/controllers/webhooks_controller.rb
precompile_handlebars,./lib/freedom_patches/raw_handlebars.rb
preload_script,./app/helpers/application_helper.rb
preloaded_json,./app/helpers/application_helper.rb
prettify_number,./lib/twitter_api.rb
prettify_tweet,./lib/twitter_api.rb
prev_page_path,./lib/topic_view.rb
preview_digest,./app/controllers/admin/email_controller.rb
print_banner,./config/initializers/100-sidekiq.rb
print_spinner,./script/import_scripts/base.rb
privacy_path,./lib/configurable_urls.rb
private_messages_search,./lib/search.rb
private_messages_stats,./app/models/user_action.rb
process_and_upload_inline_images,./script/import_scripts/discuz_x.rb
process_category,./script/bulk_import/base.rb
process_category_group,./script/bulk_import/discourse_merger.rb
process_category_tag,./script/bulk_import/discourse_merger.rb
process_category_tag_stat,./script/bulk_import/discourse_merger.rb
process_email_change_request,./script/bulk_import/discourse_merger.rb
process_github_user_info,./script/bulk_import/discourse_merger.rb
process_group,./script/bulk_import/base.rb
process_group_archived_message,./script/bulk_import/discourse_merger.rb
process_group_history,./script/bulk_import/discourse_merger.rb
process_oauth2_user_info,./script/bulk_import/discourse_merger.rb
process_post_reply,./script/bulk_import/discourse_merger.rb
process_post_upload,./script/bulk_import/discourse_merger.rb
process_quoted_post,./script/bulk_import/discourse_merger.rb
process_single_sign_on_record,./script/bulk_import/discourse_merger.rb
process_tag_group,./script/bulk_import/discourse_merger.rb
process_tag_user,./script/bulk_import/discourse_merger.rb
process_topic_allowed_user,./script/bulk_import/base.rb
process_topic_link,./script/bulk_import/discourse_merger.rb
process_user,./script/bulk_import/base.rb
process_user_action,./script/bulk_import/discourse_merger.rb
process_user_associated_account,./script/bulk_import/discourse_merger.rb
process_user_avatar,./script/bulk_import/discourse_merger.rb
process_user_badge,./script/bulk_import/discourse_merger.rb
process_user_email,./script/bulk_import/base.rb
process_user_history,./script/bulk_import/discourse_merger.rb
process_user_profile,./script/bulk_import/base.rb
process_user_stat,./script/bulk_import/base.rb
process_user_warning,./script/bulk_import/discourse_merger.rb
profile_hidden,./app/controllers/users_controller.rb
profiling_enabled?,./script/require_profiler.rb
purge,./lib/inline_oneboxer.rb
query_parent_category,./app/models/category.rb
raw_svg,./lib/svg_sprite/svg_sprite.rb
raw_tweet_for,./lib/twitter_api.rb
readable_name,./app/models/user.rb
recent_posts,./lib/topic_view.rb
redeliver_event,./app/controllers/admin/web_hooks_controller.rb
redirected?,./lib/final_destination.rb
refresh_gravatar,./app/controllers/user_avatars_controller.rb
register_category_custom_field_type,./lib/plugin/instance.rb
register_color_scheme,./lib/plugin/instance.rb
register_custom_html,./lib/plugin/instance.rb
register_detailed_request_logger,./lib/middleware/request_tracker.rb
register_editable_group_custom_field,./lib/plugin/instance.rb
register_editable_user_custom_field,./lib/plugin/instance.rb
register_emoji,./lib/plugin/instance.rb
register_group_custom_field_type,./lib/plugin/instance.rb
register_ip_skipper,./lib/middleware/request_tracker.rb
register_javascript,./lib/plugin/instance.rb
register_operation,./lib/topics_bulk_action.rb
register_plugin_post_custom_field,./lib/flag_query.rb
register_reviewable_type,./lib/plugin/instance.rb
register_seedfu_fixtures,./lib/plugin/instance.rb
register_topic_custom_field_type,./lib/plugin/instance.rb
register_user_custom_field_type,./lib/plugin/instance.rb
regular_order,./app/models/post.rb
reloadable_plugins,./lib/js_locale_helper.rb
remove_act,./app/models/post_action.rb
remove_banner,./app/controllers/topics_controller.rb
remove_bookmarks,./app/controllers/topics_controller.rb
remove_custom_filter,./lib/topic_query.rb
remove_filter,./app/models/report.rb
remove_member,./app/controllers/groups_controller.rb
remove_owner,./app/controllers/admin/groups_controller.rb
remove_review_groups,./app/models/group.rb
render_google_tag_manager_body_code,./app/helpers/common_helper.rb
render_google_tag_manager_head_code,./app/helpers/common_helper.rb
render_google_universal_analytics_code,./app/helpers/common_helper.rb
render_sitelinks_search_tag,./app/helpers/application_helper.rb
render_topic_title,./app/helpers/topics_helper.rb
replace_flags,./lib/plugin/instance.rb
replace_plugin_html,./app/helpers/application_helper.rb
reply_to_wiki,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
report_top_referred_topics,./app/models/incoming_links_report.rb
report_top_referrers,./app/models/incoming_links_report.rb
report_top_traffic_sources,./app/models/incoming_links_report.rb
reset_last_cleanup!,./app/jobs/scheduled/clean_up_uploads.rb
reset_redis_config!,./app/models/global_setting.rb
reset_s3_cache!,./app/models/global_setting.rb
resize_instructions,./app/models/optimized_image.rb
resume,./lib/scheduler/defer.rb
reverse_order,./app/models/post.rb
revoke_account,./app/controllers/users_controller.rb
revoke_key,./app/controllers/admin/api_controller.rb
rolledback!,./lib/mini_sql_multisite_connection.rb
run_immediately?,./app/jobs/base.rb
run_on_change,./lib/autospec/reload_css.rb
running_in_rack?,./lib/discourse.rb
s3_inventory_path,./lib/s3_helper.rb
s3_options_from_site_settings,./lib/file_store/to_s3_migration.rb
save_badge_groupings,./app/controllers/admin/badges_controller.rb
saved_change_to_value?,./lib/site_settings/local_process_provider.rb
schedule_auto_bump_job,./app/models/topic_timer.rb
schedule_auto_close_job,./app/models/topic_timer.rb
schedule_auto_delete_job,./app/models/topic_timer.rb
schedule_auto_delete_replies_job,./app/models/topic_timer.rb
schedule_auto_open_job,./app/models/topic_timer.rb
schedule_auto_publish_to_category_job,./app/models/topic_timer.rb
schedule_auto_reminder_job,./app/models/topic_timer.rb
search_users,./app/controllers/users_controller.rb
security,./app/controllers/admin/dashboard_controller.rb
seen_hosts,./lib/message_bus_diags.rb
send_digest,./app/controllers/admin/email_controller.rb
send_reminder_notification,./lib/bookmark_manager.rb
sendgrid,./app/controllers/webhooks_controller.rb
server_plugin_outlet,./app/helpers/application_helper.rb
set_cookie,./lib/discourse_cookie_store.rb
set_regardless_of_locale,./lib/site_settings/defaults_provider.rb
setup!,./lib/active_record/connection_adapters/postgresql_fallback_adapter.rb
show_card,./app/controllers/users_controller.rb
show_image_with_url,./app/helpers/user_notifications_helper.rb
show_name_on_post,./app/helpers/user_notifications_helper.rb
show_revision,./app/controllers/posts_controller.rb
show_username_on_post,./app/helpers/user_notifications_helper.rb
site_setting,./app/models/site.rb
small_avatar_url,./app/models/user.rb
sort_order_for_post_number,./lib/topic_view.rb
sorted_periods,./app/models/top_topic.rb
sources,./lib/freedom_patches/raw_handlebars.rb
spam_silence_score,./app/serializers/reviewable_explanation_serializer.rb
sparkpost,./app/controllers/webhooks_controller.rb
specific_category,./app/models/top_menu_item.rb
staff_info,./app/controllers/users_controller.rb
stopped?,./lib/scheduler/defer.rb
stylesheet_fullpath_no_digest,./lib/stylesheet/manager.rb
supports_advisory_locks?,./lib/freedom_patches/postgresql_adapter.rb
supports_cache_versioning?,./lib/cache.rb
sync_sso,./app/controllers/admin/users_controller.rb
test_alias_creation,./lib/tasks/emoji.rake
test_cell_index_patch,./lib/tasks/emoji.rake
test_code_to_emoji,./lib/tasks/emoji.rake
test_codepoints_to_code,./lib/tasks/emoji.rake
test_codepoints_to_code_with_scale,./lib/tasks/emoji.rake
test_db_json_creation,./lib/tasks/emoji.rake
test_default_set,./lib/tasks/emoji.rake
test_groups_js_es6_creation,./lib/tasks/emoji.rake
test_scales,./lib/tasks/emoji.rake
test_thread,./script/thread_detective.rb
theme_js_lookup,./app/helpers/application_helper.rb
theme_lookup,./app/helpers/application_helper.rb
theme_translations_lookup,./app/helpers/application_helper.rb
to_rfc2822,./lib/freedom_patches/rack_patches.rb
to_utf8,./lib/encodings.rb
top_feed,./app/controllers/list_controller.rb
top_viewed,./app/models/topic.rb
topic_featured_link_domain,./app/helpers/application_helper.rb
topic_rows,./app/services/user_action_manager.rb
total_other_accounts_with_same_ip,./app/controllers/admin/users_controller.rb
total_unread_notifications,./app/models/user.rb
translate_emoji,./lib/plugin/instance.rb
trigger_transactional_callbacks?,./lib/mini_sql_multisite_connection.rb
trust_level_badge_ids,./app/models/badge.rb
tsort_each_child,./script/import_scripts/smf2.rb
tsort_each_node,./script/import_scripts/smf2.rb
twitter_credentials_missing?,./lib/twitter_api.rb
undo_revoke_key,./app/controllers/admin/api_controller.rb
unofficial_plugins,./lib/discourse.rb
unregister_detailed_request_logger,./lib/middleware/request_tracker.rb
unregister_ip_skipper,./lib/middleware/request_tracker.rb
unsubscribed,./app/controllers/email_controller.rb
unwatch_categories!,./app/models/topic_user.rb
update_likes_count_for,./app/models/top_topic.rb
update_meta_data,./app/models/topic.rb
update_op_likes_count_for,./app/models/top_topic.rb
update_posts_count_for,./app/models/top_topic.rb
update_security_key,./app/controllers/users_controller.rb
update_single_setting,./app/controllers/admin/themes_controller.rb
update_slug,./app/controllers/categories_controller.rb
update_tags,./app/controllers/topics_controller.rb
update_views_count_for,./app/models/top_topic.rb
upload_asset,./app/controllers/admin/themes_controller.rb
upsert_custom_fields,./app/models/concerns/has_custom_fields.rb
url_for_email,./app/helpers/user_notifications_helper.rb
user_for_key,./app/models/unsubscribe_key.rb
user_timeline,./lib/twitter_api.rb
validate_backup_location,./lib/site_settings/validations.rb
validate_default_categories_muted,./lib/site_settings/validations.rb
validate_default_categories_tracking,./lib/site_settings/validations.rb
validate_default_categories_watching,./lib/site_settings/validations.rb
validate_default_categories_watching_first_post,./lib/site_settings/validations.rb
validate_default_tags_muted,./lib/site_settings/validations.rb
validate_default_tags_tracking,./lib/site_settings/validations.rb
validate_default_tags_watching,./lib/site_settings/validations.rb
validate_default_tags_watching_first_post,./lib/site_settings/validations.rb
validate_enable_local_logins,./lib/site_settings/validations.rb
validate_enable_s3_inventory,./lib/site_settings/validations.rb
validate_enable_s3_uploads,./lib/site_settings/validations.rb
validate_enforce_second_factor,./lib/site_settings/validations.rb
validate_s3_backup_bucket,./lib/site_settings/validations.rb
validate_s3_upload_bucket,./lib/site_settings/validations.rb
validate_secure_media,./lib/site_settings/validations.rb
value_changed?,./lib/site_settings/local_process_provider.rb
welcome_topic,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
whitelist_public_user_custom_field,./lib/plugin/instance.rb
whitelist_staff_user_custom_field,./lib/plugin/instance.rb
with_format,./app/helpers/application_helper.rb
can_admin_tag_groups?
can_banner_topic?
can_bulk_invite_to_forum?
can_change_post_owner?
can_change_post_timestamps?
can_change_post_type?
can_change_primary_group?
can_change_trust_level?
can_claim_reviewable_topic?
can_create_bookmark?
can_create_category?
can_delete_bookmark?
can_delete_category?
can_delete_post_action?
can_delete_reviewable_queued_post?
can_disable_second_factor?
can_edit_post?
can_edit_user?
can_export_entity?
can_get_access_to_topic?
can_hide_post_revision?
can_invite_group_to_private_message?
can_lock_post?
can_pick_avatar?
can_publish_topic?
can_rebake?
can_rescind_all_invites?
can_resend_all_invites?
can_reset_bounce_score?
can_see_flagged_posts?
can_see_group?
can_see_groups_members?
can_see_post_revision?
can_see_staff_info?
can_show_post_revision?
can_silence_user?
can_unhide?
can_unsilence_user?
can_update_bumped_at?
can_view_raw_email?
Method Name,Defined In
act,./app/models/post_action.rb
actual_name,./lib/freedom_patches/raw_handlebars.rb
add_admin_route,./lib/plugin/instance.rb
add_body_class,./lib/plugin/instance.rb
add_class_method,./lib/plugin/instance.rb
add_custom_reviewable_filter,./lib/plugin/instance.rb
add_default,./app/models/global_setting.rb
add_detail,./app/models/post.rb
add_members,./app/controllers/groups_controller.rb
add_message,./script/import_scripts/smf2.rb
add_owners,./app/controllers/admin/groups_controller.rb
add_permitted_post_create_param,./lib/plugin/instance.rb
add_preloaded_group_custom_field,./lib/plugin/instance.rb
add_preloaded_topic_list_custom_field,./lib/plugin/instance.rb
add_prev_data,./app/models/report.rb
add_to_size_cache,./lib/cooked_post_processor.rb
advanced_test,./app/controllers/admin/email_controller.rb
age_in_minutes,./app/models/topic.rb
all_reply_ids,./app/controllers/posts_controller.rb
all_topics_search,./lib/search.rb
application_logo_url,./app/helpers/application_helper.rb
apply_transform!,./lib/content_buffer.rb
approve_bulk,./app/controllers/admin/users_controller.rb
available_scopes,./app/models/user_api_key.rb
award,./app/controllers/admin/badges_controller.rb
aws,./app/controllers/webhooks_controller.rb
before_committed!,./lib/mini_sql_multisite_connection.rb
best_post,./app/models/topic.rb
bio_summary,./app/models/user_profile.rb
body_classes,./app/helpers/application_helper.rb
builder,./app/controllers/robots_txt_controller.rb
builtin,./app/models/group.rb
bulk_perform,./app/controllers/admin/groups_controller.rb
cache_avatar,./lib/file_store/s3_store.rb
callback_url,./lib/auth/discord_authenticator.rb
can_admin_tag_groups?,./lib/guardian/tag_guardian.rb
can_banner_topic?,./lib/guardian/topic_guardian.rb
can_bulk_invite_to_forum?,./lib/guardian.rb
can_change_post_owner?,./lib/guardian/post_guardian.rb
can_change_post_timestamps?,./lib/guardian/post_guardian.rb
can_change_post_type?,./lib/guardian/post_guardian.rb
can_change_primary_group?,./lib/guardian.rb
can_change_trust_level?,./lib/guardian.rb
can_claim_reviewable_topic?,./lib/guardian/user_guardian.rb
can_create_bookmark?,./lib/guardian/bookmark_guardian.rb
can_create_category?,./lib/guardian/category_guardian.rb
can_delete_bookmark?,./lib/guardian/bookmark_guardian.rb
can_delete_category?,./lib/guardian/category_guardian.rb
can_delete_post_action?,./lib/guardian/post_guardian.rb
can_delete_reviewable_queued_post?,./lib/guardian.rb
can_disable_second_factor?,./lib/guardian/user_guardian.rb
can_edit_post?,./lib/guardian/post_guardian.rb
can_edit_user?,./lib/guardian/user_guardian.rb
can_export_entity?,./lib/guardian.rb
can_get_access_to_topic?,./lib/guardian/topic_guardian.rb
can_hide_post_revision?,./lib/guardian/post_revision_guardian.rb
can_invite_group_to_private_message?,./lib/guardian.rb
can_lock_post?,./lib/guardian/post_guardian.rb
can_pick_avatar?,./lib/guardian/user_guardian.rb
can_publish_topic?,./lib/guardian/topic_guardian.rb
can_rebake?,./lib/guardian/post_guardian.rb
can_rescind_all_invites?,./lib/guardian.rb
can_resend_all_invites?,./lib/guardian.rb
can_reset_bounce_score?,./lib/guardian/user_guardian.rb
can_see_flagged_posts?,./lib/guardian/post_guardian.rb
can_see_group?,./lib/guardian.rb
can_see_groups_members?,./lib/guardian.rb
can_see_post_revision?,./lib/guardian/post_revision_guardian.rb
can_see_staff_info?,./lib/guardian/user_guardian.rb
can_show_post_revision?,./lib/guardian/post_revision_guardian.rb
can_sign_up?,./app/helpers/application_helper.rb
can_silence_user?,./lib/guardian/user_guardian.rb
can_unhide?,./lib/guardian/post_guardian.rb
can_unsilence_user?,./lib/guardian/user_guardian.rb
can_update_bumped_at?,./lib/guardian/topic_guardian.rb
can_view_raw_email?,./lib/guardian/post_guardian.rb
cancel_auto_bump_job,./app/models/topic_timer.rb
cancel_auto_delete_job,./app/models/topic_timer.rb
cancel_auto_delete_replies_job,./app/models/topic_timer.rb
cancel_auto_publish_to_category_job,./app/models/topic_timer.rb
cancel_auto_reminder_job,./app/models/topic_timer.rb
cancel_preload,./app/models/topic_list.rb
canonical_link_tag,./lib/canonical_url.rb
cap_unread!,./app/models/topic_user.rb
cards,./app/controllers/users_controller.rb
categories_breadcrumb,./app/helpers/topics_helper.rb
category_badge,./app/helpers/application_helper.rb
category_hashtag_lookup,./lib/pretty_text/helpers.rb
category_tag_hashtag_lookup,./lib/pretty_text/helpers.rb
cdata,./script/import_scripts/support/convert_mysql_xml_to_mysql.rb
cdata_block,./script/import_scripts/disqus.rb
check_avatar_notification,./lib/composer_messages_finder.rb
check_dominating_topic,./lib/composer_messages_finder.rb
check_education_message,./lib/composer_messages_finder.rb
check_get_a_room,./lib/composer_messages_finder.rb
check_new_user_many_replies,./lib/composer_messages_finder.rb
check_reviving_old_topic,./lib/composer_messages_finder.rb
check_sequential_replies,./lib/composer_messages_finder.rb
check_slug,./app/controllers/published_pages_controller.rb
classified_name,./lib/generators/plugin/plugin_generator.rb
clean_up_tutorial_search,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
clear_all!,./lib/rate_limiter.rb
clear_all,./app/controllers/admin/watched_words_controller.rb
clear_all_global!,./lib/rate_limiter.rb
clear_auto_bump_cache!,./app/models/category.rb
clear_custom_filters!,./app/models/reviewable.rb
clear_debounce_cache!,./app/models/search_log.rb
clear_https_cache!,./lib/final_destination.rb
clear_key,./app/jobs/scheduled/pending_reviewables_reminder.rb
clear_problem_message,./app/models/admin_dashboard_data.rb
clear_queue!,./app/services/badge_granter.rb
click,./app/controllers/search_controller.rb
client_overrides_exist?,./app/controllers/extra_locales_controller.rb
client_side_setup_data,./app/helpers/application_helper.rb
committed!,./lib/mini_sql_multisite_connection.rb
compile_ember_handlebars,./lib/freedom_patches/better_handlebars_errors.rb
compile_handlebars,./lib/freedom_patches/raw_handlebars.rb
confirm_request,./app/controllers/users/omniauth_callbacks_controller.rb
connect_info,./app/controllers/users/associate_accounts_controller.rb
contains_gaps?,./lib/topic_view.rb
correct_top_margin,./app/helpers/user_notifications_helper.rb
crawlable_meta_data,./app/helpers/application_helper.rb
create_gitignore_entry,./lib/generators/plugin/plugin_generator.rb
create_plugin,./lib/generators/plugin/plugin_generator.rb
create_upload_url,./app/controllers/admin/backups_controller.rb
crop_instructions,./app/models/optimized_image.rb
crop_instructions_animated,./app/models/optimized_image.rb
custom_avatar_column,./lib/plugin/instance.rb
custom_field_preloaded?,./app/models/concerns/has_custom_fields.rb
cycles,./script/import_scripts/smf2.rb
db_migrate_path,./lib/generators/rails/post_migration_generator.rb
default_locale?,./lib/site_setting_extension.rb
delayed_perform,./app/jobs/base.rb
delete_other_accounts_with_same_ip,./app/controllers/admin/users_controller.rb
deleted_posts,./app/controllers/posts_controller.rb
demons,./lib/demon/base.rb
destroy_bookmark,./app/controllers/posts_controller.rb
destroy_unused,./app/controllers/tags_controller.rb
digest_body,./lib/freedom_patches/rack_patches.rb
digest_custom_html,./app/helpers/user_notifications_helper.rb
digest_custom_text,./app/helpers/user_notifications_helper.rb
dirty?,./lib/cooked_post_processor.rb
disable_safe!,./lib/migration/safe_migrate.rb
disallow_raw_sql!,./lib/freedom_patches/active_record_attribute_methods.rb
discourse_csrf_tags,./app/helpers/application_helper.rb
discourse_stylesheet_link_tag,./app/helpers/application_helper.rb
do_all_work,./lib/scheduler/defer.rb
downsize_instructions,./app/models/optimized_image.rb
downsize_instructions_animated,./app/models/optimized_image.rb
element_content,./lib/feed_item_accessor.rb
email_already_exists_for?,./app/models/topic.rb
email_html_template,./app/helpers/email_helper.rb
email_image_url,./app/helpers/user_notifications_helper.rb
email_login_info,./app/controllers/session_controller.rb
email_topic_link,./app/helpers/email_helper.rb
embed_post_date,./app/helpers/embed_helper.rb
emoji_codes_to_img,./app/helpers/emoji_helper.rb
enable_safe!,./lib/migration/safe_migrate.rb
establish_peer_names,./lib/message_bus_diags.rb
excerpts,./app/controllers/topics_controller.rb
exclude_step,./lib/wizard.rb
exec_migration,./lib/freedom_patches/schema_migration_details.rb
exists_for?,./lib/admin_confirmation.rb
extended,./lib/site_setting_extension.rb
extract_from_apple_mail,./lib/email/receiver.rb
extract_from_exchange,./lib/email/receiver.rb
extract_from_gmail,./lib/email/receiver.rb
extract_from_mozilla,./lib/email/receiver.rb
extract_from_newton,./lib/email/receiver.rb
extract_from_outlook,./lib/email/receiver.rb
extract_from_protonmail,./lib/email/receiver.rb
extract_from_word,./lib/email/receiver.rb
extract_from_zimbra,./lib/email/receiver.rb
extract_quoted_message_ids,./script/import_scripts/smf2.rb
faq_path,./lib/configurable_urls.rb
feature_stats,./app/controllers/topics_controller.rb
find_by_detail,./app/models/post.rb
find_duplicates,./lib/i18n/duplicate_key_finder.rb
flagged_post_actions,./lib/flag_query.rb
flagged_posts,./app/controllers/posts_controller.rb
flagged_posts_report,./lib/flag_query.rb
flush!,./lib/distributed_memoizer.rb
flushdb,./lib/discourse_redis.rb
ga_universal_json,./app/helpers/application_helper.rb
gc_analyze,./script/require_profiler.rb
general,./app/controllers/admin/dashboard_controller.rb
generate_key_pair,./app/controllers/admin/themes_controller.rb
generate_url,./app/models/discourse_single_sign_on.rb
get_current_user,./lib/pretty_text/helpers.rb
get_group_ids,./app/models/invite.rb
get_html,./app/helpers/embed_helper.rb
get_post_as_user,./script/import_scripts/disqus.rb
get_reseed_options,./app/controllers/admin/site_texts_controller.rb
get_topic_info,./lib/pretty_text/helpers.rb
global_template_target,./lib/freedom_patches/raw_handlebars.rb
google_tag_manager_json,./app/helpers/application_helper.rb
grant_permission_to_user,./app/models/topic.rb
gravatar_template,./app/models/user.rb
groupable_user_fields,./plugins/poll/plugin.rb
handle_stream,./lib/i18n/locale_file_walker.rb
handle_unverified_request,./app/controllers/application_controller.rb
handlebars?,./lib/freedom_patches/raw_handlebars.rb
has_filter?,./app/models/top_menu_item.rb
has_specific_category?,./app/models/top_menu_item.rb
has_thumbnail?,./app/models/upload.rb
has_uploaded_avatar,./app/models/user.rb
hide_revision,./app/controllers/posts_controller.rb
history,./app/models/reviewable.rb
html_classes,./app/helpers/application_helper.rb
html_lang,./app/helpers/application_helper.rb
html_site_link,./app/helpers/user_notifications_helper.rb
id_for_slug,./app/controllers/topics_controller.rb
import_categories_from_thread_prefixes,./script/import_scripts/xenforo.rb
import_gallery_topics,./script/import_scripts/ipboard.rb
import_image_categories,./script/import_scripts/ipboard.rb
imports,./lib/stylesheet/importer.rb
include!,./lib/freedom_patches/ams_include_without_root.rb
incoming,./app/controllers/admin/email_controller.rb
incoming_from_bounced,./app/controllers/admin/email_controller.rb
init_tutorial_edit,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
init_tutorial_recover,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
init_tutorial_search,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
initial_load?,./lib/topic_view.rb
insert_like,./script/import_scripts/base/generic_database.rb
interesting_after,./app/models/notification.rb
invited,./app/controllers/users_controller.rb
invited_count,./app/controllers/users_controller.rb
ios_app_argument,./app/helpers/application_helper.rb
ip_info,./app/controllers/admin/users_controller.rb
is_embedded?,./lib/onebox/engine/whitelisted_generic_onebox.rb
is_flagged?,./app/models/post.rb
languages,./lib/highlight_js/highlight_js.rb
last_db_duration,./app/jobs/base.rb
last_post_url,./app/models/topic.rb
latest_feed,./app/controllers/list_controller.rb
list_bookmarks,./lib/topic_query.rb
list_group_topics,./lib/topic_query.rb
list_new,./lib/topic_query.rb
list_posted,./lib/topic_query.rb
list_private_messages,./lib/topic_query.rb
list_private_messages_archive,./lib/topic_query.rb
list_private_messages_group,./lib/topic_query.rb
list_private_messages_group_archive,./lib/topic_query.rb
list_private_messages_sent,./lib/topic_query.rb
list_private_messages_tag,./lib/topic_query.rb
list_private_messages_unread,./lib/topic_query.rb
list_read,./lib/topic_query.rb
list_unread,./lib/topic_query.rb
list_unused,./app/controllers/tags_controller.rb
log_action!,./app/models/user_action.rb
log_change_upload_secure_status,./app/services/staff_action_logger.rb
lookup_primary_user_group,./lib/pretty_text/helpers.rb
lookup_urls,./app/controllers/uploads_controller.rb
mailgun,./app/controllers/webhooks_controller.rb
mailing_list_topic,./app/helpers/email_helper.rb
mailing_list_topic_text,./app/helpers/email_helper.rb
mailjet,./app/controllers/webhooks_controller.rb
make_banner,./app/controllers/topics_controller.rb
mandrill,./app/controllers/webhooks_controller.rb
mark_read,./app/controllers/notifications_controller.rb
mass_award,./app/controllers/admin/badges_controller.rb
messages_for,./app/models/group.rb
missing_mailgun_api_key,./app/models/admin_dashboard_data.rb
moderation,./app/controllers/admin/dashboard_controller.rb
new_from_params,./app/models/user.rb
next_page_path,./lib/topic_view.rb
no_reminder?,./app/models/bookmark.rb
nokogiri_fix_blockquotes,./script/import_scripts/ipboard.rb
normal_priority_types,./app/models/notification.rb
not_close_topics,./script/import_scripts/modx.rb
not_create_permalink_file,./script/import_scripts/modx.rb
not_find_upload,./script/import_scripts/modx.rb
not_found_body,./app/controllers/exceptions_controller.rb
not_import_attachments,./script/import_scripts/modx.rb
not_import_groups,./script/import_scripts/modx.rb
not_import_private_messages,./script/import_scripts/modx.rb
not_mark_topics_as_solved,./script/import_scripts/modx.rb
not_post_process_posts,./script/import_scripts/modx.rb
notification_rows,./app/services/user_action_manager.rb
official_plugins,./lib/discourse.rb
old_clean_up,./script/import_scripts/ipboard.rb
only_security_keys_enabled?,./app/models/concerns/second_factor_manager.rb
only_totp_or_backup_codes_enabled?,./app/models/concerns/second_factor_manager.rb
order_basic_bumped,./lib/topic_query_sql.rb
order_nocategory_basic_bumped,./lib/topic_query_sql.rb
order_nocategory_with_pinned_sql,./lib/topic_query_sql.rb
order_with_pinned_sql,./lib/topic_query_sql.rb
ordered,./app/models/post_action_type.rb
output_locale,./lib/js_locale_helper.rb
page_links,./app/helpers/list_helper.rb
page_title,./lib/topic_view.rb
pause,./lib/scheduler/defer.rb
perform_agree_and_hide,./app/models/reviewable_flagged_post.rb
perform_agree_and_keep,./app/models/reviewable_flagged_post.rb
perform_agree_and_restore,./app/models/reviewable_flagged_post.rb
perform_approve_post_closed,./app/models/reviewable_queued_post.rb
perform_approve_user,./app/models/reviewable_user.rb
perform_delete_and_agree,./app/models/reviewable_flagged_post.rb
perform_delete_and_agree_replies,./app/models/reviewable_flagged_post.rb
perform_delete_and_ignore,./app/models/reviewable_flagged_post.rb
perform_delete_and_ignore_replies,./app/models/reviewable_flagged_post.rb
perform_delete_spammer,./app/models/reviewable_flagged_post.rb
perform_delete_user,./app/models/reviewable_queued_post.rb
perform_disagree,./app/models/reviewable_flagged_post.rb
perform_reject_post,./app/models/reviewable_queued_post.rb
perform_reject_user_block,./app/models/reviewable_user.rb
perform_unsubscribe,./app/controllers/email_controller.rb
plugin_themes,./lib/discourse.rb
post_action_rows,./app/services/user_action_manager.rb
post_rows,./app/services/user_action_manager.rb
postmark,./app/controllers/webhooks_controller.rb
precompile_handlebars,./lib/freedom_patches/raw_handlebars.rb
preload_script,./app/helpers/application_helper.rb
preloaded_json,./app/helpers/application_helper.rb
prettify_number,./lib/twitter_api.rb
prettify_tweet,./lib/twitter_api.rb
prev_page_path,./lib/topic_view.rb
preview_digest,./app/controllers/admin/email_controller.rb
print_banner,./config/initializers/100-sidekiq.rb
print_spinner,./script/import_scripts/base.rb
privacy_path,./lib/configurable_urls.rb
private_messages_search,./lib/search.rb
private_messages_stats,./app/models/user_action.rb
process_and_upload_inline_images,./script/import_scripts/discuz_x.rb
process_category,./script/bulk_import/base.rb
process_category_group,./script/bulk_import/discourse_merger.rb
process_category_tag,./script/bulk_import/discourse_merger.rb
process_category_tag_stat,./script/bulk_import/discourse_merger.rb
process_email_change_request,./script/bulk_import/discourse_merger.rb
process_github_user_info,./script/bulk_import/discourse_merger.rb
process_group,./script/bulk_import/base.rb
process_group_archived_message,./script/bulk_import/discourse_merger.rb
process_group_history,./script/bulk_import/discourse_merger.rb
process_oauth2_user_info,./script/bulk_import/discourse_merger.rb
process_post_reply,./script/bulk_import/discourse_merger.rb
process_post_upload,./script/bulk_import/discourse_merger.rb
process_quoted_post,./script/bulk_import/discourse_merger.rb
process_single_sign_on_record,./script/bulk_import/discourse_merger.rb
process_tag_group,./script/bulk_import/discourse_merger.rb
process_tag_user,./script/bulk_import/discourse_merger.rb
process_topic_allowed_user,./script/bulk_import/base.rb
process_topic_link,./script/bulk_import/discourse_merger.rb
process_user,./script/bulk_import/base.rb
process_user_action,./script/bulk_import/discourse_merger.rb
process_user_associated_account,./script/bulk_import/discourse_merger.rb
process_user_avatar,./script/bulk_import/discourse_merger.rb
process_user_badge,./script/bulk_import/discourse_merger.rb
process_user_email,./script/bulk_import/base.rb
process_user_history,./script/bulk_import/discourse_merger.rb
process_user_profile,./script/bulk_import/base.rb
process_user_stat,./script/bulk_import/base.rb
process_user_warning,./script/bulk_import/discourse_merger.rb
profile_hidden,./app/controllers/users_controller.rb
profiling_enabled?,./script/require_profiler.rb
purge,./lib/inline_oneboxer.rb
query_parent_category,./app/models/category.rb
raw_svg,./lib/svg_sprite/svg_sprite.rb
raw_tweet_for,./lib/twitter_api.rb
readable_name,./app/models/user.rb
recent_posts,./lib/topic_view.rb
redeliver_event,./app/controllers/admin/web_hooks_controller.rb
redirected?,./lib/final_destination.rb
refresh_gravatar,./app/controllers/user_avatars_controller.rb
register_category_custom_field_type,./lib/plugin/instance.rb
register_color_scheme,./lib/plugin/instance.rb
register_custom_html,./lib/plugin/instance.rb
register_detailed_request_logger,./lib/middleware/request_tracker.rb
register_editable_group_custom_field,./lib/plugin/instance.rb
register_editable_user_custom_field,./lib/plugin/instance.rb
register_emoji,./lib/plugin/instance.rb
register_group_custom_field_type,./lib/plugin/instance.rb
register_ip_skipper,./lib/middleware/request_tracker.rb
register_javascript,./lib/plugin/instance.rb
register_operation,./lib/topics_bulk_action.rb
register_plugin_post_custom_field,./lib/flag_query.rb
register_reviewable_type,./lib/plugin/instance.rb
register_seedfu_fixtures,./lib/plugin/instance.rb
register_topic_custom_field_type,./lib/plugin/instance.rb
register_user_custom_field_type,./lib/plugin/instance.rb
regular_order,./app/models/post.rb
reloadable_plugins,./lib/js_locale_helper.rb
remove_act,./app/models/post_action.rb
remove_banner,./app/controllers/topics_controller.rb
remove_bookmarks,./app/controllers/topics_controller.rb
remove_custom_filter,./lib/topic_query.rb
remove_filter,./app/models/report.rb
remove_member,./app/controllers/groups_controller.rb
remove_owner,./app/controllers/admin/groups_controller.rb
remove_review_groups,./app/models/group.rb
render_google_tag_manager_body_code,./app/helpers/common_helper.rb
render_google_tag_manager_head_code,./app/helpers/common_helper.rb
render_google_universal_analytics_code,./app/helpers/common_helper.rb
render_sitelinks_search_tag,./app/helpers/application_helper.rb
render_topic_title,./app/helpers/topics_helper.rb
replace_flags,./lib/plugin/instance.rb
replace_plugin_html,./app/helpers/application_helper.rb
reply_to_wiki,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
report_top_referred_topics,./app/models/incoming_links_report.rb
report_top_referrers,./app/models/incoming_links_report.rb
report_top_traffic_sources,./app/models/incoming_links_report.rb
reset_last_cleanup!,./app/jobs/scheduled/clean_up_uploads.rb
reset_redis_config!,./app/models/global_setting.rb
reset_s3_cache!,./app/models/global_setting.rb
resize_instructions,./app/models/optimized_image.rb
resume,./lib/scheduler/defer.rb
reverse_order,./app/models/post.rb
revoke_account,./app/controllers/users_controller.rb
revoke_key,./app/controllers/admin/api_controller.rb
rolledback!,./lib/mini_sql_multisite_connection.rb
run_immediately?,./app/jobs/base.rb
run_on_change,./lib/autospec/reload_css.rb
running_in_rack?,./lib/discourse.rb
s3_inventory_path,./lib/s3_helper.rb
s3_options_from_site_settings,./lib/file_store/to_s3_migration.rb
save_badge_groupings,./app/controllers/admin/badges_controller.rb
saved_change_to_value?,./lib/site_settings/local_process_provider.rb
schedule_auto_bump_job,./app/models/topic_timer.rb
schedule_auto_close_job,./app/models/topic_timer.rb
schedule_auto_delete_job,./app/models/topic_timer.rb
schedule_auto_delete_replies_job,./app/models/topic_timer.rb
schedule_auto_open_job,./app/models/topic_timer.rb
schedule_auto_publish_to_category_job,./app/models/topic_timer.rb
schedule_auto_reminder_job,./app/models/topic_timer.rb
search_users,./app/controllers/users_controller.rb
security,./app/controllers/admin/dashboard_controller.rb
seen_hosts,./lib/message_bus_diags.rb
send_digest,./app/controllers/admin/email_controller.rb
send_reminder_notification,./lib/bookmark_manager.rb
sendgrid,./app/controllers/webhooks_controller.rb
server_plugin_outlet,./app/helpers/application_helper.rb
set_cookie,./lib/discourse_cookie_store.rb
set_regardless_of_locale,./lib/site_settings/defaults_provider.rb
setup!,./lib/active_record/connection_adapters/postgresql_fallback_adapter.rb
show_card,./app/controllers/users_controller.rb
show_image_with_url,./app/helpers/user_notifications_helper.rb
show_name_on_post,./app/helpers/user_notifications_helper.rb
show_revision,./app/controllers/posts_controller.rb
show_username_on_post,./app/helpers/user_notifications_helper.rb
site_setting,./app/models/site.rb
small_avatar_url,./app/models/user.rb
sort_order_for_post_number,./lib/topic_view.rb
sorted_periods,./app/models/top_topic.rb
sources,./lib/freedom_patches/raw_handlebars.rb
spam_silence_score,./app/serializers/reviewable_explanation_serializer.rb
sparkpost,./app/controllers/webhooks_controller.rb
specific_category,./app/models/top_menu_item.rb
staff_info,./app/controllers/users_controller.rb
stopped?,./lib/scheduler/defer.rb
stylesheet_fullpath_no_digest,./lib/stylesheet/manager.rb
supports_advisory_locks?,./lib/freedom_patches/postgresql_adapter.rb
supports_cache_versioning?,./lib/cache.rb
sync_sso,./app/controllers/admin/users_controller.rb
test_alias_creation,./lib/tasks/emoji.rake
test_cell_index_patch,./lib/tasks/emoji.rake
test_code_to_emoji,./lib/tasks/emoji.rake
test_codepoints_to_code,./lib/tasks/emoji.rake
test_codepoints_to_code_with_scale,./lib/tasks/emoji.rake
test_db_json_creation,./lib/tasks/emoji.rake
test_default_set,./lib/tasks/emoji.rake
test_groups_js_es6_creation,./lib/tasks/emoji.rake
test_scales,./lib/tasks/emoji.rake
test_thread,./script/thread_detective.rb
theme_js_lookup,./app/helpers/application_helper.rb
theme_lookup,./app/helpers/application_helper.rb
theme_translations_lookup,./app/helpers/application_helper.rb
to_rfc2822,./lib/freedom_patches/rack_patches.rb
to_utf8,./lib/encodings.rb
top_feed,./app/controllers/list_controller.rb
top_viewed,./app/models/topic.rb
topic_featured_link_domain,./app/helpers/application_helper.rb
topic_rows,./app/services/user_action_manager.rb
total_other_accounts_with_same_ip,./app/controllers/admin/users_controller.rb
total_unread_notifications,./app/models/user.rb
translate_emoji,./lib/plugin/instance.rb
trigger_transactional_callbacks?,./lib/mini_sql_multisite_connection.rb
trust_level_badge_ids,./app/models/badge.rb
tsort_each_child,./script/import_scripts/smf2.rb
tsort_each_node,./script/import_scripts/smf2.rb
twitter_credentials_missing?,./lib/twitter_api.rb
undo_revoke_key,./app/controllers/admin/api_controller.rb
unofficial_plugins,./lib/discourse.rb
unregister_detailed_request_logger,./lib/middleware/request_tracker.rb
unregister_ip_skipper,./lib/middleware/request_tracker.rb
unsubscribed,./app/controllers/email_controller.rb
unwatch_categories!,./app/models/topic_user.rb
update_likes_count_for,./app/models/top_topic.rb
update_meta_data,./app/models/topic.rb
update_op_likes_count_for,./app/models/top_topic.rb
update_posts_count_for,./app/models/top_topic.rb
update_security_key,./app/controllers/users_controller.rb
update_single_setting,./app/controllers/admin/themes_controller.rb
update_slug,./app/controllers/categories_controller.rb
update_tags,./app/controllers/topics_controller.rb
update_views_count_for,./app/models/top_topic.rb
upload_asset,./app/controllers/admin/themes_controller.rb
upsert_custom_fields,./app/models/concerns/has_custom_fields.rb
url_for_email,./app/helpers/user_notifications_helper.rb
user_for_key,./app/models/unsubscribe_key.rb
user_timeline,./lib/twitter_api.rb
validate_backup_location,./lib/site_settings/validations.rb
validate_default_categories_muted,./lib/site_settings/validations.rb
validate_default_categories_tracking,./lib/site_settings/validations.rb
validate_default_categories_watching,./lib/site_settings/validations.rb
validate_default_categories_watching_first_post,./lib/site_settings/validations.rb
validate_default_tags_muted,./lib/site_settings/validations.rb
validate_default_tags_tracking,./lib/site_settings/validations.rb
validate_default_tags_watching,./lib/site_settings/validations.rb
validate_default_tags_watching_first_post,./lib/site_settings/validations.rb
validate_enable_local_logins,./lib/site_settings/validations.rb
validate_enable_s3_inventory,./lib/site_settings/validations.rb
validate_enable_s3_uploads,./lib/site_settings/validations.rb
validate_enforce_second_factor,./lib/site_settings/validations.rb
validate_s3_backup_bucket,./lib/site_settings/validations.rb
validate_s3_upload_bucket,./lib/site_settings/validations.rb
validate_secure_media,./lib/site_settings/validations.rb
value_changed?,./lib/site_settings/local_process_provider.rb
welcome_topic,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
whitelist_public_user_custom_field,./lib/plugin/instance.rb
whitelist_staff_user_custom_field,./lib/plugin/instance.rb
with_format,./app/helpers/application_helper.rb
Method Name,Defined In
act,./app/models/post_action.rb
actual_name,./lib/freedom_patches/raw_handlebars.rb
add_admin_route,./lib/plugin/instance.rb
add_body_class,./lib/plugin/instance.rb
add_class_method,./lib/plugin/instance.rb
add_custom_reviewable_filter,./lib/plugin/instance.rb
add_default,./app/models/global_setting.rb
add_detail,./app/models/post.rb
add_message,./script/import_scripts/smf2.rb
add_permitted_post_create_param,./lib/plugin/instance.rb
add_preloaded_group_custom_field,./lib/plugin/instance.rb
add_preloaded_topic_list_custom_field,./lib/plugin/instance.rb
add_prev_data,./app/models/report.rb
add_to_size_cache,./lib/cooked_post_processor.rb
age_in_minutes,./app/models/topic.rb
all_topics_search,./lib/search.rb
apply_transform!,./lib/content_buffer.rb
available_scopes,./app/models/user_api_key.rb
before_committed!,./lib/mini_sql_multisite_connection.rb
builtin,./app/models/group.rb
cache_avatar,./lib/file_store/s3_store.rb
callback_url,./lib/auth/discord_authenticator.rb
can_admin_tag_groups?,./lib/guardian/tag_guardian.rb
can_banner_topic?,./lib/guardian/topic_guardian.rb
can_bulk_invite_to_forum?,./lib/guardian.rb
can_change_post_owner?,./lib/guardian/post_guardian.rb
can_change_post_timestamps?,./lib/guardian/post_guardian.rb
can_change_post_type?,./lib/guardian/post_guardian.rb
can_change_primary_group?,./lib/guardian.rb
can_change_trust_level?,./lib/guardian.rb
can_claim_reviewable_topic?,./lib/guardian/user_guardian.rb
can_create_bookmark?,./lib/guardian/bookmark_guardian.rb
can_create_category?,./lib/guardian/category_guardian.rb
can_delete_bookmark?,./lib/guardian/bookmark_guardian.rb
can_delete_category?,./lib/guardian/category_guardian.rb
can_delete_post_action?,./lib/guardian/post_guardian.rb
can_delete_reviewable_queued_post?,./lib/guardian.rb
can_disable_second_factor?,./lib/guardian/user_guardian.rb
can_edit_post?,./lib/guardian/post_guardian.rb
can_edit_user?,./lib/guardian/user_guardian.rb
can_export_entity?,./lib/guardian.rb
can_get_access_to_topic?,./lib/guardian/topic_guardian.rb
can_hide_post_revision?,./lib/guardian/post_revision_guardian.rb
can_invite_group_to_private_message?,./lib/guardian.rb
can_lock_post?,./lib/guardian/post_guardian.rb
can_pick_avatar?,./lib/guardian/user_guardian.rb
can_publish_topic?,./lib/guardian/topic_guardian.rb
can_rebake?,./lib/guardian/post_guardian.rb
can_rescind_all_invites?,./lib/guardian.rb
can_resend_all_invites?,./lib/guardian.rb
can_reset_bounce_score?,./lib/guardian/user_guardian.rb
can_see_flagged_posts?,./lib/guardian/post_guardian.rb
can_see_group?,./lib/guardian.rb
can_see_groups_members?,./lib/guardian.rb
can_see_post_revision?,./lib/guardian/post_revision_guardian.rb
can_see_staff_info?,./lib/guardian/user_guardian.rb
can_show_post_revision?,./lib/guardian/post_revision_guardian.rb
can_silence_user?,./lib/guardian/user_guardian.rb
can_unhide?,./lib/guardian/post_guardian.rb
can_unsilence_user?,./lib/guardian/user_guardian.rb
can_update_bumped_at?,./lib/guardian/topic_guardian.rb
can_view_raw_email?,./lib/guardian/post_guardian.rb
cancel_auto_bump_job,./app/models/topic_timer.rb
cancel_auto_delete_job,./app/models/topic_timer.rb
cancel_auto_delete_replies_job,./app/models/topic_timer.rb
cancel_auto_publish_to_category_job,./app/models/topic_timer.rb
cancel_auto_reminder_job,./app/models/topic_timer.rb
cancel_preload,./app/models/topic_list.rb
cap_unread!,./app/models/topic_user.rb
category_hashtag_lookup,./lib/pretty_text/helpers.rb
category_tag_hashtag_lookup,./lib/pretty_text/helpers.rb
cdata,./script/import_scripts/support/convert_mysql_xml_to_mysql.rb
cdata_block,./script/import_scripts/disqus.rb
check_avatar_notification,./lib/composer_messages_finder.rb
check_dominating_topic,./lib/composer_messages_finder.rb
check_education_message,./lib/composer_messages_finder.rb
check_get_a_room,./lib/composer_messages_finder.rb
check_new_user_many_replies,./lib/composer_messages_finder.rb
check_reviving_old_topic,./lib/composer_messages_finder.rb
check_sequential_replies,./lib/composer_messages_finder.rb
clean_up_tutorial_search,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
clear_all!,./lib/rate_limiter.rb
clear_all_global!,./lib/rate_limiter.rb
clear_auto_bump_cache!,./app/models/category.rb
clear_custom_filters!,./app/models/reviewable.rb
clear_debounce_cache!,./app/models/search_log.rb
clear_https_cache!,./lib/final_destination.rb
clear_key,./app/jobs/scheduled/pending_reviewables_reminder.rb
clear_problem_message,./app/models/admin_dashboard_data.rb
clear_queue!,./app/services/badge_granter.rb
committed!,./lib/mini_sql_multisite_connection.rb
compile_ember_handlebars,./lib/freedom_patches/better_handlebars_errors.rb
compile_handlebars,./lib/freedom_patches/raw_handlebars.rb
contains_gaps?,./lib/topic_view.rb
correct_top_margin,./app/helpers/user_notifications_helper.rb
create_gitignore_entry,./lib/generators/plugin/plugin_generator.rb
create_plugin,./lib/generators/plugin/plugin_generator.rb
crop_instructions,./app/models/optimized_image.rb
crop_instructions_animated,./app/models/optimized_image.rb
custom_avatar_column,./lib/plugin/instance.rb
custom_field_preloaded?,./app/models/concerns/has_custom_fields.rb
cycles,./script/import_scripts/smf2.rb
db_migrate_path,./lib/generators/rails/post_migration_generator.rb
default_locale?,./lib/site_setting_extension.rb
delayed_perform,./app/jobs/base.rb
demons,./lib/demon/base.rb
digest_body,./lib/freedom_patches/rack_patches.rb
dirty?,./lib/cooked_post_processor.rb
disable_safe!,./lib/migration/safe_migrate.rb
disallow_raw_sql!,./lib/freedom_patches/active_record_attribute_methods.rb
do_all_work,./lib/scheduler/defer.rb
downsize_instructions,./app/models/optimized_image.rb
downsize_instructions_animated,./app/models/optimized_image.rb
element_content,./lib/feed_item_accessor.rb
email_already_exists_for?,./app/models/topic.rb
enable_safe!,./lib/migration/safe_migrate.rb
establish_peer_names,./lib/message_bus_diags.rb
exclude_step,./lib/wizard.rb
exec_migration,./lib/freedom_patches/schema_migration_details.rb
exists_for?,./lib/admin_confirmation.rb
extended,./lib/site_setting_extension.rb
extract_from_apple_mail,./lib/email/receiver.rb
extract_from_exchange,./lib/email/receiver.rb
extract_from_gmail,./lib/email/receiver.rb
extract_from_mozilla,./lib/email/receiver.rb
extract_from_newton,./lib/email/receiver.rb
extract_from_outlook,./lib/email/receiver.rb
extract_from_protonmail,./lib/email/receiver.rb
extract_from_word,./lib/email/receiver.rb
extract_from_zimbra,./lib/email/receiver.rb
extract_quoted_message_ids,./script/import_scripts/smf2.rb
find_by_detail,./app/models/post.rb
find_duplicates,./lib/i18n/duplicate_key_finder.rb
flagged_post_actions,./lib/flag_query.rb
flagged_posts_report,./lib/flag_query.rb
flush!,./lib/distributed_memoizer.rb
flushdb,./lib/discourse_redis.rb
gc_analyze,./script/require_profiler.rb
generate_url,./app/models/discourse_single_sign_on.rb
get_current_user,./lib/pretty_text/helpers.rb
get_group_ids,./app/models/invite.rb
get_post_as_user,./script/import_scripts/disqus.rb
get_topic_info,./lib/pretty_text/helpers.rb
global_template_target,./lib/freedom_patches/raw_handlebars.rb
grant_permission_to_user,./app/models/topic.rb
gravatar_template,./app/models/user.rb
groupable_user_fields,./plugins/poll/plugin.rb
handle_stream,./lib/i18n/locale_file_walker.rb
handlebars?,./lib/freedom_patches/raw_handlebars.rb
has_filter?,./app/models/top_menu_item.rb
has_specific_category?,./app/models/top_menu_item.rb
has_thumbnail?,./app/models/upload.rb
has_uploaded_avatar,./app/models/user.rb
history,./app/models/reviewable.rb
import_categories_from_thread_prefixes,./script/import_scripts/xenforo.rb
import_gallery_topics,./script/import_scripts/ipboard.rb
import_image_categories,./script/import_scripts/ipboard.rb
imports,./lib/stylesheet/importer.rb
include!,./lib/freedom_patches/ams_include_without_root.rb
init_tutorial_edit,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
init_tutorial_recover,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
init_tutorial_search,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
initial_load?,./lib/topic_view.rb
insert_like,./script/import_scripts/base/generic_database.rb
interesting_after,./app/models/notification.rb
is_embedded?,./lib/onebox/engine/whitelisted_generic_onebox.rb
is_flagged?,./app/models/post.rb
languages,./lib/highlight_js/highlight_js.rb
last_db_duration,./app/jobs/base.rb
last_post_url,./app/models/topic.rb
list_bookmarks,./lib/topic_query.rb
list_group_topics,./lib/topic_query.rb
list_new,./lib/topic_query.rb
list_posted,./lib/topic_query.rb
list_private_messages,./lib/topic_query.rb
list_private_messages_archive,./lib/topic_query.rb
list_private_messages_group,./lib/topic_query.rb
list_private_messages_group_archive,./lib/topic_query.rb
list_private_messages_sent,./lib/topic_query.rb
list_private_messages_tag,./lib/topic_query.rb
list_private_messages_unread,./lib/topic_query.rb
list_read,./lib/topic_query.rb
list_unread,./lib/topic_query.rb
log_action!,./app/models/user_action.rb
log_change_upload_secure_status,./app/services/staff_action_logger.rb
lookup_primary_user_group,./lib/pretty_text/helpers.rb
mailing_list_topic,./app/helpers/email_helper.rb
mailing_list_topic_text,./app/helpers/email_helper.rb
messages_for,./app/models/group.rb
missing_mailgun_api_key,./app/models/admin_dashboard_data.rb
new_from_params,./app/models/user.rb
no_reminder?,./app/models/bookmark.rb
nokogiri_fix_blockquotes,./script/import_scripts/ipboard.rb
normal_priority_types,./app/models/notification.rb
not_close_topics,./script/import_scripts/modx.rb
not_create_permalink_file,./script/import_scripts/modx.rb
not_find_upload,./script/import_scripts/modx.rb
not_import_attachments,./script/import_scripts/modx.rb
not_import_groups,./script/import_scripts/modx.rb
not_import_private_messages,./script/import_scripts/modx.rb
not_mark_topics_as_solved,./script/import_scripts/modx.rb
not_post_process_posts,./script/import_scripts/modx.rb
notification_rows,./app/services/user_action_manager.rb
official_plugins,./lib/discourse.rb
old_clean_up,./script/import_scripts/ipboard.rb
only_security_keys_enabled?,./app/models/concerns/second_factor_manager.rb
only_totp_or_backup_codes_enabled?,./app/models/concerns/second_factor_manager.rb
order_basic_bumped,./lib/topic_query_sql.rb
order_nocategory_basic_bumped,./lib/topic_query_sql.rb
order_nocategory_with_pinned_sql,./lib/topic_query_sql.rb
order_with_pinned_sql,./lib/topic_query_sql.rb
ordered,./app/models/post_action_type.rb
page_links,./app/helpers/list_helper.rb
pause,./lib/scheduler/defer.rb
perform_agree_and_hide,./app/models/reviewable_flagged_post.rb
perform_agree_and_keep,./app/models/reviewable_flagged_post.rb
perform_agree_and_restore,./app/models/reviewable_flagged_post.rb
perform_approve_post_closed,./app/models/reviewable_queued_post.rb
perform_approve_user,./app/models/reviewable_user.rb
perform_delete_and_agree,./app/models/reviewable_flagged_post.rb
perform_delete_and_agree_replies,./app/models/reviewable_flagged_post.rb
perform_delete_and_ignore,./app/models/reviewable_flagged_post.rb
perform_delete_and_ignore_replies,./app/models/reviewable_flagged_post.rb
perform_delete_spammer,./app/models/reviewable_flagged_post.rb
perform_delete_user,./app/models/reviewable_queued_post.rb
perform_disagree,./app/models/reviewable_flagged_post.rb
perform_reject_post,./app/models/reviewable_queued_post.rb
perform_reject_user_block,./app/models/reviewable_user.rb
plugin_themes,./lib/discourse.rb
post_action_rows,./app/services/user_action_manager.rb
post_rows,./app/services/user_action_manager.rb
precompile_handlebars,./lib/freedom_patches/raw_handlebars.rb
prettify_number,./lib/twitter_api.rb
prettify_tweet,./lib/twitter_api.rb
print_banner,./config/initializers/100-sidekiq.rb
print_spinner,./script/import_scripts/base.rb
private_messages_search,./lib/search.rb
private_messages_stats,./app/models/user_action.rb
process_and_upload_inline_images,./script/import_scripts/discuz_x.rb
process_category,./script/bulk_import/base.rb
process_category_group,./script/bulk_import/discourse_merger.rb
process_category_tag,./script/bulk_import/discourse_merger.rb
process_category_tag_stat,./script/bulk_import/discourse_merger.rb
process_email_change_request,./script/bulk_import/discourse_merger.rb
process_github_user_info,./script/bulk_import/discourse_merger.rb
process_group,./script/bulk_import/base.rb
process_group_archived_message,./script/bulk_import/discourse_merger.rb
process_group_history,./script/bulk_import/discourse_merger.rb
process_oauth2_user_info,./script/bulk_import/discourse_merger.rb
process_post_reply,./script/bulk_import/discourse_merger.rb
process_post_upload,./script/bulk_import/discourse_merger.rb
process_quoted_post,./script/bulk_import/discourse_merger.rb
process_single_sign_on_record,./script/bulk_import/discourse_merger.rb
process_tag_group,./script/bulk_import/discourse_merger.rb
process_tag_user,./script/bulk_import/discourse_merger.rb
process_topic_allowed_user,./script/bulk_import/base.rb
process_topic_link,./script/bulk_import/discourse_merger.rb
process_user,./script/bulk_import/base.rb
process_user_action,./script/bulk_import/discourse_merger.rb
process_user_associated_account,./script/bulk_import/discourse_merger.rb
process_user_avatar,./script/bulk_import/discourse_merger.rb
process_user_badge,./script/bulk_import/discourse_merger.rb
process_user_email,./script/bulk_import/base.rb
process_user_history,./script/bulk_import/discourse_merger.rb
process_user_profile,./script/bulk_import/base.rb
process_user_stat,./script/bulk_import/base.rb
process_user_warning,./script/bulk_import/discourse_merger.rb
profiling_enabled?,./script/require_profiler.rb
purge,./lib/inline_oneboxer.rb
query_parent_category,./app/models/category.rb
raw_tweet_for,./lib/twitter_api.rb
readable_name,./app/models/user.rb
redirected?,./lib/final_destination.rb
register_category_custom_field_type,./lib/plugin/instance.rb
register_color_scheme,./lib/plugin/instance.rb
register_custom_html,./lib/plugin/instance.rb
register_detailed_request_logger,./lib/middleware/request_tracker.rb
register_editable_group_custom_field,./lib/plugin/instance.rb
register_editable_user_custom_field,./lib/plugin/instance.rb
register_emoji,./lib/plugin/instance.rb
register_group_custom_field_type,./lib/plugin/instance.rb
register_ip_skipper,./lib/middleware/request_tracker.rb
register_javascript,./lib/plugin/instance.rb
register_operation,./lib/topics_bulk_action.rb
register_plugin_post_custom_field,./lib/flag_query.rb
register_reviewable_type,./lib/plugin/instance.rb
register_seedfu_fixtures,./lib/plugin/instance.rb
register_topic_custom_field_type,./lib/plugin/instance.rb
register_user_custom_field_type,./lib/plugin/instance.rb
regular_order,./app/models/post.rb
remove_act,./app/models/post_action.rb
remove_custom_filter,./lib/topic_query.rb
remove_filter,./app/models/report.rb
remove_review_groups,./app/models/group.rb
replace_flags,./lib/plugin/instance.rb
reply_to_wiki,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
report_top_referred_topics,./app/models/incoming_links_report.rb
report_top_referrers,./app/models/incoming_links_report.rb
report_top_traffic_sources,./app/models/incoming_links_report.rb
reset_last_cleanup!,./app/jobs/scheduled/clean_up_uploads.rb
reset_redis_config!,./app/models/global_setting.rb
reset_s3_cache!,./app/models/global_setting.rb
resize_instructions,./app/models/optimized_image.rb
resume,./lib/scheduler/defer.rb
reverse_order,./app/models/post.rb
rolledback!,./lib/mini_sql_multisite_connection.rb
run_immediately?,./app/jobs/base.rb
run_on_change,./lib/autospec/reload_css.rb
running_in_rack?,./lib/discourse.rb
s3_inventory_path,./lib/s3_helper.rb
s3_options_from_site_settings,./lib/file_store/to_s3_migration.rb
saved_change_to_value?,./lib/site_settings/local_process_provider.rb
schedule_auto_bump_job,./app/models/topic_timer.rb
schedule_auto_close_job,./app/models/topic_timer.rb
schedule_auto_delete_job,./app/models/topic_timer.rb
schedule_auto_delete_replies_job,./app/models/topic_timer.rb
schedule_auto_open_job,./app/models/topic_timer.rb
schedule_auto_publish_to_category_job,./app/models/topic_timer.rb
schedule_auto_reminder_job,./app/models/topic_timer.rb
seen_hosts,./lib/message_bus_diags.rb
send_reminder_notification,./lib/bookmark_manager.rb
set_cookie,./lib/discourse_cookie_store.rb
set_regardless_of_locale,./lib/site_settings/defaults_provider.rb
setup!,./lib/active_record/connection_adapters/postgresql_fallback_adapter.rb
site_setting,./app/models/site.rb
sort_order_for_post_number,./lib/topic_view.rb
sorted_periods,./app/models/top_topic.rb
sources,./lib/freedom_patches/raw_handlebars.rb
spam_silence_score,./app/serializers/reviewable_explanation_serializer.rb
specific_category,./app/models/top_menu_item.rb
stopped?,./lib/scheduler/defer.rb
stylesheet_fullpath_no_digest,./lib/stylesheet/manager.rb
supports_advisory_locks?,./lib/freedom_patches/postgresql_adapter.rb
supports_cache_versioning?,./lib/cache.rb
test_alias_creation,./lib/tasks/emoji.rake
test_cell_index_patch,./lib/tasks/emoji.rake
test_code_to_emoji,./lib/tasks/emoji.rake
test_codepoints_to_code,./lib/tasks/emoji.rake
test_codepoints_to_code_with_scale,./lib/tasks/emoji.rake
test_db_json_creation,./lib/tasks/emoji.rake
test_default_set,./lib/tasks/emoji.rake
test_groups_js_es6_creation,./lib/tasks/emoji.rake
test_scales,./lib/tasks/emoji.rake
test_thread,./script/thread_detective.rb
to_rfc2822,./lib/freedom_patches/rack_patches.rb
to_utf8,./lib/encodings.rb
top_viewed,./app/models/topic.rb
topic_rows,./app/services/user_action_manager.rb
total_unread_notifications,./app/models/user.rb
translate_emoji,./lib/plugin/instance.rb
trigger_transactional_callbacks?,./lib/mini_sql_multisite_connection.rb
trust_level_badge_ids,./app/models/badge.rb
tsort_each_child,./script/import_scripts/smf2.rb
tsort_each_node,./script/import_scripts/smf2.rb
twitter_credentials_missing?,./lib/twitter_api.rb
unofficial_plugins,./lib/discourse.rb
unregister_detailed_request_logger,./lib/middleware/request_tracker.rb
unregister_ip_skipper,./lib/middleware/request_tracker.rb
unwatch_categories!,./app/models/topic_user.rb
update_likes_count_for,./app/models/top_topic.rb
update_meta_data,./app/models/topic.rb
update_op_likes_count_for,./app/models/top_topic.rb
update_posts_count_for,./app/models/top_topic.rb
update_views_count_for,./app/models/top_topic.rb
upsert_custom_fields,./app/models/concerns/has_custom_fields.rb
user_for_key,./app/models/unsubscribe_key.rb
user_timeline,./lib/twitter_api.rb
validate_backup_location,./lib/site_settings/validations.rb
validate_default_categories_muted,./lib/site_settings/validations.rb
validate_default_categories_tracking,./lib/site_settings/validations.rb
validate_default_categories_watching,./lib/site_settings/validations.rb
validate_default_categories_watching_first_post,./lib/site_settings/validations.rb
validate_default_tags_muted,./lib/site_settings/validations.rb
validate_default_tags_tracking,./lib/site_settings/validations.rb
validate_default_tags_watching,./lib/site_settings/validations.rb
validate_default_tags_watching_first_post,./lib/site_settings/validations.rb
validate_enable_local_logins,./lib/site_settings/validations.rb
validate_enable_s3_inventory,./lib/site_settings/validations.rb
validate_enable_s3_uploads,./lib/site_settings/validations.rb
validate_enforce_second_factor,./lib/site_settings/validations.rb
validate_s3_backup_bucket,./lib/site_settings/validations.rb
validate_s3_upload_bucket,./lib/site_settings/validations.rb
validate_secure_media,./lib/site_settings/validations.rb
value_changed?,./lib/site_settings/local_process_provider.rb
welcome_topic,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
whitelist_public_user_custom_field,./lib/plugin/instance.rb
whitelist_staff_user_custom_field,./lib/plugin/instance.rb
with_format,./app/helpers/application_helper.rb
all_topics_search,./lib/search.rb
Method Name,Defined In
act,./app/models/post_action.rb
actual_name,./lib/freedom_patches/raw_handlebars.rb
add_admin_route,./lib/plugin/instance.rb
add_body_class,./lib/plugin/instance.rb
add_class_method,./lib/plugin/instance.rb
add_custom_reviewable_filter,./lib/plugin/instance.rb
add_default,./app/models/global_setting.rb
add_detail,./app/models/post.rb
add_message,./script/import_scripts/smf2.rb
add_permitted_post_create_param,./lib/plugin/instance.rb
add_preloaded_group_custom_field,./lib/plugin/instance.rb
add_preloaded_topic_list_custom_field,./lib/plugin/instance.rb
add_prev_data,./app/models/report.rb
add_to_size_cache,./lib/cooked_post_processor.rb
age_in_minutes,./app/models/topic.rb
all_topics_search,./lib/search.rb
apply_transform!,./lib/content_buffer.rb
available_scopes,./app/models/user_api_key.rb
before_committed!,./lib/mini_sql_multisite_connection.rb
builtin,./app/models/group.rb
cache_avatar,./lib/file_store/s3_store.rb
callback_url,./lib/auth/discord_authenticator.rb
can_admin_tag_groups?,./lib/guardian/tag_guardian.rb
can_banner_topic?,./lib/guardian/topic_guardian.rb
can_bulk_invite_to_forum?,./lib/guardian.rb
can_change_post_owner?,./lib/guardian/post_guardian.rb
can_change_post_timestamps?,./lib/guardian/post_guardian.rb
can_change_post_type?,./lib/guardian/post_guardian.rb
can_change_primary_group?,./lib/guardian.rb
can_change_trust_level?,./lib/guardian.rb
can_claim_reviewable_topic?,./lib/guardian/user_guardian.rb
can_create_bookmark?,./lib/guardian/bookmark_guardian.rb
can_create_category?,./lib/guardian/category_guardian.rb
can_delete_bookmark?,./lib/guardian/bookmark_guardian.rb
can_delete_category?,./lib/guardian/category_guardian.rb
can_delete_post_action?,./lib/guardian/post_guardian.rb
can_delete_reviewable_queued_post?,./lib/guardian.rb
can_disable_second_factor?,./lib/guardian/user_guardian.rb
can_edit_post?,./lib/guardian/post_guardian.rb
can_edit_user?,./lib/guardian/user_guardian.rb
can_export_entity?,./lib/guardian.rb
can_get_access_to_topic?,./lib/guardian/topic_guardian.rb
can_hide_post_revision?,./lib/guardian/post_revision_guardian.rb
can_invite_group_to_private_message?,./lib/guardian.rb
can_lock_post?,./lib/guardian/post_guardian.rb
can_pick_avatar?,./lib/guardian/user_guardian.rb
can_publish_topic?,./lib/guardian/topic_guardian.rb
can_rebake?,./lib/guardian/post_guardian.rb
can_rescind_all_invites?,./lib/guardian.rb
can_resend_all_invites?,./lib/guardian.rb
can_reset_bounce_score?,./lib/guardian/user_guardian.rb
can_see_flagged_posts?,./lib/guardian/post_guardian.rb
can_see_group?,./lib/guardian.rb
can_see_groups_members?,./lib/guardian.rb
can_see_post_revision?,./lib/guardian/post_revision_guardian.rb
can_see_staff_info?,./lib/guardian/user_guardian.rb
can_show_post_revision?,./lib/guardian/post_revision_guardian.rb
can_silence_user?,./lib/guardian/user_guardian.rb
can_unhide?,./lib/guardian/post_guardian.rb
can_unsilence_user?,./lib/guardian/user_guardian.rb
can_update_bumped_at?,./lib/guardian/topic_guardian.rb
can_view_raw_email?,./lib/guardian/post_guardian.rb
cancel_auto_bump_job,./app/models/topic_timer.rb
cancel_auto_delete_job,./app/models/topic_timer.rb
cancel_auto_delete_replies_job,./app/models/topic_timer.rb
cancel_auto_publish_to_category_job,./app/models/topic_timer.rb
cancel_auto_reminder_job,./app/models/topic_timer.rb
cancel_preload,./app/models/topic_list.rb
cap_unread!,./app/models/topic_user.rb
category_hashtag_lookup,./lib/pretty_text/helpers.rb
category_tag_hashtag_lookup,./lib/pretty_text/helpers.rb
cdata,./script/import_scripts/support/convert_mysql_xml_to_mysql.rb
cdata_block,./script/import_scripts/disqus.rb
check_avatar_notification,./lib/composer_messages_finder.rb
check_dominating_topic,./lib/composer_messages_finder.rb
check_education_message,./lib/composer_messages_finder.rb
check_get_a_room,./lib/composer_messages_finder.rb
check_new_user_many_replies,./lib/composer_messages_finder.rb
check_reviving_old_topic,./lib/composer_messages_finder.rb
check_sequential_replies,./lib/composer_messages_finder.rb
clean_up_tutorial_search,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
clear_all!,./lib/rate_limiter.rb
clear_all_global!,./lib/rate_limiter.rb
clear_auto_bump_cache!,./app/models/category.rb
clear_custom_filters!,./app/models/reviewable.rb
clear_debounce_cache!,./app/models/search_log.rb
clear_https_cache!,./lib/final_destination.rb
clear_key,./app/jobs/scheduled/pending_reviewables_reminder.rb
clear_problem_message,./app/models/admin_dashboard_data.rb
clear_queue!,./app/services/badge_granter.rb
committed!,./lib/mini_sql_multisite_connection.rb
compile_ember_handlebars,./lib/freedom_patches/better_handlebars_errors.rb
compile_handlebars,./lib/freedom_patches/raw_handlebars.rb
contains_gaps?,./lib/topic_view.rb
correct_top_margin,./app/helpers/user_notifications_helper.rb
create_gitignore_entry,./lib/generators/plugin/plugin_generator.rb
create_plugin,./lib/generators/plugin/plugin_generator.rb
crop_instructions,./app/models/optimized_image.rb
crop_instructions_animated,./app/models/optimized_image.rb
custom_avatar_column,./lib/plugin/instance.rb
custom_field_preloaded?,./app/models/concerns/has_custom_fields.rb
cycles,./script/import_scripts/smf2.rb
db_migrate_path,./lib/generators/rails/post_migration_generator.rb
default_locale?,./lib/site_setting_extension.rb
delayed_perform,./app/jobs/base.rb
demons,./lib/demon/base.rb
digest_body,./lib/freedom_patches/rack_patches.rb
dirty?,./lib/cooked_post_processor.rb
disable_safe!,./lib/migration/safe_migrate.rb
disallow_raw_sql!,./lib/freedom_patches/active_record_attribute_methods.rb
do_all_work,./lib/scheduler/defer.rb
downsize_instructions,./app/models/optimized_image.rb
downsize_instructions_animated,./app/models/optimized_image.rb
element_content,./lib/feed_item_accessor.rb
email_already_exists_for?,./app/models/topic.rb
enable_safe!,./lib/migration/safe_migrate.rb
establish_peer_names,./lib/message_bus_diags.rb
exclude_step,./lib/wizard.rb
exec_migration,./lib/freedom_patches/schema_migration_details.rb
exists_for?,./lib/admin_confirmation.rb
extended,./lib/site_setting_extension.rb
extract_from_apple_mail,./lib/email/receiver.rb
extract_from_exchange,./lib/email/receiver.rb
extract_from_gmail,./lib/email/receiver.rb
extract_from_mozilla,./lib/email/receiver.rb
extract_from_newton,./lib/email/receiver.rb
extract_from_outlook,./lib/email/receiver.rb
extract_from_protonmail,./lib/email/receiver.rb
extract_from_word,./lib/email/receiver.rb
extract_from_zimbra,./lib/email/receiver.rb
extract_quoted_message_ids,./script/import_scripts/smf2.rb
find_by_detail,./app/models/post.rb
find_duplicates,./lib/i18n/duplicate_key_finder.rb
flagged_post_actions,./lib/flag_query.rb
flagged_posts_report,./lib/flag_query.rb
flush!,./lib/distributed_memoizer.rb
flushdb,./lib/discourse_redis.rb
gc_analyze,./script/require_profiler.rb
generate_url,./app/models/discourse_single_sign_on.rb
get_current_user,./lib/pretty_text/helpers.rb
get_group_ids,./app/models/invite.rb
get_post_as_user,./script/import_scripts/disqus.rb
get_topic_info,./lib/pretty_text/helpers.rb
global_template_target,./lib/freedom_patches/raw_handlebars.rb
grant_permission_to_user,./app/models/topic.rb
gravatar_template,./app/models/user.rb
groupable_user_fields,./plugins/poll/plugin.rb
handle_stream,./lib/i18n/locale_file_walker.rb
handlebars?,./lib/freedom_patches/raw_handlebars.rb
has_filter?,./app/models/top_menu_item.rb
has_specific_category?,./app/models/top_menu_item.rb
has_thumbnail?,./app/models/upload.rb
has_uploaded_avatar,./app/models/user.rb
history,./app/models/reviewable.rb
import_categories_from_thread_prefixes,./script/import_scripts/xenforo.rb
import_gallery_topics,./script/import_scripts/ipboard.rb
import_image_categories,./script/import_scripts/ipboard.rb
imports,./lib/stylesheet/importer.rb
include!,./lib/freedom_patches/ams_include_without_root.rb
init_tutorial_edit,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
init_tutorial_recover,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
init_tutorial_search,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
initial_load?,./lib/topic_view.rb
insert_like,./script/import_scripts/base/generic_database.rb
interesting_after,./app/models/notification.rb
is_embedded?,./lib/onebox/engine/whitelisted_generic_onebox.rb
is_flagged?,./app/models/post.rb
languages,./lib/highlight_js/highlight_js.rb
last_db_duration,./app/jobs/base.rb
last_post_url,./app/models/topic.rb
list_bookmarks,./lib/topic_query.rb
list_group_topics,./lib/topic_query.rb
list_new,./lib/topic_query.rb
list_posted,./lib/topic_query.rb
list_private_messages,./lib/topic_query.rb
list_private_messages_archive,./lib/topic_query.rb
list_private_messages_group,./lib/topic_query.rb
list_private_messages_group_archive,./lib/topic_query.rb
list_private_messages_sent,./lib/topic_query.rb
list_private_messages_tag,./lib/topic_query.rb
list_private_messages_unread,./lib/topic_query.rb
list_read,./lib/topic_query.rb
list_unread,./lib/topic_query.rb
log_action!,./app/models/user_action.rb
log_change_upload_secure_status,./app/services/staff_action_logger.rb
lookup_primary_user_group,./lib/pretty_text/helpers.rb
mailing_list_topic,./app/helpers/email_helper.rb
mailing_list_topic_text,./app/helpers/email_helper.rb
messages_for,./app/models/group.rb
missing_mailgun_api_key,./app/models/admin_dashboard_data.rb
new_from_params,./app/models/user.rb
no_reminder?,./app/models/bookmark.rb
nokogiri_fix_blockquotes,./script/import_scripts/ipboard.rb
normal_priority_types,./app/models/notification.rb
not_close_topics,./script/import_scripts/modx.rb
not_create_permalink_file,./script/import_scripts/modx.rb
not_find_upload,./script/import_scripts/modx.rb
not_import_attachments,./script/import_scripts/modx.rb
not_import_groups,./script/import_scripts/modx.rb
not_import_private_messages,./script/import_scripts/modx.rb
not_mark_topics_as_solved,./script/import_scripts/modx.rb
not_post_process_posts,./script/import_scripts/modx.rb
notification_rows,./app/services/user_action_manager.rb
official_plugins,./lib/discourse.rb
old_clean_up,./script/import_scripts/ipboard.rb
only_security_keys_enabled?,./app/models/concerns/second_factor_manager.rb
only_totp_or_backup_codes_enabled?,./app/models/concerns/second_factor_manager.rb
order_basic_bumped,./lib/topic_query_sql.rb
order_nocategory_basic_bumped,./lib/topic_query_sql.rb
order_nocategory_with_pinned_sql,./lib/topic_query_sql.rb
order_with_pinned_sql,./lib/topic_query_sql.rb
ordered,./app/models/post_action_type.rb
page_links,./app/helpers/list_helper.rb
pause,./lib/scheduler/defer.rb
perform_agree_and_hide,./app/models/reviewable_flagged_post.rb
perform_agree_and_keep,./app/models/reviewable_flagged_post.rb
perform_agree_and_restore,./app/models/reviewable_flagged_post.rb
perform_approve_post_closed,./app/models/reviewable_queued_post.rb
perform_approve_user,./app/models/reviewable_user.rb
perform_delete_and_agree,./app/models/reviewable_flagged_post.rb
perform_delete_and_agree_replies,./app/models/reviewable_flagged_post.rb
perform_delete_and_ignore,./app/models/reviewable_flagged_post.rb
perform_delete_and_ignore_replies,./app/models/reviewable_flagged_post.rb
perform_delete_spammer,./app/models/reviewable_flagged_post.rb
perform_delete_user,./app/models/reviewable_queued_post.rb
perform_disagree,./app/models/reviewable_flagged_post.rb
perform_reject_post,./app/models/reviewable_queued_post.rb
perform_reject_user_block,./app/models/reviewable_user.rb
plugin_themes,./lib/discourse.rb
post_action_rows,./app/services/user_action_manager.rb
post_rows,./app/services/user_action_manager.rb
precompile_handlebars,./lib/freedom_patches/raw_handlebars.rb
prettify_number,./lib/twitter_api.rb
prettify_tweet,./lib/twitter_api.rb
print_banner,./config/initializers/100-sidekiq.rb
print_spinner,./script/import_scripts/base.rb
private_messages_search,./lib/search.rb
private_messages_stats,./app/models/user_action.rb
process_and_upload_inline_images,./script/import_scripts/discuz_x.rb
process_category,./script/bulk_import/base.rb
process_category_group,./script/bulk_import/discourse_merger.rb
process_category_tag,./script/bulk_import/discourse_merger.rb
process_category_tag_stat,./script/bulk_import/discourse_merger.rb
process_email_change_request,./script/bulk_import/discourse_merger.rb
process_github_user_info,./script/bulk_import/discourse_merger.rb
process_group,./script/bulk_import/base.rb
process_group_archived_message,./script/bulk_import/discourse_merger.rb
process_group_history,./script/bulk_import/discourse_merger.rb
process_oauth2_user_info,./script/bulk_import/discourse_merger.rb
process_post_reply,./script/bulk_import/discourse_merger.rb
process_post_upload,./script/bulk_import/discourse_merger.rb
process_quoted_post,./script/bulk_import/discourse_merger.rb
process_single_sign_on_record,./script/bulk_import/discourse_merger.rb
process_tag_group,./script/bulk_import/discourse_merger.rb
process_tag_user,./script/bulk_import/discourse_merger.rb
process_topic_allowed_user,./script/bulk_import/base.rb
process_topic_link,./script/bulk_import/discourse_merger.rb
process_user,./script/bulk_import/base.rb
process_user_action,./script/bulk_import/discourse_merger.rb
process_user_associated_account,./script/bulk_import/discourse_merger.rb
process_user_avatar,./script/bulk_import/discourse_merger.rb
process_user_badge,./script/bulk_import/discourse_merger.rb
process_user_email,./script/bulk_import/base.rb
process_user_history,./script/bulk_import/discourse_merger.rb
process_user_profile,./script/bulk_import/base.rb
process_user_stat,./script/bulk_import/base.rb
process_user_warning,./script/bulk_import/discourse_merger.rb
profiling_enabled?,./script/require_profiler.rb
purge,./lib/inline_oneboxer.rb
query_parent_category,./app/models/category.rb
raw_tweet_for,./lib/twitter_api.rb
readable_name,./app/models/user.rb
redirected?,./lib/final_destination.rb
register_category_custom_field_type,./lib/plugin/instance.rb
register_color_scheme,./lib/plugin/instance.rb
register_custom_html,./lib/plugin/instance.rb
register_detailed_request_logger,./lib/middleware/request_tracker.rb
register_editable_group_custom_field,./lib/plugin/instance.rb
register_editable_user_custom_field,./lib/plugin/instance.rb
register_emoji,./lib/plugin/instance.rb
register_group_custom_field_type,./lib/plugin/instance.rb
register_ip_skipper,./lib/middleware/request_tracker.rb
register_javascript,./lib/plugin/instance.rb
register_operation,./lib/topics_bulk_action.rb
register_plugin_post_custom_field,./lib/flag_query.rb
register_reviewable_type,./lib/plugin/instance.rb
register_seedfu_fixtures,./lib/plugin/instance.rb
register_topic_custom_field_type,./lib/plugin/instance.rb
register_user_custom_field_type,./lib/plugin/instance.rb
regular_order,./app/models/post.rb
remove_act,./app/models/post_action.rb
remove_custom_filter,./lib/topic_query.rb
remove_filter,./app/models/report.rb
remove_review_groups,./app/models/group.rb
replace_flags,./lib/plugin/instance.rb
reply_to_wiki,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb
report_top_referred_topics,./app/models/incoming_links_report.rb
report_top_referrers,./app/models/incoming_links_report.rb
report_top_traffic_sources,./app/models/incoming_links_report.rb
reset_last_cleanup!,./app/jobs/scheduled/clean_up_uploads.rb
reset_redis_config!,./app/models/global_setting.rb
reset_s3_cache!,./app/models/global_setting.rb
resize_instructions,./app/models/optimized_image.rb
resume,./lib/scheduler/defer.rb
reverse_order,./app/models/post.rb
rolledback!,./lib/mini_sql_multisite_connection.rb
run_immediately?,./app/jobs/base.rb
run_on_change,./lib/autospec/reload_css.rb
running_in_rack?,./lib/discourse.rb
s3_inventory_path,./lib/s3_helper.rb
s3_options_from_site_settings,./lib/file_store/to_s3_migration.rb
saved_change_to_value?,./lib/site_settings/local_process_provider.rb
schedule_auto_bump_job,./app/models/topic_timer.rb
schedule_auto_close_job,./app/models/topic_timer.rb
schedule_auto_delete_job,./app/models/topic_timer.rb
schedule_auto_delete_replies_job,./app/models/topic_timer.rb
schedule_auto_open_job,./app/models/topic_timer.rb
schedule_auto_publish_to_category_job,./app/models/topic_timer.rb
schedule_auto_reminder_job,./app/models/topic_timer.rb
seen_hosts,./lib/message_bus_diags.rb
send_reminder_notification,./lib/bookmark_manager.rb
set_cookie,./lib/discourse_cookie_store.rb
set_regardless_of_locale,./lib/site_settings/defaults_provider.rb
setup!,./lib/active_record/connection_adapters/postgresql_fallback_adapter.rb
site_setting,./app/models/site.rb
sort_order_for_post_number,./lib/topic_view.rb
sorted_periods,./app/models/top_topic.rb
sources,./lib/freedom_patches/raw_handlebars.rb
spam_silence_score,./app/serializers/reviewable_explanation_serializer.rb
specific_category,./app/models/top_menu_item.rb
stopped?,./lib/scheduler/defer.rb
stylesheet_fullpath_no_digest,./lib/stylesheet/manager.rb
supports_advisory_locks?,./lib/freedom_patches/postgresql_adapter.rb
supports_cache_versioning?,./lib/cache.rb
test_alias_creation,./lib/tasks/emoji.rake
test_cell_index_patch,./lib/tasks/emoji.rake
test_code_to_emoji,./lib/tasks/emoji.rake
test_codepoints_to_code,./lib/tasks/emoji.rake
test_codepoints_to_code_with_scale,./lib/tasks/emoji.rake
test_db_json_creation,./lib/tasks/emoji.rake
test_default_set,./lib/tasks/emoji.rake
test_groups_js_es6_creation,./lib/tasks/emoji.rake
test_scales,./lib/tasks/emoji.rake
test_thread,./script/thread_detective.rb
to_rfc2822,./lib/freedom_patches/rack_patches.rb
to_utf8,./lib/encodings.rb
top_viewed,./app/models/topic.rb
topic_rows,./app/services/user_action_manager.rb
total_unread_notifications,./app/models/user.rb
translate_emoji,./lib/plugin/instance.rb
trigger_transactional_callbacks?,./lib/mini_sql_multisite_connection.rb
trust_level_badge_ids,./app/models/badge.rb
tsort_each_child,./script/import_scripts/smf2.rb
tsort_each_node,./script/import_scripts/smf2.rb
twitter_credentials_missing?,./lib/twitter_api.rb
unofficial_plugins,./lib/discourse.rb
unregister_detailed_request_logger,./lib/middleware/request_tracker.rb
unregister_ip_skipper,./lib/middleware/request_tracker.rb
unwatch_categories!,./app/models/topic_user.rb
update_likes_count_for,./app/models/top_topic.rb
update_meta_data,./app/models/topic.rb
update_op_likes_count_for,./app/models/top_topic.rb
update_posts_count_for,./app/models/top_topic.rb
update_views_count_for,./app/models/top_topic.rb
upsert_custom_fields,./app/models/concerns/has_custom_fields.rb
user_for_key,./app/models/unsubscribe_key.rb
user_timeline,./lib/twitter_api.rb
validate_backup_location,./lib/site_settings/validations.rb
validate_default_categories_muted,./lib/site_settings/validations.rb
validate_default_categories_tracking,./lib/site_settings/validations.rb
validate_default_categories_watching,./lib/site_settings/validations.rb
validate_default_categories_watching_first_post,./lib/site_settings/validations.rb
validate_default_tags_muted,./lib/site_settings/validations.rb
validate_default_tags_tracking,./lib/site_settings/validations.rb
validate_default_tags_watching,./lib/site_settings/validations.rb
validate_default_tags_watching_first_post,./lib/site_settings/validations.rb
validate_enable_local_logins,./lib/site_settings/validations.rb
validate_enable_s3_inventory,./lib/site_settings/validations.rb
validate_enable_s3_uploads,./lib/site_settings/validations.rb
validate_enforce_second_factor,./lib/site_settings/validations.rb
validate_s3_backup_bucket,./lib/site_settings/validations.rb
validate_s3_upload_bucket,./lib/site_settings/validations.rb
validate_secure_media,./lib/site_settings/validations.rb
value_changed?,./lib/site_settings/local_process_provider.rb
welcome_topic,./plugins/discourse-narrative-bot/lib/discourse_narrative_bot/new_user_narrative.rb
whitelist_public_user_custom_field,./lib/plugin/instance.rb
whitelist_staff_user_custom_field,./lib/plugin/instance.rb
with_format,./app/helpers/application_helper.rb
the death star from Star Wars

Death stars

“Codebase killers”
a traced death star from Star Wars

Complexity/Churn Detector

🧬 Calculate file complexity

📊 Determine how frequently a file has changed recently

=Assignments
🌲Branches
📞Calls
$ flog action_dispatch/routing/mapper.rb
  1324.7: flog total
     8.7: flog/method average

    75.0: ActionDispatch::Routing::Mapper::Mapping#initialize action_dispatch/routing/mapper.rb:118-163
    62.6: ActionDispatch::Routing::Mapper::Scoping#scope action_dispatch/routing/mapper.rb:865-914
    56.4: ActionDispatch::Routing::Mapper::Mapping#build_path action_dispatch/routing/mapper.rb:201-226
    54.5: ActionDispatch::Routing::Mapper::Resources#map_match action_dispatch/routing/mapper.rb:1901-1939
    51.6: ActionDispatch::Routing::Mapper::Resources#resources action_dispatch/routing/mapper.rb:1488-1515
    49.4: ActionDispatch::Routing::Mapper::Resources#apply_common_behavior_for action_dispatch/routing/mapper.rb:1715-1746
    43.4: ActionDispatch::Routing::Mapper::Resources#resource action_dispatch/routing/mapper.rb:1322-1348
    43.3: ActionDispatch::Routing::Mapper::Base#define_generate_prefix action_dispatch/routing/mapper.rb:688-715
    30.5: ActionDispatch::Routing::Mapper::Resources#match action_dispatch/routing/mapper.rb:1643-1673
    ...
$ git log --since='6 months ago' \
   actionpack/lib/action_dispatch/routing/mapper.rb \
$ git log --since='6 months ago' \
   actionpack/lib/action_dispatch/routing/mapper.rb \

commit fa292703e1b733a7a55a8d6f0d749ddf590c61fd
Merge: 285cc00128 b44740d48d
Author: Aaron Patterson <aaron.patterson@gmail.com>
Date:   Thu Dec 12 15:34:30 2019

    Merge pull request #37075 from woahdae/fix-multiple-choice-route-options

     Fix route from "(:a)(foo/:b)" when only given :b

commit 285cc00128c8810fbc73243cea2ed81247fa620f
Merge: cad13033fc c218233472
Author: Aaron Patterson <aaron.patterson@gmail.com>
Date:   Thu Dec 12 15:25:19 2019

    Merge pull request #37073 from woahdae/fix-hierarchical-route-options

    Fix route from "(:a)(:b)" when given only :a or :b

...
$ git log --since='6 months ago' \
   actionpack/lib/action_dispatch/routing/mapper.rb

commit fa292703e1b733a7a55a8d6f0d749ddf590c61fd
Merge: 285cc00128 b44740d48d
Author: Aaron Patterson <aaron.patterson@gmail.com>
Date:   Thu Dec 12 15:34:30 2019

    Merge pull request #37075 from woahdae/fix-multiple-choice-route-options

     Fix route from "(:a)(foo/:b)" when only given :b

commit 285cc00128c8810fbc73243cea2ed81247fa620f
Merge: cad13033fc c218233472
Author: Aaron Patterson <aaron.patterson@gmail.com>
Date:   Thu Dec 12 15:25:19 2019

    Merge pull request #37073 from woahdae/fix-hierarchical-route-options

    Fix route from "(:a)(:b)" when given only :a or :b

...
$ git log --since='6 months ago' \
   actionpack/lib/action_dispatch/routing/mapper.rb \
 | grep '^commit' \
 | wc -l

       7
$ git log --name-only --since="6 months ago" --format=""

railties/test/application/rake/dbs_test.rb
railties/test/isolation/abstract_unit.rb
activerecord/lib/active_record/railties/databases.rake
activerecord/lib/active_record/tasks/database_tasks.rb
guides/source/debugging_rails_applications.md
railties/test/generators/app_generator_test.rb
activesupport/lib/active_support.rb
activesupport/lib/active_support/core_ext/string/inquiry.rb
activesupport/lib/active_support/environment_inquirer.rb
railties/lib/rails.rb
activerecord/lib/active_record/railties/databases.rake
activerecord/lib/active_record/tasks/database_tasks.rb
activesupport/lib/active_support/core_ext/string/inquiry.rb
activesupport/lib/active_support/environment_inquirer.rb
railties/lib/rails.rb
activejob/lib/active_job/exceptions.rb
...
$ git log --name-only --since="6 months ago" --format="" origin/main \
    | sort \
    | uniq -c

   1 .codeclimate.yml
   1 .github/CODEOWNERS
   1 .github/stale.yml
  13 .github/workflows/rubocop.yml
   4 .rubocop.yml
   1 .travis.yml
   1 Brewfile
   4 Gemfile
  26 Gemfile.lock
   1 MIT-LICENSE
$ ~/bin/complexity_churn.rb actionpack

0.556 actionpack/lib/action_dispatch/middleware/stack.rb
0.500 actionpack/lib/action_dispatch/routing/mapper.rb
0.281 actionpack/lib/action_dispatch/routing/route_set.rb
0.162 actionpack/lib/action_controller/metal/strong_parameters.rb
0.157 actionpack/lib/action_dispatch/middleware/cookies.rb
0.132 actionpack/lib/action_controller/test_case.rb
0.121 actionpack/lib/action_dispatch/http/mime_type.rb
0.115 actionpack/lib/action_dispatch/testing/integration.rb
0.108 actionpack/test/abstract_unit.rb
0.102 actionpack/lib/action_controller/metal/http_authentication.rb
000.250.250.50.50.750.7511ComplexityChurn👋 mapper.rbschema_statements.rbquery_methods.rbconnection_pool.rb0.25,0.2616483423074460.805555555555556,0.3085839790485520.166666666666667,0.04314365588269160.0555555555555556,0.002143835162675310.0555555555555556,0.008581275097984370.111111111111111,0.06845331004543960.305555555555556,0.04750283097807260.0277777777777778,0.04775258760280030.111111111111111,0.06672085338974970.194444444444444,0.1297911414555310.472222222222222,0.2564484260236540.194444444444444,0.1960871194978160.111111111111111,0.2345611673440630.333333333333333,0.1820233281689490.0277777777777778,0.04559891844443230.333333333333333,0.3370322942856020.0277777777777778,0.1106455930916050.0277777777777778,0.08810612420781490.0555555555555556,0.06894344431015170.166666666666667,0.2036306621471750.0555555555555556,0.03797761073472510.75,0.5298182881632650.277777777777778,0.243172715908570.0277777777777778,0.02362231153048430.138888888888889,0.1064466400516110,0.009224987669693780,0.002208799864574570.0277777777777778,0.00938728741500330,0.01227440123584620,0.01909151648946390,0.01969275451343380.138888888888889,0.04149629643147660.194444444444444,0.03411982996974270.25,0.01918169027471060.25,0.04126116724166730.138888888888889,0.01865982198367830.166666666666667,0.3560902914761110.166666666666667,0.1094370460449870.5,0.01390244620643990,0.1817928389516860.194444444444444,0.07887279728606480.0555555555555556,0.1547016231600590.194444444444444,0.05749308958707120.0833333333333333,0.03515036098801970.611111111111111,0.1131490175295730.138888888888889,0.05105667749210211,0.4568491173652670.472222222222222,0.1455250714235590.333333333333333,0.02783504180125260.166666666666667,0.01024856647991370.0555555555555556,0.009781427058547160.277777777777778,0.2077950690714450.111111111111111,0.01928514472734010.0277777777777778,0.02203237120508180.222222222222222,0.1664544800997750.305555555555556,0.1225947652945220.5,0.2217937394328020.305555555555556,0.1910767009654680.0555555555555556,0.0256969194108480.138888888888889,0.1423493299052080.0555555555555556,0.08782076064525920.111111111111111,0.01169787901528490.277777777777778,0.109338215285630.25,0.03670660403687680.194444444444444,0.2834009095106820,0.03504063711345130.222222222222222,0.1587998932098420.166666666666667,0.1826571917437730.0833333333333333,0.05417074823462070.222222222222222,0.3003649312410530.138888888888889,0.5730642007570090.0833333333333333,0.1246205491861820.0277777777777778,0.04743860063742860.277777777777778,0.2512680764055680.111111111111111,0.1128119663463740.0555555555555556,0.08807801989615490,0.02990858681951140.138888888888889,0.05115195221729020.0555555555555556,0.01462898662307940.0555555555555556,0.01699710975026020.0833333333333333,0.1961537726043350.0555555555555556,0.0685683110015170.166666666666667,0.09781893326854710.0277777777777778,0.02208977492945450.361111111111111,0.42182320762180.0833333333333333,0.1701189620084160.138888888888889,0.08956683241759220.694444444444444,0.5035044380615010.0833333333333333,0.2358123624441790.416666666666667,0.2101949580987590.444444444444444,0.5890680283722680.138888888888889,0.1837901774063780,0.0138094718781520.0277777777777778,0.0375385916069390.194444444444444,0.1544432861312920.111111111111111,0.01537227171074870.111111111111111,0.05012249702645720.166666666666667,0.1079950829340410.0833333333333333,0.04145148920243210.0555555555555556,0.03246841775448150.166666666666667,0.1368894902016420.0277777777777778,0.0006496470189925190.0277777777777778,0.1204450938454060.194444444444444,0.1814699742182840.111111111111111,0.2173820972872550.0277777777777778,0.1292137251035280.0277777777777778,0.08900376719866550.0555555555555556,0.07119828897573660,0.0475830876959250.0555555555555556,0.08799456380631310.0555555555555556,0.1058189600619760.0277777777777778,0.02948231301827110.0833333333333333,0.1695515524937860.0555555555555556,0.07632111350817610.0277777777777778,0.03100756200994710.388888888888889,0.2991047852603220,0.01000456409248480,0.1223611891773110.0833333333333333,0.05572220049652890,00.0277777777777778,0.0789292212944890.138888888888889,0.02685845886247730.305555555555556,0.2801968065326690.0277777777777778,0.04300588718790150.138888888888889,0.1833360626184190,0.002143835162675310.333333333333333,0.3847773123670640.0555555555555556,0.03421824840278230.0277777777777778,0.03223207976698480.194444444444444,0.1148384642794190.361111111111111,0.07274882668034250.444444444444444,0.1942424555992960.0277777777777778,0.01439395082333980,0.003910452491755990.638888888888889,0.4110826798074390.527777777777778,0.325851597034520.305555555555556,0.6923589573524380.138888888888889,0.07845177709780340.305555555555556,0.271228876679620.0277777777777778,0.06302882452687320.0555555555555556,0.03597317767982510.138888888888889,0.02084890712752530.0277777777777778,0.006597480789639890.194444444444444,0.2092231965279060.0833333333333333,0.01517684822066230,0.01047751698589010.194444444444444,0.0435093827247340.277777777777778,0.3673923892728330.138888888888889,0.09650467450276190,00,0.05798215494759350.111111111111111,0.01188438757009860,0.1066212647104480.166666666666667,0.0289668673070610,0.03124862013983240.0833333333333333,0.05692875410750240.361111111111111,0.1985023941666410.222222222222222,0.03095782195193710.388888888888889,0.1314492007813880.0555555555555556,0.04789985632716790.166666666666667,0.05550500143712990.0277777777777778,0.05873560047256660,0.07512566922339140.111111111111111,0.06359355610614120,0.1003546711069870.0555555555555556,0.1136453839701060.111111111111111,0.09147111747437090.0833333333333333,0.05560371831058490.138888888888889,0.07108596557791440.138888888888889,0.01494653432195790,0.03390778243094620,0.0758934015133780,0.008501968975598770.0555555555555556,0.091845311981460,0.003498456263738360.166666666666667,0.1533784001222840,0.004336092533621350.0277777777777778,0.04054666787368720.0555555555555556,0.06090419351171780,0.01975322780699020,0.01814381275858290.0555555555555556,0.03590261919123510.0555555555555556,0.0374101556486820.0555555555555556,0.006898828779121580,0.0078294687856820.0833333333333333,0.1018948844661750.0833333333333333,0.04987730162772750.0555555555555556,0.1704298485524020.194444444444444,0.1600955286661430.166666666666667,0.1189474144208420.166666666666667,0.06497110142664820.0833333333333333,0.04479855101848050,0.05069491777783120,0.01034241232848460.0555555555555556,0.1061646919387110.0277777777777778,0.03022065785934580.0277777777777778,0.03951667112935340.0277777777777778,0.00688625840132070,0.01588524782100690,00.0555555555555556,0.02054711864083560.138888888888889,0.03836551459479440,0.0181601019758420.222222222222222,0.1878173647257880.0277777777777778,0.01602717658259240.111111111111111,0.02232890879359310,0.06684869580120820.0555555555555556,0.07609329375958390,0.008088105386456860.138888888888889,0.0723458555509520.0833333333333333,0.08953052358789250.0833333333333333,0.0136353635203440,0.03914954780036620.166666666666667,0.2276994015767490.166666666666667,0.2276471397500420.166666666666667,0.1546054577072090.0833333333333333,0.03188807675229020,0.06352721830696910.0277777777777778,0.02399615419338940.0277777777777778,0.008352299328415360.305555555555556,0.09689637423812090.0555555555555556,0.1037668486936490.138888888888889,0.1286325354275250.138888888888889,0.01146230691476780.222222222222222,0.3301403791822830.0833333333333333,0.2047523232973060.0555555555555556,0.1292425901542520.0833333333333333,0.03035052586407710.222222222222222,0.2335976123140770.166666666666667,0.0855410217140160,0.02223768902603180.111111111111111,0.0167161381781870.0277777777777778,0.03751298337497150,0.03132289497156660.0277777777777778,0.04803657447988230,0.005421817805524140.0555555555555556,0.0318158271523560.0277777777777778,0.01267044055926390.0555555555555556,0.04993831345912170.0555555555555556,0.06653767515015980,00.25,0.1865616266939560,0.01119892560500360,0.02181421181332490.138888888888889,0.04750677319307810,0.0006496470189925190.0833333333333333,0.04565807861690820,0.008575340650701260.0277777777777778,0.0309308843927940.138888888888889,0.02538495726713270,0.0314429157192380,0.001299294037985040,0.01197006106121160.0277777777777778,0.04997907361241740,0.006399206038615460,0.06840163193388290.0277777777777778,0.09202780172296880.0555555555555556,0.01097594056251580,0.06133532880608760.0555555555555556,0.06699027648219440.0555555555555556,0.007865291241926290.0833333333333333,0.1114607719192860.138888888888889,0.09151075357992690,0.006383495056686660,0.007799145972414650,0.002988376287365590,0.03269914554455330,0.007117119553533560.0277777777777778,0.02315509740767270.111111111111111,0.1344191012104050,0.03269914554455330,0.006212966100246210.0277777777777778,0.2109563128840630,0.05664501414731380,0.02283426000307860.0277777777777778,0.005495568378147670.555555555555556,0.1236886627553450.0555555555555556,0.08461230766221090.0555555555555556,0.1439041448845330.0277777777777778,0.01309112262868150,0.00513221145004090.0555555555555556,00,0.01018454844773940.0555555555555556,0.06751880459280750.111111111111111,0.02769309220262960,0.01920507713651340,0.02424210284514330,0.02115514310543840,0.01103649784318890.0277777777777778,0.06887834158835280.0277777777777778,0.04329412260486370.0833333333333333,0.02123354079951930.194444444444444,0.2858960933815040.138888888888889,0.07976436514348060.166666666666667,0.08682595584062980.25,0.06272442933842780,0.0146423905480190.166666666666667,0.1061350744846040,0.0835846673368370.0277777777777778,0.03689221103893710,0.02413920389037910.0277777777777778,0.03416143019746660.0277777777777778,0.3992193240763450,0.02458824356297170,0.1097768671656820.0277777777777778,10.0833333333333333,0.02368317634115550.0833333333333333,0.03501490256066780,0.03775405415131130,0.02696041034503650.0833333333333333,0.1421290598231410.166666666666667,0.4832939917802470.0555555555555556,0.03037690588953460.111111111111111,0.1633492499365130.166666666666667,0.06251003150387930,0.0192153836902720.0833333333333333,0.05152841188530450,0.01874967424714980.0555555555555556,0.046097096011620.0277777777777778,0.01000861002552210.444444444444444,0.8606034223100310.194444444444444,0.08410896147183810.0277777777777778,0.004418077384957320,0.02245796694369910.0277777777777778,0.04624979485113830.111111111111111,0.07591190075661740.0277777777777778,00.0833333333333333,0.03273125157494290.0277777777777778,0.005122840673670610.0277777777777778,0.01817311720934180.0277777777777778,0.01817311720934180.0277777777777778,0.04276805211489210.0277777777777778,0.02452895319809270,0.001452654895847370.0277777777777778,0.03042869081328380.0277777777777778,0.01817311720934180.111111111111111,0.0305084749402230.0833333333333333,0.02931470395183260.0833333333333333,0.03758219409004170.0555555555555556,0.10331040933420,0.01052428170767880.0277777777777778,0.03584599573122450.0277777777777778,0.03584599573122450.0277777777777778,0.05536130168097440.138888888888889,0.1462642861387080.0555555555555556,0.03685904786743020,0.004627566637960480.444444444444444,0.1564368800756730.138888888888889,0.03837171046975560.0277777777777778,0.0993582634468010,0.2279239887278570.472222222222222,0.1791532405712860.0277777777777778,0.01567104280343060.0555555555555556,0.02026440354696840,0.006366540786126690.0555555555555556,0.0456308548464420.0555555555555556,0.06994589193068190.194444444444444,0.05563828675376140.222222222222222,0.1022034828909920,0.03918545059946340.0555555555555556,0.04840506992386580.194444444444444,0.2795554650375370.0833333333333333,0.0874603218432620.166666666666667,0.04911224093837410.0555555555555556,0.09889286092208680.138888888888889,0.1985076502181560.138888888888889,0.07076768607964730,0.002988376287365590.0277777777777778,00.138888888888889,0.02219848847216120.0277777777777778,0.176254070755530,0.008249880171133380.138888888888889,00.0277777777777778,0.006715214417469330.0833333333333333,0.09917561781343290.0833333333333333,0.005473244537274720.111111111111111,0.02489045963737650.0833333333333333,0.0137237751902530,0.0006496470189925190.0555555555555556,0.08261551520610240.0833333333333333,0.04123486475806960.0277777777777778,0.02274761193924010.138888888888889,0.06863961974418520,0.01655493673792450.0277777777777778,00.0555555555555556,0.02866159642695190,0.002078870460776060.0277777777777778,0.1060875160853610,0.02495062502972790,0.00324823509496260.0277777777777778,00.138888888888889,0.09942006246916530.0277777777777778,0.1284530351420810.138888888888889,0.105010228781550.111111111111111,0.0565981722673650,0.003990121630648520,0.01373150449230790.0555555555555556,0.07042427968526570.0277777777777778,0.03665117746138670.0555555555555556,0.07289039553096070.111111111111111,0.07480841255570170.0277777777777778,0.1142060922031450.0277777777777778,0.05942822949176540.0277777777777778,0.0427709327319620.0555555555555556,0.1581652727327680.0555555555555556,0.1469393497482870.0277777777777778,0.01739109781827860,0.04933601230845960.0277777777777778,0.003573058604458860,0.0215563414402520.111111111111111,0.01884537541637450,0.01872436841867070.0277777777777778,0.0535933533743840.25,00,00,0.02188898916254490.0277777777777778,0.1163164238376820.222222222222222,0.1100999105283160.138888888888889,0.09001471608409390.0833333333333333,0.06117252837196030.111111111111111,0.007187907019252310,0.04341060666436980.25,0.2392733972728610.0555555555555556,0.08796377068604530,0.006106681978529680,0.01250548263166270.111111111111111,0.1038273068448810,0.00324823509496260,0.008575340650701250.166666666666667,0.07204785775909260,0.03080679708850140,0.0386046902543460.0555555555555556,0.3033097730774730,0.01527625450335070.0555555555555556,0.09109456757491980.0277777777777778,0.1391735251100170.0833333333333333,0.04570851757725970.0277777777777778,0.08631152080406670.0833333333333333,0.02939961831116430,0.02728438090375380,0.08959726975024420.0277777777777778,0.01710152502607130,0.02822782596292530,0.02491008412641140.0277777777777778,0.006428551868817120.0833333333333333,0.03937768299737360.0833333333333333,0.03530100609572450.0277777777777778,0.007243475511511290.0833333333333333,0.06255791417857560,0.01943013519278990.0277777777777778,0.03153630022275520,0.01387005266798550.0277777777777778,0.03825580642045080.333333333333333,0.2049966359189530.0833333333333333,0.08240045095669970,0.004409189735678110.0555555555555556,0.1510831290732970.0277777777777778,0.07676208911390960,0.05379087878012170.166666666666667,0.06185557429784090.0833333333333333,0.04170078118307920.0555555555555556,0.02382186521825060.0833333333333333,0.04148915896927780.0555555555555556,0.01009249887974760.0277777777777778,0.01150780492975440,0.004829574209786090,0.01513817714582470.0555555555555556,0.04964236938919360,0.01600201562809340.0277777777777778,0.0286656631944750.0555555555555556,0.07327637143076990.0277777777777778,0.02715524539388730.0555555555555556,0.06147733922403310.0277777777777778,0.02652371577129990.138888888888889,0.1033621121681820.0555555555555556,0.09086267782389140,0.01915083167927880.111111111111111,0.08029530120394110.0555555555555556,0.1644318514751730,0.01132928569739380.0833333333333333,0.1009688542521940,0.05256413645413810.0833333333333333,0.1152910971269570.0555555555555556,0.1077938112671180.0277777777777778,0.03629334502929440.0277777777777778,0.01950063076267860,0.0006496470189925190.0277777777777778,0.02350809792060960.194444444444444,0.04669361307794870,0.01922215827053670.277777777777778,0.1894177591836540.138888888888889,0.06508184638014060,0.002952001920181840.0277777777777778,0.0114458019065740,0.03269489146539170,0.00337816449876110.0833333333333333,0.02897315002123210.111111111111111,0.1120948558262280,0.06551805330943550.0833333333333333,0.007432792706241780.0277777777777778,0.09834799351560140.0833333333333333,0.007276046612716220.0555555555555556,0.01434707230895490.0277777777777778,0.06160845524359740,0.001568386644006990,0.01111689340129910,0.01806856400430610,0.01647380347443570,0.01978652241706490.0277777777777778,0.01811040333434920.0833333333333333,0.1320459737510950.0277777777777778,0.0206442849824960.0277777777777778,0.06062061903547060,0.02303368136110540,0.004550910877452060,0.03264435231802340,0.009271035257746160.0555555555555556,0.03983966946941430,0.009271035257746160,0.05940371269009190,0.004550910877452060.0833333333333333,0.05672910119802340,0.005867045951228340.0833333333333333,0.306707178696380,0.01701102455923460.0555555555555556,0.07059018604982110.0277777777777778,0.07468833813973850,0.052289070644680.0555555555555556,0.03222215007674960,0.007300034473895420,0.008044293269805720.0277777777777778,0.1837713611192760.0277777777777778,0.06654462141160660.0277777777777778,0.0529166671676440,0.06166292896085070.0277777777777778,0.07249476753515060,0.003834905506593210.0555555555555556,0.04106351308829050.0277777777777778,0.03460552407169720.0277777777777778,0.03034788402838680,0.03091565597332390.0555555555555556,0.02926209845469490.0277777777777778,0.007818769042223260.0277777777777778,0.02534819231570390.0277777777777778,0.02808348024720660.0277777777777778,0.009273289008109320.0277777777777778,0.03594673931098640.0277777777777778,0.03638462735983730.0277777777777778,0.03053405929672850.0277777777777778,0.06017685031092510.0277777777777778,0.13465322348020,0.0274155852747360,0.01734691357967820,0.006106681978529680,0.03163047045871610,00.0277777777777778,0.006119876924103760.0833333333333333,0.02537400823896850,0.0009187396250144720,0.002259800680670530,0.002598588075970080.0277777777777778,0.01958287638106430.0277777777777778,0.0408483005777180.111111111111111,0.0937064514727450.111111111111111,0.01385365865063080.0277777777777778,0.06161190222313890.0277777777777778,00.0277777777777778,0.01214375727855150.0277777777777778,0.02448748568106660.0833333333333333,0.01663066683767780.111111111111111,0.00907235845156050.0833333333333333,0.06695887286385350.0277777777777778,0.07247943992200830.0277777777777778,00.0277777777777778,0.01325348243490640,0.2662721714633420,0.01218828055925790.0277777777777778,0.1385810567387830,0.02952756117350190,0.071144197876210,0.01842016537958090.0277777777777778,0.0103919203150990.0277777777777778,0.04248940313192420.0277777777777778,0.006380470314058380.0277777777777778,0.01521779201498530.0277777777777778,0.02151545365966910.0555555555555556,0.05550629766196980.0277777777777778,0.001299294037985040.0277777777777778,0.005521999661436410.0277777777777778,0.001299294037985040.0277777777777778,0.001299294037985040.0277777777777778,0.001299294037985040.0277777777777778,0.04620309280590990,0.006341965866901450,0.04915505583180440,0.01126237103699340.0277777777777778,0.02569104767980420,0.03103133713940330,0.04438776506119210,0.007378988986037150,0.002735838895923610,0.009939599390585540.0277777777777778,0.03352250304953130.111111111111111,0.0134775554183620.0833333333333333,0.08898274772913350.0277777777777778,0.0252509759374590.0277777777777778,0.01164764493085280,0.02275243519473960,0.03696875519267930.0277777777777778,0.1310420272313740.0555555555555556,0.02941416767920270,0.1164518915462540.0277777777777778,0.0490120337114320,0.04519482596381170.0277777777777778,0.02456092385334250.0555555555555556,0.1121412536833730.0277777777777778,0.09992034407906840,00,00,00,0.005178146577757130,0.2028642542071140.0833333333333333,0.3717233481690810.0555555555555556,0.01138477512302630.0277777777777778,0.1671953611150550.0277777777777778,0.02060912362266050,0.01534162448569630,0.008110940228712570.0277777777777778,0.08868863721212260,0.03281559315206350.0277777777777778,0.02393520315710730.0555555555555556,0.04111851480736240.0555555555555556,0.002218033662999510.0277777777777778,0.07085377752477890,0.0408498393302520.0833333333333333,0.09580209813331180,0.01142778475966010,0.001299294037985040,0.001299294037985040.0277777777777778,0.03761637507164310.0277777777777778,0.00765820684553940,0.005395196506070030.0555555555555556,0.1214508074539570,0.04462085527387260,0.008475045919410140,0.009582293530139660.0277777777777778,0.09725941123209850,0.07803324575665150,0.01357762269694370.0277777777777778,00.0555555555555556,0.02736639419640390.111111111111111,0.009923969318521810.111111111111111,0.06937265365099640.138888888888889,0.01691471956761090,0.06368644226512980,0.04670624439701320.0555555555555556,0.01697504692722730.0555555555555556,0.05067830979742920.0277777777777778,0.0232291914560870.111111111111111,0.083573645354890,0.2154145728697890,00.0833333333333333,0.5433317581888840,0.008575340650701250.0555555555555556,00,0.00324823509496260,0.01610548141577330,0.03243923647443550,0.07550057586471450,0.05775211609837680,0.009833367575351340,0.06749911695776320,0.02155007606776380,0.006665866021222340,0.01564096829432550,0.1246540942241720,0.07794657257530050,0.04104698039725650,0.02300750395205330,0.1193319536664670,0.04287593955109510,0.02241975603282890,0.02493079350816760,0.03985842448835070,0.01411163085519520.0555555555555556,0.02218824539762060,0.02826348741382520,0.02171478214468310.0277777777777778,0.1234978601607330,0.02681906387757620,0.01001713447028570,0.05082672667183980,0.00939786290114430,0.004745924987482590,0.04766000821587590,0.01051394704942330,0.0289194817355760,0.01042338376663230,0.02274525005224840,0.03769943515335330,0.01435034618652720,0.03112356692569030,0.00337816449876110,0.00337816449876110,0.007119138680216960,0.01123889342857060,0.00337816449876110,0.00337816449876110,0.004287670325350630,0.03082311279021550,0.03136109429346680,0.001429223441783540,0.00503087238095790,0.02587650861134280,0.02010537888579510,0.02802040905782990,0.01000464346438160,0.006543921979349990,0.02200477484037470,0.0916113386950450,0.03879461545612010,0.02661401810836430,0.04026478941295410,0.07638606852626540,0.02752441879943270.0833333333333333,0.01360150107124510.0555555555555556,0.04263296560080240.111111111111111,0.02075677708956010,0.01488991855941720.138888888888889,0.02296131733461430,0.02647113347486490,0.04974582058406130,0.03653863733748070,0.001299294037985040,0.0250148688631530,0.01644212945459340,0.02324168441948870,0.05263973579253920,0.00354024476642940,0.01815945076751690,0.0292083460995610,0.02800309826673320.0555555555555556,0.05860734582850160,0.02697971907045820,0.09225721927997730,0.01717486539412830.0555555555555556,0.05526511096253360,0.003777917883632570,0.009105645348784950,0.08122185314023120.0277777777777778,0.1925647719636710,0.03311098647834270,0.03407982160966230,0.04123916734060340.0277777777777778,0.05598016266828120.111111111111111,0.02535625068843570,0.004889204921329780,0.03334507029915480,0.02207029912090210,0.001494188143682790,0.1848800858295520,0.08319477067903930.0277777777777778,0.02494845550381110,0.0124204694808810,0.009758496081220080,0.007325867182069240,0.0424143599313950,0.01513008670995350.0277777777777778,0.01289879123833120,0.1305092144918830,0.02542907354944280,0.06498054418848460,0.05784096796193330,0.123767651141330,0.009385194569399120,0.05096395247503820,0.008349197190718410,0.09282599577008060,0.04531177401405370,0.02520716882929960,0.03585357035875020,0.01354082907052570,0.03388994756987410,0.005517529163427450,0.01813281434947280,0.1275943104242660,0.1172768483858290,0.04385327310874580,0.04292688742036820,0.1283462235565360,0.01302711011944180,0.04344516770980,0.04859849604251710,0.005469748742999160,0.02465874639635990,0.01430465212781050,0.009458876138303560,0.01406561173411780,0.006662542652750840.0277777777777778,0.05579137168664260,0.04996150085255840,0.03403899301014260,0.03687562664159850,0.01720184344767140,0.01875095862191520,0.01165628532522730,0.01835897804892950,0.0006496470189925190,0.01897314803512170,0.07631326559004120,0.09025186750521710,0.04412285439364840.0277777777777778,0.02414047413881690.0277777777777778,0.02869996646736370,0.04811193616432380,0.01717592496974580,0.0227139619363560.0277777777777778,0.04135571522841460,0.01385827640162110,0.008185635314524270.0277777777777778,0.01891045584657870.0833333333333333,0.0711413053703190,0.005302090871998670,0.01017959976124830,0.04655717949005990,0.001452654895847370,0.01494406002388850.0555555555555556,0.03147610118401920,0.01367522248699420,00.0277777777777778,0.002370893134286890,0.001725225308407690,0.01913564496768620.0555555555555556,0.02530043264787220,0.005787188129325650.0277777777777778,0.009423274131881630.0555555555555556,0.1945889729860830,0.04279826898441050,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.002403693970272320,0.007560507046705120,0.003219413452090490.0555555555555556,0.02367613750187750.111111111111111,0.01093311945807750,0.01735599303621340,00,0.009898222292527430,0.04026807842966220,0.03530519261583030,0.05111621951048110,0.0183615422854624

Cohupling Detection

👛 Use git history to find methods that change together

😬
$ git log --name-only --format="format:--> %aI %H %P" --since="01 01 2018" origin/main

--> 2020-03-06T10:01:14-05:00 2dcf07a53aeebb0f63c44feba69bd215f983a1e2 150fcf7b37dfc3fef2be87542b2803343b3b935d
railties/test/application/rake/dbs_test.rb

--> 2020-03-06T09:33:18-05:00 150fcf7b37dfc3fef2be87542b2803343b3b935d 712cee174161bf03cd05df8a10bd571b3657781c
railties/test/isolation/abstract_unit.rb

--> 2020-03-06T08:40:28-05:00 712cee174161bf03cd05df8a10bd571b3657781c 82d7e3e21708dcb21b47198f996cf3ec9f372612 3b882deb0c125f6ee4781b261ab04e17afc7b07e
--> 2020-03-05T18:20:51-05:00 82d7e3e21708dcb21b47198f996cf3ec9f372612 cfd1ed5a324cfa571fef96f2da0b35558b232f0d 2d37ea04c801245061baaca9703d1de48413fb0f
--> 2020-03-05T18:15:47-05:00 2d37ea04c801245061baaca9703d1de48413fb0f cfd1ed5a324cfa571fef96f2da0b35558b232f0d
activerecord/lib/active_record/railties/databases.rake
$ git log --name-only --format="format:--> %aI %H %P" --since="01 01 2018" origin/main

--> 2020-03-06T10:01:14-05:00 2dcf07a53aeebb0f63c44feba69bd215f983a1e2 150fcf7b37dfc3fef2be87542b2803343b3b935d
railties/test/application/rake/dbs_test.rb

--> 2020-03-06T09:33:18-05:00 150fcf7b37dfc3fef2be87542b2803343b3b935d 712cee174161bf03cd05df8a10bd571b3657781c
railties/test/isolation/abstract_unit.rb

--> 2020-03-06T08:40:28-05:00 712cee174161bf03cd05df8a10bd571b3657781c 82d7e3e21708dcb21b47198f996cf3ec9f372612
--> 2020-03-05T18:20:51-05:00 82d7e3e21708dcb21b47198f996cf3ec9f372612 cfd1ed5a324cfa571fef96f2da0b35558b232f0d
--> 2020-03-05T18:15:47-05:00 2d37ea04c801245061baaca9703d1de48413fb0f cfd1ed5a324cfa571fef96f2da0b35558b232f0d
activerecord/lib/active_record/railties/databases.rake
                                       --> %aI

--> 2020-03-06T10:01:14-05:00


--> 2020-03-06T09:33:18-05:00


--> 2020-03-06T08:40:28-05:00
--> 2020-03-05T18:20:51-05:00
--> 2020-03-05T18:15:47-05:00
$ git log --name-only --format="format:--> %aI %H %P" --since="01 01 2018" origin/main

--> 2020-03-06T10:01:14-05:00 2dcf07a53aeebb0f63c44feba69bd215f983a1e2 150fcf7b37dfc3fef2be87542b2803343b3b935d
railties/test/application/rake/dbs_test.rb

--> 2020-03-06T09:33:18-05:00 150fcf7b37dfc3fef2be87542b2803343b3b935d 712cee174161bf03cd05df8a10bd571b3657781c
railties/test/isolation/abstract_unit.rb

--> 2020-03-06T08:40:28-05:00 712cee174161bf03cd05df8a10bd571b3657781c 3b882deb0c125f6ee4781b261ab04e17afc7b07e
--> 2020-03-05T18:20:51-05:00 82d7e3e21708dcb21b47198f996cf3ec9f372612 cfd1ed5a324cfa571fef96f2da0b35558b232f0d
--> 2020-03-05T18:15:47-05:00 2d37ea04c801245061baaca9703d1de48413fb0f cfd1ed5a324cfa571fef96f2da0b35558b232f0d
activerecord/lib/active_record/railties/databases.rake
                                               %H

                              2dcf07a53aeebb0f63c44feba69bd215f983a1e2


                              150fcf7b37dfc3fef2be87542b2803343b3b935d


                              712cee174161bf03cd05df8a10bd571b3657781c
                              82d7e3e21708dcb21b47198f996cf3ec9f372612
                              2d37ea04c801245061baaca9703d1de48413fb0f
$ git log --name-only --format="format:--> %aI %H %P" --since="01 01 2018" origin/main

--> 2020-03-06T10:01:14-05:00 2dcf07a53aeebb0f63c44feba69bd215f983a1e2 150fcf7b37dfc3fef2be87542b2803343b3b935d
railties/test/application/rake/dbs_test.rb

--> 2020-03-06T09:33:18-05:00 150fcf7b37dfc3fef2be87542b2803343b3b935d 712cee174161bf03cd05df8a10bd571b3657781c
railties/test/isolation/abstract_unit.rb

--> 2020-03-06T08:40:28-05:00 712cee174161bf03cd05df8a10bd571b3657781c 3b882deb0c125f6ee4781b261ab04e17afc7b07e
--> 2020-03-05T18:20:51-05:00 82d7e3e21708dcb21b47198f996cf3ec9f372612 cfd1ed5a324cfa571fef96f2da0b35558b232f0d
--> 2020-03-05T18:15:47-05:00 2d37ea04c801245061baaca9703d1de48413fb0f cfd1ed5a324cfa571fef96f2da0b35558b232f0d
activerecord/lib/active_record/railties/databases.rake
                                                  %P

                                                                       150fcf7b37dfc3fef2be87542b2803343b3b935d


                                                                       712cee174161bf03cd05df8a10bd571b3657781c


                                                                       3b882deb0c125f6ee4781b261ab04e17afc7b07e
                                                                       cfd1ed5a324cfa571fef96f2da0b35558b232f0d
                                                                       cfd1ed5a324cfa571fef96f2da0b35558b232f0d
$ git log --name-only --format="format:--> %aI %H %P" --since="01 01 2018" origin/main

--> 2020-03-06T10:01:14-05:00 2dcf07a53aeebb0f63c44feba69bd215f983a1e2 150fcf7b37dfc3fef2be87542b2803343b3b935d
railties/test/application/rake/dbs_test.rb

--> 2020-03-06T09:33:18-05:00 150fcf7b37dfc3fef2be87542b2803343b3b935d 712cee174161bf03cd05df8a10bd571b3657781c
railties/test/isolation/abstract_unit.rb

--> 2020-03-06T08:40:28-05:00 712cee174161bf03cd05df8a10bd571b3657781c 3b882deb0c125f6ee4781b261ab04e17afc7b07e
--> 2020-03-05T18:20:51-05:00 82d7e3e21708dcb21b47198f996cf3ec9f372612 cfd1ed5a324cfa571fef96f2da0b35558b232f0d
--> 2020-03-05T18:15:47-05:00 2d37ea04c801245061baaca9703d1de48413fb0f cfd1ed5a324cfa571fef96f2da0b35558b232f0d
activerecord/lib/active_record/railties/databases.rake
$ ~/bin/find_cohesive_changes.rb activerecord/lib/active_record/core.rb
[
  {
    "github_url": "https://github.com/rails/rails/pull/38646",
    "targeted_methods": [
      "ActiveRecord::Core::ClassMethods.find_by"
    ],
    "associated_methods": [
      "ActionView::CollectionCaching.fetch_or_cache_partial",
      "ActiveRecord::Associations::Preloader::AlreadyLoaded.records_by_owner",
      "ActiveRecord::AttributeMethods.attributes_with_values",
      "ActiveRecord::Calculations.execute_grouped_calculation",
      "ActiveRecord::InsertAll::Builder.extract_types_from_columns_on",
      "ActiveRecord::TestFixtures.load_fixtures",
      "ActiveSupport::Cache::MemCacheStore.read_multi_entries",
      "ActiveSupport::Cache::Store.fetch_multi",
      "ActiveSupport::CurrentAttributes.compute_attributes",
      "ActiveSupport::Testing::Assertions.assert_difference",
      "FakeRecord::Connection.initialize",
      "Rails::Generators.find_by_namespace"
    ]
  },
  ...
]
$ ~/bin/find_cohesive_changes.rb activerecord/lib/active_record/core.rb
[
  {
    "github_url": "https://github.com/rails/rails/pull/38646",
    "targeted_methods": [
      "ActiveRecord::Core::ClassMethods.find_by"
    ],
    "associated_methods": [
      "ActionView::CollectionCaching.fetch_or_cache_partial",
      "ActiveRecord::Associations::Preloader::AlreadyLoaded.records_by_owner",
      "ActiveRecord::AttributeMethods.attributes_with_values",
      "ActiveRecord::Calculations.execute_grouped_calculation",
      "ActiveRecord::InsertAll::Builder.extract_types_from_columns_on",
      "ActiveRecord::TestFixtures.load_fixtures",
      "ActiveSupport::Cache::MemCacheStore.read_multi_entries",
      "ActiveSupport::Cache::Store.fetch_multi",
      "ActiveSupport::CurrentAttributes.compute_attributes",
      "ActiveSupport::Testing::Assertions.assert_difference",
      "FakeRecord::Connection.initialize",
      "Rails::Generators.find_by_namespace"
    ]
  },
  ...
]
$ ~/bin/find_cohesive_changes.rb activerecord/lib/active_record/core.rb
[
  {
    "github_url": "https://github.com/rails/rails/pull/38646",
    "targeted_methods": [
      "ActiveRecord::Core::ClassMethods.find_by"
    ],
    "associated_methods": [
      "ActionView::CollectionCaching.fetch_or_cache_partial",
      "ActiveRecord::Associations::Preloader::AlreadyLoaded.records_by_owner",
      "ActiveRecord::AttributeMethods.attributes_with_values",
      "ActiveRecord::Calculations.execute_grouped_calculation",
      "ActiveRecord::InsertAll::Builder.extract_types_from_columns_on",
      "ActiveRecord::TestFixtures.load_fixtures",
      "ActiveSupport::Cache::MemCacheStore.read_multi_entries",
      "ActiveSupport::Cache::Store.fetch_multi",
      "ActiveSupport::CurrentAttributes.compute_attributes",
      "ActiveSupport::Testing::Assertions.assert_difference",
      "FakeRecord::Connection.initialize",
      "Rails::Generators.find_by_namespace"
    ]
  },
  ...
]
$ git diff --format=oneline --unified=0 <SHA>
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 575d9faf9d..bb961e45f6 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -349 +349 @@ def split_to(to)
-            if to && /#/.match?(to)
+            if /#/.match?(to)
@@ -358 +358 @@ def add_controller_module(controller, modyoule)
-              if controller && controller.to_s.start_with?("/")
+              if controller.to_s.start_with?("/")
@@ -401,3 +401,3 @@ def dispatcher(raise_on_name_error)
-      # Invokes Journey::Router::Utils.normalize_path and ensure that
-      # (:locale) becomes (/:locale) instead of /(:locale). Except
-      # for root cases, where the latter is the correct one.
+      # Invokes Journey::Router::Utils.normalize_path, then ensures that
+      # /(:locale) becomes (/:locale). Except for root cases, where the
+      # former is the correct one.
@@ -406 +406,12 @@ def self.normalize_path(path)
-        path.gsub!(%r{/(\(+)/?}, '\1/') unless %r{^/(\(+[^)]+\)){1,}$}.match?(path)
+
+        # the path for a root URL at this point can be something like
+        # "/(/:locale)(/:platform)/(:browser)", and we would want
+        # "/(:locale)(/:platform)(/:browser)"
+
+        # reverse "/(", "/((" etc to "(/", "((/" etc
+        path.gsub!(%r{/(\(+)/?}, '\1/')
+        # if a path is all optional segments, change the leading "(/" back to
+        # "/(" so it evaluates to "/" when interpreted with no options.
+        # Unless, however, at least one secondary segment consists of a static
+        # part, ex. "(/:locale)(/pages/:page)"
+        path.sub!(%r{^(\(+)/}, '/\1') if %r{^(\(+[^)]+\))(\(+/:[^)]+\))*$}.match?(path)
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 575d9faf9d..bb961e45f6 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -349 +349 @@ def split_to(to)
-            if to && /#/.match?(to)
+            if /#/.match?(to)
@@ -358 +358 @@ def add_controller_module(controller, modyoule)
-              if controller && controller.to_s.start_with?("/")
+              if controller.to_s.start_with?("/")
@@ -401,3 +401,3 @@ def dispatcher(raise_on_name_error)
-      # Invokes Journey::Router::Utils.normalize_path and ensure that
-      # (:locale) becomes (/:locale) instead of /(:locale). Except
-      # for root cases, where the latter is the correct one.
+      # Invokes Journey::Router::Utils.normalize_path, then ensures that
+      # /(:locale) becomes (/:locale). Except for root cases, where the
+      # former is the correct one.
@@ -406 +406,12 @@ def self.normalize_path(path)
-        path.gsub!(%r{/(\(+)/?}, '\1/') unless %r{^/(\(+[^)]+\)){1,}$}.match?(path)
+
+        # the path for a root URL at this point can be something like
+        # "/(/:locale)(/:platform)/(:browser)", and we would want
+        # "/(:locale)(/:platform)(/:browser)"
+
+        # reverse "/(", "/((" etc to "(/", "((/" etc
+        path.gsub!(%r{/(\(+)/?}, '\1/')
+        # if a path is all optional segments, change the leading "(/" back to
+        # "/(" so it evaluates to "/" when interpreted with no options.
+        # Unless, however, at least one secondary segment consists of a static
+        # part, ex. "(/:locale)(/pages/:page)"
+        path.sub!(%r{^(\(+)/}, '/\1') if %r{^(\(+[^)]+\))(\(+/:[^)]+\))*$}.match?(path)
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 575d9faf9d..bb961e45f6 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -349 +349 @@ def split_to(to)
-            if to && /#/.match?(to)
+            if /#/.match?(to)
@@ -358 +358 @@ def add_controller_module(controller, modyoule)
-              if controller && controller.to_s.start_with?("/")
+              if controller.to_s.start_with?("/")
@@ -401,3 +401,3 @@ def dispatcher(raise_on_name_error)
-      # Invokes Journey::Router::Utils.normalize_path and ensure that
-      # (:locale) becomes (/:locale) instead of /(:locale). Except
-      # for root cases, where the latter is the correct one.
+      # Invokes Journey::Router::Utils.normalize_path, then ensures that
+      # /(:locale) becomes (/:locale). Except for root cases, where the
+      # former is the correct one.
@@ -406 +406,12 @@ def self.normalize_path(path)
-        path.gsub!(%r{/(\(+)/?}, '\1/') unless %r{^/(\(+[^)]+\)){1,}$}.match?(path)
+
+        # the path for a root URL at this point can be something like
+        # "/(/:locale)(/:platform)/(:browser)", and we would want
+        # "/(:locale)(/:platform)(/:browser)"
+
+        # reverse "/(", "/((" etc to "(/", "((/" etc
+        path.gsub!(%r{/(\(+)/?}, '\1/')
+        # if a path is all optional segments, change the leading "(/" back to
+        # "/(" so it evaluates to "/" when interpreted with no options.
+        # Unless, however, at least one secondary segment consists of a static
+        # part, ex. "(/:locale)(/pages/:page)"
+        path.sub!(%r{^(\(+)/}, '/\1') if %r{^(\(+[^)]+\))(\(+/:[^)]+\))*$}.match?(path)
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 575d9faf9d..bb961e45f6 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -349 +349 @@ def split_to(to)
-            if to && /#/.match?(to)
+            if /#/.match?(to)
@@ -358 +358 @@ def add_controller_module(controller, modyoule)
-              if controller && controller.to_s.start_with?("/")
+              if controller.to_s.start_with?("/")
@@ -401,3 +401,3 @@ def dispatcher(raise_on_name_error)
-      # Invokes Journey::Router::Utils.normalize_path and ensure that
-      # (:locale) becomes (/:locale) instead of /(:locale). Except
-      # for root cases, where the latter is the correct one.
+      # Invokes Journey::Router::Utils.normalize_path, then ensures that
+      # /(:locale) becomes (/:locale). Except for root cases, where the
+      # former is the correct one.
@@ -406 +406,12 @@ def self.normalize_path(path)
-        path.gsub!(%r{/(\(+)/?}, '\1/') unless %r{^/(\(+[^)]+\)){1,}$}.match?(path)
+
+        # the path for a root URL at this point can be something like
+        # "/(/:locale)(/:platform)/(:browser)", and we would want
+        # "/(:locale)(/:platform)(/:browser)"
+
+        # reverse "/(", "/((" etc to "(/", "((/" etc
+        path.gsub!(%r{/(\(+)/?}, '\1/')
+        # if a path is all optional segments, change the leading "(/" back to
+        # "/(" so it evaluates to "/" when interpreted with no options.
+        # Unless, however, at least one secondary segment consists of a static
+        # part, ex. "(/:locale)(/pages/:page)"
+        path.sub!(%r{^(\(+)/}, '/\1') if %r{^(\(+[^)]+\))(\(+/:[^)]+\))*$}.match?(path)
$ ~/bin/find_cohesive_changes.rb activerecord/lib/active_record/core.rb
[
  {
    "github_url": "https://github.com/rails/rails/pull/38646",
    "targeted_methods": [
      "ActiveRecord::Core::ClassMethods.find_by"
    ],
    "associated_methods": [
      "ActionView::CollectionCaching.fetch_or_cache_partial",
      "ActiveRecord::Associations::Preloader::AlreadyLoaded.records_by_owner",
      "ActiveRecord::AttributeMethods.attributes_with_values",
      "ActiveRecord::Calculations.execute_grouped_calculation",
      "ActiveRecord::InsertAll::Builder.extract_types_from_columns_on",
      "ActiveRecord::TestFixtures.load_fixtures",
      "ActiveSupport::Cache::MemCacheStore.read_multi_entries",
      "ActiveSupport::Cache::Store.fetch_multi",
      "ActiveSupport::CurrentAttributes.compute_attributes",
      "ActiveSupport::Testing::Assertions.assert_difference",
      "FakeRecord::Connection.initialize",
      "Rails::Generators.find_by_namespace"
    ]
  },
  ...
]
graph showing related changes
graph showing related changesgraph showing related changes
graph showing related changesgraph showing related changes

Le Fin