{"action":"created","comment":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/27893969","id":27893969,"diff_hunk":"@@ -1,16 +1,15 @@\n module VMDB\n   module Util\n     # load all subclasses recursively\n-    def self.eager_load_subclasses(klass)\n+    def self.eager_load_subclasses(klass, pattern = nil)\n+      pattern ||= \"#{klass.underscore}_*.rb\"\n       ActiveSupport::Dependencies.autoload_paths.each do |root|\n-        Dir.glob(File.join(root, \"#{klass.underscore}_*.rb\")).sort.each do |file|\n-          name = File.basename(file, '.*')\n-          if name =~ /^#{klass.underscore}_[^_]*$/  # filter out sub-subclasses\n-            require_dependency file\n-          end\n+        Dir.glob(File.join(root, pattern)).each do |file|\n+          parent_class = File.read(file).lines.detect { |l| l.start_with?(\"class \") }.to_s.split[3]","path":"vmdb/lib/vmdb/util.rb","position":14,"original_position":14,"commit_id":"31964c024cc8a88ca6f8069abe2b7e7770e8262f","original_commit_id":"31964c024cc8a88ca6f8069abe2b7e7770e8262f","user":{"login":"Fryguy","id":52120,"avatar_url":"https://avatars.githubusercontent.com/u/52120?v=3","gravatar_id":"","url":"https://api.github.com/users/Fryguy","html_url":"https://github.com/Fryguy","followers_url":"https://api.github.com/users/Fryguy/followers","following_url":"https://api.github.com/users/Fryguy/following{/other_user}","gists_url":"https://api.github.com/users/Fryguy/gists{/gist_id}","starred_url":"https://api.github.com/users/Fryguy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Fryguy/subscriptions","organizations_url":"https://api.github.com/users/Fryguy/orgs","repos_url":"https://api.github.com/users/Fryguy/repos","events_url":"https://api.github.com/users/Fryguy/events{/privacy}","received_events_url":"https://api.github.com/users/Fryguy/received_events","type":"User","site_admin":false},"body":"Also the detect only catches the first defined class in the file, but technically, we shouldn't be doing more than one class/module in a file anyway.","created_at":"2015-04-07T16:21:37Z","updated_at":"2015-04-07T16:21:37Z","html_url":"https://github.com/ManageIQ/manageiq/pull/2543#discussion_r27893969","pull_request_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2543","_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/27893969"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/2543#discussion_r27893969"},"pull_request":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2543"}}},"pull_request":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2543","id":32775471,"html_url":"https://github.com/ManageIQ/manageiq/pull/2543","diff_url":"https://github.com/ManageIQ/manageiq/pull/2543.diff","patch_url":"https://github.com/ManageIQ/manageiq/pull/2543.patch","issue_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/2543","number":2543,"state":"open","locked":false,"title":"Eager loading","user":{"login":"brandondunne","id":651659,"avatar_url":"https://avatars.githubusercontent.com/u/651659?v=3","gravatar_id":"","url":"https://api.github.com/users/brandondunne","html_url":"https://github.com/brandondunne","followers_url":"https://api.github.com/users/brandondunne/followers","following_url":"https://api.github.com/users/brandondunne/following{/other_user}","gists_url":"https://api.github.com/users/brandondunne/gists{/gist_id}","starred_url":"https://api.github.com/users/brandondunne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brandondunne/subscriptions","organizations_url":"https://api.github.com/users/brandondunne/orgs","repos_url":"https://api.github.com/users/brandondunne/repos","events_url":"https://api.github.com/users/brandondunne/events{/privacy}","received_events_url":"https://api.github.com/users/brandondunne/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-04-07T15:31:16Z","updated_at":"2015-04-07T16:21:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0693d7f848b6bd949384bf7b7e41032333a70026","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2543/commits","review_comments_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2543/comments","review_comment_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/2543/comments","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq/statuses/31964c024cc8a88ca6f8069abe2b7e7770e8262f","head":{"label":"brandondunne:eager_loading","ref":"eager_loading","sha":"31964c024cc8a88ca6f8069abe2b7e7770e8262f","user":{"login":"brandondunne","id":651659,"avatar_url":"https://avatars.githubusercontent.com/u/651659?v=3","gravatar_id":"","url":"https://api.github.com/users/brandondunne","html_url":"https://github.com/brandondunne","followers_url":"https://api.github.com/users/brandondunne/followers","following_url":"https://api.github.com/users/brandondunne/following{/other_user}","gists_url":"https://api.github.com/users/brandondunne/gists{/gist_id}","starred_url":"https://api.github.com/users/brandondunne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brandondunne/subscriptions","organizations_url":"https://api.github.com/users/brandondunne/orgs","repos_url":"https://api.github.com/users/brandondunne/repos","events_url":"https://api.github.com/users/brandondunne/events{/privacy}","received_events_url":"https://api.github.com/users/brandondunne/received_events","type":"User","site_admin":false},"repo":{"id":20791794,"name":"manageiq","full_name":"brandondunne/manageiq","owner":{"login":"brandondunne","id":651659,"avatar_url":"https://avatars.githubusercontent.com/u/651659?v=3","gravatar_id":"","url":"https://api.github.com/users/brandondunne","html_url":"https://github.com/brandondunne","followers_url":"https://api.github.com/users/brandondunne/followers","following_url":"https://api.github.com/users/brandondunne/following{/other_user}","gists_url":"https://api.github.com/users/brandondunne/gists{/gist_id}","starred_url":"https://api.github.com/users/brandondunne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brandondunne/subscriptions","organizations_url":"https://api.github.com/users/brandondunne/orgs","repos_url":"https://api.github.com/users/brandondunne/repos","events_url":"https://api.github.com/users/brandondunne/events{/privacy}","received_events_url":"https://api.github.com/users/brandondunne/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/brandondunne/manageiq","description":"ManageIQ Cloud Management Platform","fork":true,"url":"https://api.github.com/repos/brandondunne/manageiq","forks_url":"https://api.github.com/repos/brandondunne/manageiq/forks","keys_url":"https://api.github.com/repos/brandondunne/manageiq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/brandondunne/manageiq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/brandondunne/manageiq/teams","hooks_url":"https://api.github.com/repos/brandondunne/manageiq/hooks","issue_events_url":"https://api.github.com/repos/brandondunne/manageiq/issues/events{/number}","events_url":"https://api.github.com/repos/brandondunne/manageiq/events","assignees_url":"https://api.github.com/repos/brandondunne/manageiq/assignees{/user}","branches_url":"https://api.github.com/repos/brandondunne/manageiq/branches{/branch}","tags_url":"https://api.github.com/repos/brandondunne/manageiq/tags","blobs_url":"https://api.github.com/repos/brandondunne/manageiq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/brandondunne/manageiq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/brandondunne/manageiq/git/refs{/sha}","trees_url":"https://api.github.com/repos/brandondunne/manageiq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/brandondunne/manageiq/statuses/{sha}","languages_url":"https://api.github.com/repos/brandondunne/manageiq/languages","stargazers_url":"https://api.github.com/repos/brandondunne/manageiq/stargazers","contributors_url":"https://api.github.com/repos/brandondunne/manageiq/contributors","subscribers_url":"https://api.github.com/repos/brandondunne/manageiq/subscribers","subscription_url":"https://api.github.com/repos/brandondunne/manageiq/subscription","commits_url":"https://api.github.com/repos/brandondunne/manageiq/commits{/sha}","git_commits_url":"https://api.github.com/repos/brandondunne/manageiq/git/commits{/sha}","comments_url":"https://api.github.com/repos/brandondunne/manageiq/comments{/number}","issue_comment_url":"https://api.github.com/repos/brandondunne/manageiq/issues/comments{/number}","contents_url":"https://api.github.com/repos/brandondunne/manageiq/contents/{+path}","compare_url":"https://api.github.com/repos/brandondunne/manageiq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/brandondunne/manageiq/merges","archive_url":"https://api.github.com/repos/brandondunne/manageiq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/brandondunne/manageiq/downloads","issues_url":"https://api.github.com/repos/brandondunne/manageiq/issues{/number}","pulls_url":"https://api.github.com/repos/brandondunne/manageiq/pulls{/number}","milestones_url":"https://api.github.com/repos/brandondunne/manageiq/milestones{/number}","notifications_url":"https://api.github.com/repos/brandondunne/manageiq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/brandondunne/manageiq/labels{/name}","releases_url":"https://api.github.com/repos/brandondunne/manageiq/releases{/id}","created_at":"2014-06-13T04:12:55Z","updated_at":"2015-02-25T15:20:17Z","pushed_at":"2015-04-07T16:08:45Z","git_url":"git://github.com/brandondunne/manageiq.git","ssh_url":"git@github.com:brandondunne/manageiq.git","clone_url":"https://github.com/brandondunne/manageiq.git","svn_url":"https://github.com/brandondunne/manageiq","homepage":null,"size":68756,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ManageIQ:master","ref":"master","sha":"1918dd43f59cae297f9941fa15e25b3f8afba4ef","user":{"login":"ManageIQ","id":1125575,"avatar_url":"https://avatars.githubusercontent.com/u/1125575?v=3","gravatar_id":"","url":"https://api.github.com/users/ManageIQ","html_url":"https://github.com/ManageIQ","followers_url":"https://api.github.com/users/ManageIQ/followers","following_url":"https://api.github.com/users/ManageIQ/following{/other_user}","gists_url":"https://api.github.com/users/ManageIQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ManageIQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ManageIQ/subscriptions","organizations_url":"https://api.github.com/users/ManageIQ/orgs","repos_url":"https://api.github.com/users/ManageIQ/repos","events_url":"https://api.github.com/users/ManageIQ/events{/privacy}","received_events_url":"https://api.github.com/users/ManageIQ/received_events","type":"Organization","site_admin":false},"repo":{"id":20789757,"name":"manageiq","full_name":"ManageIQ/manageiq","owner":{"login":"ManageIQ","id":1125575,"avatar_url":"https://avatars.githubusercontent.com/u/1125575?v=3","gravatar_id":"","url":"https://api.github.com/users/ManageIQ","html_url":"https://github.com/ManageIQ","followers_url":"https://api.github.com/users/ManageIQ/followers","following_url":"https://api.github.com/users/ManageIQ/following{/other_user}","gists_url":"https://api.github.com/users/ManageIQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ManageIQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ManageIQ/subscriptions","organizations_url":"https://api.github.com/users/ManageIQ/orgs","repos_url":"https://api.github.com/users/ManageIQ/repos","events_url":"https://api.github.com/users/ManageIQ/events{/privacy}","received_events_url":"https://api.github.com/users/ManageIQ/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ManageIQ/manageiq","description":"ManageIQ Cloud Management Platform","fork":false,"url":"https://api.github.com/repos/ManageIQ/manageiq","forks_url":"https://api.github.com/repos/ManageIQ/manageiq/forks","keys_url":"https://api.github.com/repos/ManageIQ/manageiq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ManageIQ/manageiq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ManageIQ/manageiq/teams","hooks_url":"https://api.github.com/repos/ManageIQ/manageiq/hooks","issue_events_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/events{/number}","events_url":"https://api.github.com/repos/ManageIQ/manageiq/events","assignees_url":"https://api.github.com/repos/ManageIQ/manageiq/assignees{/user}","branches_url":"https://api.github.com/repos/ManageIQ/manageiq/branches{/branch}","tags_url":"https://api.github.com/repos/ManageIQ/manageiq/tags","blobs_url":"https://api.github.com/repos/ManageIQ/manageiq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ManageIQ/manageiq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ManageIQ/manageiq/git/refs{/sha}","trees_url":"https://api.github.com/repos/ManageIQ/manageiq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq/statuses/{sha}","languages_url":"https://api.github.com/repos/ManageIQ/manageiq/languages","stargazers_url":"https://api.github.com/repos/ManageIQ/manageiq/stargazers","contributors_url":"https://api.github.com/repos/ManageIQ/manageiq/contributors","subscribers_url":"https://api.github.com/repos/ManageIQ/manageiq/subscribers","subscription_url":"https://api.github.com/repos/ManageIQ/manageiq/subscription","commits_url":"https://api.github.com/repos/ManageIQ/manageiq/commits{/sha}","git_commits_url":"https://api.github.com/repos/ManageIQ/manageiq/git/commits{/sha}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/comments{/number}","issue_comment_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/comments{/number}","contents_url":"https://api.github.com/repos/ManageIQ/manageiq/contents/{+path}","compare_url":"https://api.github.com/repos/ManageIQ/manageiq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ManageIQ/manageiq/merges","archive_url":"https://api.github.com/repos/ManageIQ/manageiq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ManageIQ/manageiq/downloads","issues_url":"https://api.github.com/repos/ManageIQ/manageiq/issues{/number}","pulls_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls{/number}","milestones_url":"https://api.github.com/repos/ManageIQ/manageiq/milestones{/number}","notifications_url":"https://api.github.com/repos/ManageIQ/manageiq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ManageIQ/manageiq/labels{/name}","releases_url":"https://api.github.com/repos/ManageIQ/manageiq/releases{/id}","created_at":"2014-06-13T02:31:26Z","updated_at":"2015-04-07T15:48:07Z","pushed_at":"2015-04-07T16:21:10Z","git_url":"git://github.com/ManageIQ/manageiq.git","ssh_url":"git@github.com:ManageIQ/manageiq.git","clone_url":"https://github.com/ManageIQ/manageiq.git","svn_url":"https://github.com/ManageIQ/manageiq","homepage":"manageiq.org","size":115268,"stargazers_count":102,"watchers_count":102,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":100,"mirror_url":null,"open_issues_count":360,"forks":100,"open_issues":360,"watchers":102,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2543"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/2543"},"issue":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/2543"},"comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/2543/comments"},"review_comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2543/comments"},"review_comment":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2543/commits"},"statuses":{"href":"https://api.github.com/repos/ManageIQ/manageiq/statuses/31964c024cc8a88ca6f8069abe2b7e7770e8262f"}}}}