{"action":"created","comment":{"url":"https://api.github.com/repos/bundler/bundler/pulls/comments/91847078","pull_request_review_id":12359066,"id":91847078,"diff_hunk":"@@ -130,9 +132,21 @@ begin\n       releases = %w(v1.3.6 v1.3.7 v1.4.2 v1.5.3 v1.6.2 v1.7.2 v1.8.29 v2.0.14 v2.1.11 v2.2.5 v2.4.8 v2.5.2 v2.6.6)\n       (branches + releases).each do |rg|\n         desc \"Run specs with Rubygems #{rg}\"\n-        RSpec::Core::RakeTask.new(rg) do |t|\n-          t.rspec_opts = %w(--format progress --color)\n-          t.ruby_opts  = %w(-w)\n+        task rg do\n+          require \"parallel\"\n+          spec_search = File.join(\"spec\", \"**\", \"*_spec.rb\")\n+          specs = Dir.glob(spec_search)\n+          spec_groups = specs.each_slice((specs.size / 2).round).to_a\n+          Parallel.each(spec_groups, :in_processes => CONCURRENT_TESTS) do |proccess_specs|\n+            cmd = \"bin/rspec #{proccess_specs.join(\" \")} --format progress --color\"\n+            open(\"|#{cmd}\", \"r\") do |output|\n+              loop do\n+                read = output.readpartial(4096)\n+                $stdout.print read","path":"Rakefile","position":26,"original_position":26,"commit_id":"9fdcd6634164fbc9ac7cae2cc86602baf618591d","original_commit_id":"9fdcd6634164fbc9ac7cae2cc86602baf618591d","user":{"login":"colby-swandale","id":996377,"avatar_url":"https://avatars.githubusercontent.com/u/996377?v=3","gravatar_id":"","url":"https://api.github.com/users/colby-swandale","html_url":"https://github.com/colby-swandale","followers_url":"https://api.github.com/users/colby-swandale/followers","following_url":"https://api.github.com/users/colby-swandale/following{/other_user}","gists_url":"https://api.github.com/users/colby-swandale/gists{/gist_id}","starred_url":"https://api.github.com/users/colby-swandale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colby-swandale/subscriptions","organizations_url":"https://api.github.com/users/colby-swandale/orgs","repos_url":"https://api.github.com/users/colby-swandale/repos","events_url":"https://api.github.com/users/colby-swandale/events{/privacy}","received_events_url":"https://api.github.com/users/colby-swandale/received_events","type":"User","site_admin":false},"body":"Sorry for not answering this sooner. The answer is yes but the stdout of each process will be read in chunks of 4096 bytes. So it should be kept the same as it currently is except on rare cases.","created_at":"2016-12-11T03:42:10Z","updated_at":"2016-12-11T03:42:10Z","html_url":"https://github.com/bundler/bundler/pull/5193#discussion_r91847078","pull_request_url":"https://api.github.com/repos/bundler/bundler/pulls/5193","_links":{"self":{"href":"https://api.github.com/repos/bundler/bundler/pulls/comments/91847078"},"html":{"href":"https://github.com/bundler/bundler/pull/5193#discussion_r91847078"},"pull_request":{"href":"https://api.github.com/repos/bundler/bundler/pulls/5193"}}},"pull_request":{"url":"https://api.github.com/repos/bundler/bundler/pulls/5193","id":94512757,"html_url":"https://github.com/bundler/bundler/pull/5193","diff_url":"https://github.com/bundler/bundler/pull/5193.diff","patch_url":"https://github.com/bundler/bundler/pull/5193.patch","issue_url":"https://api.github.com/repos/bundler/bundler/issues/5193","number":5193,"state":"open","locked":false,"title":"[WIP] Parallel specs","user":{"login":"colby-swandale","id":996377,"avatar_url":"https://avatars.githubusercontent.com/u/996377?v=3","gravatar_id":"","url":"https://api.github.com/users/colby-swandale","html_url":"https://github.com/colby-swandale","followers_url":"https://api.github.com/users/colby-swandale/followers","following_url":"https://api.github.com/users/colby-swandale/following{/other_user}","gists_url":"https://api.github.com/users/colby-swandale/gists{/gist_id}","starred_url":"https://api.github.com/users/colby-swandale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colby-swandale/subscriptions","organizations_url":"https://api.github.com/users/colby-swandale/orgs","repos_url":"https://api.github.com/users/colby-swandale/repos","events_url":"https://api.github.com/users/colby-swandale/events{/privacy}","received_events_url":"https://api.github.com/users/colby-swandale/received_events","type":"User","site_admin":false},"body":"HI. This is currently a work in progress but i want to share with everyone on what progress i have made so far.\r\n\r\nThis PR is continuing on from #4345. I have modified the `Rakefile` to run the `spec:rubygems:<rubygem>` rake task in 2 different processes, each process takes a equal amount of spec files to execute (this is obviously not the best way to balance the amount of work). There are specs that are not passing and some other tests are a bit flaky as well.\r\n\r\nThis change depends on the grosser/parallel gem, I'm not sure if its ok to bring in a new dev dependency. let me know if it's not and ill see if i can work around it.\r\n\r\nPerformance wise, i can finish the suite of specs in about ~20ish mins on my 2014 Macbook. This used to take ~38ish minutes so i think this is a good start. I will try and see if i can get this to run on Travis and link the result.\r\n\r\nThere are some tasks that needs to be completed before this can be merged\r\n- The detailed error reports from failed specs is not being printed when i press Ctrl^C\r\n- Some specs are not passing that need to be fixed\r\n\r\nFinally, do we only want to run parallel specs on CI? (ie if i run `rake spec:rubygems:master` on my macbook, should that work as it currently is?)\r\n\r\nLet me know what you think.\r\n\r\nThanks","created_at":"2016-11-20T09:46:04Z","updated_at":"2016-12-11T03:42:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2540fe2e65cf25004fef500716f8ff0539cd7e4e","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/bundler/bundler/pulls/5193/commits","review_comments_url":"https://api.github.com/repos/bundler/bundler/pulls/5193/comments","review_comment_url":"https://api.github.com/repos/bundler/bundler/pulls/comments{/number}","comments_url":"https://api.github.com/repos/bundler/bundler/issues/5193/comments","statuses_url":"https://api.github.com/repos/bundler/bundler/statuses/9fdcd6634164fbc9ac7cae2cc86602baf618591d","head":{"label":"colby-swandale:parallel-specs","ref":"parallel-specs","sha":"9fdcd6634164fbc9ac7cae2cc86602baf618591d","user":{"login":"colby-swandale","id":996377,"avatar_url":"https://avatars.githubusercontent.com/u/996377?v=3","gravatar_id":"","url":"https://api.github.com/users/colby-swandale","html_url":"https://github.com/colby-swandale","followers_url":"https://api.github.com/users/colby-swandale/followers","following_url":"https://api.github.com/users/colby-swandale/following{/other_user}","gists_url":"https://api.github.com/users/colby-swandale/gists{/gist_id}","starred_url":"https://api.github.com/users/colby-swandale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colby-swandale/subscriptions","organizations_url":"https://api.github.com/users/colby-swandale/orgs","repos_url":"https://api.github.com/users/colby-swandale/repos","events_url":"https://api.github.com/users/colby-swandale/events{/privacy}","received_events_url":"https://api.github.com/users/colby-swandale/received_events","type":"User","site_admin":false},"repo":{"id":59476379,"name":"bundler","full_name":"colby-swandale/bundler","owner":{"login":"colby-swandale","id":996377,"avatar_url":"https://avatars.githubusercontent.com/u/996377?v=3","gravatar_id":"","url":"https://api.github.com/users/colby-swandale","html_url":"https://github.com/colby-swandale","followers_url":"https://api.github.com/users/colby-swandale/followers","following_url":"https://api.github.com/users/colby-swandale/following{/other_user}","gists_url":"https://api.github.com/users/colby-swandale/gists{/gist_id}","starred_url":"https://api.github.com/users/colby-swandale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colby-swandale/subscriptions","organizations_url":"https://api.github.com/users/colby-swandale/orgs","repos_url":"https://api.github.com/users/colby-swandale/repos","events_url":"https://api.github.com/users/colby-swandale/events{/privacy}","received_events_url":"https://api.github.com/users/colby-swandale/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/colby-swandale/bundler","description":"Manage your application's gem dependencies with less pain","fork":true,"url":"https://api.github.com/repos/colby-swandale/bundler","forks_url":"https://api.github.com/repos/colby-swandale/bundler/forks","keys_url":"https://api.github.com/repos/colby-swandale/bundler/keys{/key_id}","collaborators_url":"https://api.github.com/repos/colby-swandale/bundler/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/colby-swandale/bundler/teams","hooks_url":"https://api.github.com/repos/colby-swandale/bundler/hooks","issue_events_url":"https://api.github.com/repos/colby-swandale/bundler/issues/events{/number}","events_url":"https://api.github.com/repos/colby-swandale/bundler/events","assignees_url":"https://api.github.com/repos/colby-swandale/bundler/assignees{/user}","branches_url":"https://api.github.com/repos/colby-swandale/bundler/branches{/branch}","tags_url":"https://api.github.com/repos/colby-swandale/bundler/tags","blobs_url":"https://api.github.com/repos/colby-swandale/bundler/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/colby-swandale/bundler/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/colby-swandale/bundler/git/refs{/sha}","trees_url":"https://api.github.com/repos/colby-swandale/bundler/git/trees{/sha}","statuses_url":"https://api.github.com/repos/colby-swandale/bundler/statuses/{sha}","languages_url":"https://api.github.com/repos/colby-swandale/bundler/languages","stargazers_url":"https://api.github.com/repos/colby-swandale/bundler/stargazers","contributors_url":"https://api.github.com/repos/colby-swandale/bundler/contributors","subscribers_url":"https://api.github.com/repos/colby-swandale/bundler/subscribers","subscription_url":"https://api.github.com/repos/colby-swandale/bundler/subscription","commits_url":"https://api.github.com/repos/colby-swandale/bundler/commits{/sha}","git_commits_url":"https://api.github.com/repos/colby-swandale/bundler/git/commits{/sha}","comments_url":"https://api.github.com/repos/colby-swandale/bundler/comments{/number}","issue_comment_url":"https://api.github.com/repos/colby-swandale/bundler/issues/comments{/number}","contents_url":"https://api.github.com/repos/colby-swandale/bundler/contents/{+path}","compare_url":"https://api.github.com/repos/colby-swandale/bundler/compare/{base}...{head}","merges_url":"https://api.github.com/repos/colby-swandale/bundler/merges","archive_url":"https://api.github.com/repos/colby-swandale/bundler/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/colby-swandale/bundler/downloads","issues_url":"https://api.github.com/repos/colby-swandale/bundler/issues{/number}","pulls_url":"https://api.github.com/repos/colby-swandale/bundler/pulls{/number}","milestones_url":"https://api.github.com/repos/colby-swandale/bundler/milestones{/number}","notifications_url":"https://api.github.com/repos/colby-swandale/bundler/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/colby-swandale/bundler/labels{/name}","releases_url":"https://api.github.com/repos/colby-swandale/bundler/releases{/id}","deployments_url":"https://api.github.com/repos/colby-swandale/bundler/deployments","created_at":"2016-05-23T11:14:57Z","updated_at":"2016-05-23T11:15:01Z","pushed_at":"2016-12-11T03:06:47Z","git_url":"git://github.com/colby-swandale/bundler.git","ssh_url":"git@github.com:colby-swandale/bundler.git","clone_url":"https://github.com/colby-swandale/bundler.git","svn_url":"https://github.com/colby-swandale/bundler","homepage":"https://bundler.io","size":16626,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":false,"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":"bundler:master","ref":"master","sha":"4af22f96858a481183f9bfd64378478dd99dbc37","user":{"login":"bundler","id":1137638,"avatar_url":"https://avatars.githubusercontent.com/u/1137638?v=3","gravatar_id":"","url":"https://api.github.com/users/bundler","html_url":"https://github.com/bundler","followers_url":"https://api.github.com/users/bundler/followers","following_url":"https://api.github.com/users/bundler/following{/other_user}","gists_url":"https://api.github.com/users/bundler/gists{/gist_id}","starred_url":"https://api.github.com/users/bundler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bundler/subscriptions","organizations_url":"https://api.github.com/users/bundler/orgs","repos_url":"https://api.github.com/users/bundler/repos","events_url":"https://api.github.com/users/bundler/events{/privacy}","received_events_url":"https://api.github.com/users/bundler/received_events","type":"Organization","site_admin":false},"repo":{"id":488514,"name":"bundler","full_name":"bundler/bundler","owner":{"login":"bundler","id":1137638,"avatar_url":"https://avatars.githubusercontent.com/u/1137638?v=3","gravatar_id":"","url":"https://api.github.com/users/bundler","html_url":"https://github.com/bundler","followers_url":"https://api.github.com/users/bundler/followers","following_url":"https://api.github.com/users/bundler/following{/other_user}","gists_url":"https://api.github.com/users/bundler/gists{/gist_id}","starred_url":"https://api.github.com/users/bundler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bundler/subscriptions","organizations_url":"https://api.github.com/users/bundler/orgs","repos_url":"https://api.github.com/users/bundler/repos","events_url":"https://api.github.com/users/bundler/events{/privacy}","received_events_url":"https://api.github.com/users/bundler/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/bundler/bundler","description":"Manage your Ruby application's gem dependencies","fork":false,"url":"https://api.github.com/repos/bundler/bundler","forks_url":"https://api.github.com/repos/bundler/bundler/forks","keys_url":"https://api.github.com/repos/bundler/bundler/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bundler/bundler/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bundler/bundler/teams","hooks_url":"https://api.github.com/repos/bundler/bundler/hooks","issue_events_url":"https://api.github.com/repos/bundler/bundler/issues/events{/number}","events_url":"https://api.github.com/repos/bundler/bundler/events","assignees_url":"https://api.github.com/repos/bundler/bundler/assignees{/user}","branches_url":"https://api.github.com/repos/bundler/bundler/branches{/branch}","tags_url":"https://api.github.com/repos/bundler/bundler/tags","blobs_url":"https://api.github.com/repos/bundler/bundler/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bundler/bundler/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bundler/bundler/git/refs{/sha}","trees_url":"https://api.github.com/repos/bundler/bundler/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bundler/bundler/statuses/{sha}","languages_url":"https://api.github.com/repos/bundler/bundler/languages","stargazers_url":"https://api.github.com/repos/bundler/bundler/stargazers","contributors_url":"https://api.github.com/repos/bundler/bundler/contributors","subscribers_url":"https://api.github.com/repos/bundler/bundler/subscribers","subscription_url":"https://api.github.com/repos/bundler/bundler/subscription","commits_url":"https://api.github.com/repos/bundler/bundler/commits{/sha}","git_commits_url":"https://api.github.com/repos/bundler/bundler/git/commits{/sha}","comments_url":"https://api.github.com/repos/bundler/bundler/comments{/number}","issue_comment_url":"https://api.github.com/repos/bundler/bundler/issues/comments{/number}","contents_url":"https://api.github.com/repos/bundler/bundler/contents/{+path}","compare_url":"https://api.github.com/repos/bundler/bundler/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bundler/bundler/merges","archive_url":"https://api.github.com/repos/bundler/bundler/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bundler/bundler/downloads","issues_url":"https://api.github.com/repos/bundler/bundler/issues{/number}","pulls_url":"https://api.github.com/repos/bundler/bundler/pulls{/number}","milestones_url":"https://api.github.com/repos/bundler/bundler/milestones{/number}","notifications_url":"https://api.github.com/repos/bundler/bundler/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bundler/bundler/labels{/name}","releases_url":"https://api.github.com/repos/bundler/bundler/releases{/id}","deployments_url":"https://api.github.com/repos/bundler/bundler/deployments","created_at":"2010-01-26T00:46:38Z","updated_at":"2016-12-10T13:33:24Z","pushed_at":"2016-12-11T03:13:34Z","git_url":"git://github.com/bundler/bundler.git","ssh_url":"git@github.com:bundler/bundler.git","clone_url":"https://github.com/bundler/bundler.git","svn_url":"https://github.com/bundler/bundler","homepage":"https://bundler.io","size":27749,"stargazers_count":3640,"watchers_count":3640,"language":"Ruby","has_issues":true,"has_downloads":false,"has_wiki":false,"has_pages":true,"forks_count":1700,"mirror_url":null,"open_issues_count":228,"forks":1700,"open_issues":228,"watchers":3640,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/bundler/bundler/pulls/5193"},"html":{"href":"https://github.com/bundler/bundler/pull/5193"},"issue":{"href":"https://api.github.com/repos/bundler/bundler/issues/5193"},"comments":{"href":"https://api.github.com/repos/bundler/bundler/issues/5193/comments"},"review_comments":{"href":"https://api.github.com/repos/bundler/bundler/pulls/5193/comments"},"review_comment":{"href":"https://api.github.com/repos/bundler/bundler/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/bundler/bundler/pulls/5193/commits"},"statuses":{"href":"https://api.github.com/repos/bundler/bundler/statuses/9fdcd6634164fbc9ac7cae2cc86602baf618591d"}}}}
{"actor":{"display_login":"colby-swandale"}}