fantasyhub 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +4 -0
  5. data/Guardfile +17 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +49 -0
  8. data/Rakefile +2 -0
  9. data/bin/console +3 -0
  10. data/bin/run_test_suite +24 -0
  11. data/fantasyhub.gemspec +28 -0
  12. data/id_rsa_fantasyhubber +27 -0
  13. data/id_rsa_fantasyhubber.pub +1 -0
  14. data/lib/fantasyhub.rb +36 -0
  15. data/lib/fantasyhub/event.rb +12 -0
  16. data/lib/fantasyhub/events.rb +5 -0
  17. data/lib/fantasyhub/events/commit_comment_event.rb +10 -0
  18. data/lib/fantasyhub/events/create_event.rb +10 -0
  19. data/lib/fantasyhub/events/delete_event.rb +10 -0
  20. data/lib/fantasyhub/events/follow_event.rb +10 -0
  21. data/lib/fantasyhub/events/fork_event.rb +10 -0
  22. data/lib/fantasyhub/events/gollumn_event.rb +10 -0
  23. data/lib/fantasyhub/events/issue_comment_event.rb +10 -0
  24. data/lib/fantasyhub/events/issues_event.rb +10 -0
  25. data/lib/fantasyhub/events/member_event.rb +10 -0
  26. data/lib/fantasyhub/events/pull_request_event.rb +10 -0
  27. data/lib/fantasyhub/events/pull_request_review_comment_event.rb +10 -0
  28. data/lib/fantasyhub/events/push_event.rb +11 -0
  29. data/lib/fantasyhub/events/watch_event.rb +10 -0
  30. data/lib/fantasyhub/feed.rb +5 -0
  31. data/lib/fantasyhub/feed/downloader.rb +21 -0
  32. data/lib/fantasyhub/feed/parser.rb +24 -0
  33. data/lib/fantasyhub/feed/scorer.rb +25 -0
  34. data/lib/fantasyhub/version.rb +3 -0
  35. data/lib/tasks/test.rake +10 -0
  36. data/test/ci/before_script.sh +0 -0
  37. data/test/ci/ci_runner.sh +1 -0
  38. data/test/fantasyhub/events_test.rb +13 -0
  39. data/test/fantasyhub/feed/downloader_test.rb +14 -0
  40. data/test/fantasyhub/feed/parser_test.rb +35 -0
  41. data/test/fantasyhub/feed/scorer_test.rb +65 -0
  42. data/test/fantasyhub_test.rb +12 -0
  43. data/test/fixtures/cassettes/tenderlove_activity.yml +4162 -0
  44. data/test/fixtures/cassettes/tenderlove_activity_feed.yml +4162 -0
  45. data/test/fixtures/tenderlove.json +1 -0
  46. data/test/integration_test.rb +12 -0
  47. data/test/minitest_helper.rb +20 -0
  48. data/test/support/minitest_reporters.rb +4 -0
  49. data/test/support/mocha.rb +1 -0
  50. data/test/support/open_struct.rb +1 -0
  51. data/test/support/vcr.rb +8 -0
  52. metadata +224 -0
@@ -0,0 +1 @@
1
+ [{"created_at":"2014-04-16T16:21:31-07:00","payload":{"issue_id":31677433,"comment_id":40664329},"public":true,"type":"IssueCommentEvent","url":"https://github.com/tenderlove/av_capture/issues/4#issuecomment-40664329","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":14831386,"name":"av_capture","url":"https://github.com/tenderlove/av_capture","description":"A wrapper around av_capture on OS X","watchers":24,"stargazers":24,"forks":0,"fork":false,"size":188,"owner":"tenderlove","private":false,"open_issues":1,"has_issues":true,"has_downloads":true,"has_wiki":true,"language":"Objective-C","created_at":"2013-11-30T16:57:32-08:00","pushed_at":"2014-03-26T11:59:03-07:00","master_branch":"master"}},{"created_at":"2014-04-15T09:28:19-07:00","payload":{"shas":[["5cbf73c2ab5d45ff7536850d0bf3ed39d873c2a6","aaron.patterson@gmail.com","use cache queries for hm:t associations","Aaron Patterson",true]],"size":1,"ref":"refs/heads/adequaterecord","head":"5cbf73c2ab5d45ff7536850d0bf3ed39d873c2a6"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/1cd40d48ba...5cbf73c2ab","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-14T18:20:52-07:00","payload":{"issue_id":31512527,"comment_id":40436324},"public":true,"type":"IssueCommentEvent","url":"https://github.com/rails/rails/issues/14754#issuecomment-40436324","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-14T17:14:34-07:00","payload":{"shas":[["1cd40d48ba73f0d8a5d5de8974ca424776c26d64","aaron.patterson@gmail.com","oops. should probably double check in the DCL","Aaron Patterson",true]],"size":1,"ref":"refs/heads/adequaterecord","head":"1cd40d48ba73f0d8a5d5de8974ca424776c26d64"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/bd3b28f7f1...1cd40d48ba","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-14T16:26:37-07:00","payload":{"shas":[["bd3b28f7f181dce53e872daa23dda101498b8fb4","aaron.patterson@gmail.com","cache scope building on associations\n\nSQL statements for querying associations are now cached","Aaron Patterson",true]],"size":1,"ref":"refs/heads/adequaterecord","head":"bd3b28f7f181dce53e872daa23dda101498b8fb4"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/316ee25c25...bd3b28f7f1","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-14T11:49:51-07:00","payload":{"shas":[["cb24aa16ebb0f9a31e05dbce4e608b56f05ba2f3","dwebsubmit@gmail.com","private method doesn't work for singleton methods defined this way","Diego Scataglini",false],["05d7cdec5f2b2b778fdf3e37fe155f5ef498df59","emrebasala@gmail.com","Add tests to ActiveSupport:XmlMini to_tag method","emre-basala",false],["ec0928076529e8f0b5a4ad58c95cfa1fe6ed5b60","antropov.ivan@gmail.com","Fix insertion of records for hmt association with scope, fix #3548","Ivan Antropov",false],["933063188870347b59b35d4f96df21864d0f8f0b","roderick@vandomburg.net","Auto-generate stable fixture UUIDs on PostgreSQL.\nFixes: #11524","Roderick van Domburg",false],["54d8c81fefdb566c2f317afd0142cade0273bdbc","rafaelmfranca@gmail.com","Merge pull request #12016 from roderickvd/uuid_fixes\n\nAuto-generate stable fixture UUIDs on PostgreSQL\n\nConflicts:\n\tactiverecord/CHANGELOG.md\n\tactiverecord/lib/active_record/fixtures.rb\n\tactiverecord/test/cases/adapters/postgresql/uuid_test.rb\n\tactivesupport/CHANGELOG.md","Rafael Mendonça França",false],["7901ae13a1d8187c1b620b51df7d840818fd759d","deivid.rodriguez@gmail.com","Keep debugger support only for rubies < 2.0.0","David Rodríguez de Dios",false],["d8a4e482202bc8d42a16b2311598d49d34304bd6","deivid.rodriguez@gmail.com","Update Gemfile templates to provide correct debugger","David Rodríguez de Dios",false],["eb2d555f5c2e504f9de73dd083f148336f5ffa19","deivid.rodriguez@gmail.com","Update debugging guide to use byebug","David Rodríguez de Dios",false],["1f31488499111fdfce79d8dc1cc8fb008f7cdb25","laurocaetano1@gmail.com","Make the reflections cache work with strings as its keys.","Lauro Caetano",false],["4c6ba7432dc5288708817d5b03e7ed13458ca58d","laurocaetano1@gmail.com","No need to call `to_sym` on reflection name, since the cache now works\nwith strings with string keys.\n\nRelated #14668.","Lauro Caetano",false],["e7630b62a604a0bc11a56283140f11a80e4cc1b0","laurocaetano1@gmail.com","Make the aggregate_reflections cache work with strings as its keys.","Lauro Caetano",false],["213ef567ae2ab92f1e1145cd385da0c5b9534422","laurocaetano1@gmail.com","Make sure the reflection test is passing a String to the reflection\ncache.","Lauro Caetano",false],["82cb4777c148962467b04ee29fb49063462c56d8","aaron.patterson@gmail.com","Merge pull request #14675 from laurocaetano/make_reflection_caches_works_with_string_keys\n\nMake reflection and aggregate_reflection caches work with string keys.","Aaron Patterson",false],["cf0e44c771319bcd8ec0038f8502fe0baa5fa738","carlosantoniodasilva@gmail.com","Remove extra collect call","Carlos Antonio da Silva",false],["9a8af0c15089fbdc18fa75115586ab6febcd4d06","carlosantoniodasilva@gmail.com","Only call uniq on the conditional that actually needs it","Carlos Antonio da Silva",false],["febfc57e56558bd6924b39a38f08d833a78e975b","aaron.patterson@gmail.com","Merge pull request #11411 from dscataglini/master\n\nActive support callback's before/after/around filters are not correctly making their singleton methods private","Aaron Patterson",false],["bb63e9c5902f4f6374e9c3fa5bd8041d7be9fa91","ronnie@dio.jp","+EOL","Akira Matsuda",false],["3fe7b5f4a1edcbb9239a1587d2a565bc45c41f2e","pbharadiya@users.noreply.github.com","Correct factual error for page not found","Parth Bharadiya",false],["d8d0fcb06aae164b57695749ee394eee6996ee4d","yves.senn@gmail.com","Merge pull request #14679 from pbharadiya/master\n\nCorrect factual error for page not found [ci skip]","Yves Senn",false],["77252c332e28dbc385a2e7865905bf3442972cf3","jcoglan@gmail.com","Add a failing test for a URL helper that was broken by a6b9ea2.","James Coglan",false]],"size":106,"ref":"refs/heads/adequaterecord","head":"316ee25c25a64a2d82c284293a31804077b05d79"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/09608ce9d2...316ee25c25","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-14T10:17:27-07:00","payload":{"shas":[["dd063f6ef436b5e6a594e70eeb50532a09ef7a57","jean.boussier@gmail.com","Write the failing test case for concurrent counter cache","Jean Boussier",true],["655a3667aa99ae3f7e68024b3971b5783d6396bf","jean.boussier@gmail.com","Make counter cache decrementation on destroy idempotent","Jean Boussier",true],["a1e2db2e9bb4ca2fdf6190aa8f448fe85cf76529","aaron.patterson@gmail.com","Merge pull request #14735 from byroot/idempotent-counter-caches\n\nIdempotent counter caches, fix concurrency issues with counter caches","Aaron Patterson",true]],"size":3,"ref":"refs/heads/master","head":"a1e2db2e9bb4ca2fdf6190aa8f448fe85cf76529"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/3bf8f8b055...a1e2db2e9b","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-14T10:16:28-07:00","payload":{"action":"closed","number":14735,"pull_request":{"url":"https://api.github.com/repos/rails/rails/pulls/14735","id":14695743,"html_url":"https://github.com/rails/rails/pull/14735","diff_url":"https://github.com/rails/rails/pull/14735.diff","patch_url":"https://github.com/rails/rails/pull/14735.patch","issue_url":"https://api.github.com/repos/rails/rails/issues/14735","number":14735,"state":"closed","title":"Idempotent counter caches, fix concurrency issues with counter caches","user":{"login":"byroot","id":44640,"avatar_url":"https://avatars.githubusercontent.com/u/44640?","gravatar_id":"a0f37219f0943a048003ef5269ff31e8","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","site_admin":false},"body":"Fixes #7965 among other that I remember but can't find anymore.\r\n\r\n# Problem\r\n\r\nIn SQL a `DELETE` statement is inherently idempotent. You can repeat it indefinitely, it will always succeed.\r\n\r\nOn the other hand counter cache decrementation is not. So if you have 2 process following this scenario:\r\n\r\n - Process 1 load the record\r\n - Process 2 load the record\r\n - Process 1 destroy the record\r\n - Process 2 destroy the record\r\n\r\nThen the counter cache is decremented twice.\r\n\r\n# Solution\r\n\r\nThis patch make the decrementation on `after_destroy` so it can check the `affected_rows` value returned by the database to only perform the decrementation if a record was actually deleted.\r\n\r\nWe (Shopify) are running a [monkey patch version](https://gist.github.com/byroot/9809265) of this PR since 3 months now, and so far the problem disappeared.\r\n\r\n# Implementation \r\n\r\nSo far I'm not very happy with my implementation, but I think the only way to make it better is to make the counter cache logic happen in `destroy_row`, `insert_row` etc, instead of doing it in callbacks.\r\n\r\nBut it mean moving a lot of code, so I prefer to validates the idea before attempting it.\r\n\r\n# Non addressed issues\r\n\r\nThe counter update that happen when you change the foreign key, is subject to the same issue, but way harder to fix using this pattern. It would mean updating foreign key in distinct `UPDATE` queries before the main update, and checking the `affected_rows` for each before incrementing / decrementing the counters.\r\n\r\nSo it's feasible but again I prefer to validate the idea before attempting it. \r\n\r\n/cc @arthurn @jonleighton @tenderlove : What do you think?","created_at":"2014-04-13T16:54:54Z","updated_at":"2014-04-14T17:16:27Z","closed_at":"2014-04-14T17:16:27Z","merged_at":"2014-04-14T17:16:27Z","merge_commit_sha":"c6b9d57471d61526910cb3f0d3621d3851901630","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/rails/rails/pulls/14735/commits","review_comments_url":"https://api.github.com/repos/rails/rails/pulls/14735/comments","review_comment_url":"https://api.github.com/repos/rails/rails/pulls/comments/{number}","comments_url":"https://api.github.com/repos/rails/rails/issues/14735/comments","statuses_url":"https://api.github.com/repos/rails/rails/statuses/655a3667aa99ae3f7e68024b3971b5783d6396bf","head":{"label":"byroot:idempotent-counter-caches","ref":"idempotent-counter-caches","sha":"655a3667aa99ae3f7e68024b3971b5783d6396bf","user":{"login":"byroot","id":44640,"avatar_url":"https://avatars.githubusercontent.com/u/44640?","gravatar_id":"a0f37219f0943a048003ef5269ff31e8","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","site_admin":false},"repo":{"id":3618226,"name":"rails","full_name":"byroot/rails","owner":{"login":"byroot","id":44640,"avatar_url":"https://avatars.githubusercontent.com/u/44640?","gravatar_id":"a0f37219f0943a048003ef5269ff31e8","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/byroot/rails","description":"Ruby on Rails","fork":true,"url":"https://api.github.com/repos/byroot/rails","forks_url":"https://api.github.com/repos/byroot/rails/forks","keys_url":"https://api.github.com/repos/byroot/rails/keys{/key_id}","collaborators_url":"https://api.github.com/repos/byroot/rails/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/byroot/rails/teams","hooks_url":"https://api.github.com/repos/byroot/rails/hooks","issue_events_url":"https://api.github.com/repos/byroot/rails/issues/events{/number}","events_url":"https://api.github.com/repos/byroot/rails/events","assignees_url":"https://api.github.com/repos/byroot/rails/assignees{/user}","branches_url":"https://api.github.com/repos/byroot/rails/branches{/branch}","tags_url":"https://api.github.com/repos/byroot/rails/tags","blobs_url":"https://api.github.com/repos/byroot/rails/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/byroot/rails/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/byroot/rails/git/refs{/sha}","trees_url":"https://api.github.com/repos/byroot/rails/git/trees{/sha}","statuses_url":"https://api.github.com/repos/byroot/rails/statuses/{sha}","languages_url":"https://api.github.com/repos/byroot/rails/languages","stargazers_url":"https://api.github.com/repos/byroot/rails/stargazers","contributors_url":"https://api.github.com/repos/byroot/rails/contributors","subscribers_url":"https://api.github.com/repos/byroot/rails/subscribers","subscription_url":"https://api.github.com/repos/byroot/rails/subscription","commits_url":"https://api.github.com/repos/byroot/rails/commits{/sha}","git_commits_url":"https://api.github.com/repos/byroot/rails/git/commits{/sha}","comments_url":"https://api.github.com/repos/byroot/rails/comments{/number}","issue_comment_url":"https://api.github.com/repos/byroot/rails/issues/comments/{number}","contents_url":"https://api.github.com/repos/byroot/rails/contents/{+path}","compare_url":"https://api.github.com/repos/byroot/rails/compare/{base}...{head}","merges_url":"https://api.github.com/repos/byroot/rails/merges","archive_url":"https://api.github.com/repos/byroot/rails/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/byroot/rails/downloads","issues_url":"https://api.github.com/repos/byroot/rails/issues{/number}","pulls_url":"https://api.github.com/repos/byroot/rails/pulls{/number}","milestones_url":"https://api.github.com/repos/byroot/rails/milestones{/number}","notifications_url":"https://api.github.com/repos/byroot/rails/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/byroot/rails/labels{/name}","releases_url":"https://api.github.com/repos/byroot/rails/releases{/id}","created_at":"2012-03-04T13:16:39Z","updated_at":"2014-04-14T17:16:27Z","pushed_at":"2014-04-13T16:27:26Z","git_url":"git://github.com/byroot/rails.git","ssh_url":"git@github.com:byroot/rails.git","clone_url":"https://github.com/byroot/rails.git","svn_url":"https://github.com/byroot/rails","homepage":"http://rubyonrails.org","size":99939,"stargazers_count":1,"watchers_count":1,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master","master_branch":"master"}},"base":{"label":"rails:master","ref":"master","sha":"0bccde963c0b3e2ad65b2bdac9d144f40854ec90","user":{"login":"rails","id":4223,"avatar_url":"https://avatars.githubusercontent.com/u/4223?","gravatar_id":"30f39a09e233e8369dddf6feb4be0308","url":"https://api.github.com/users/rails","html_url":"https://github.com/rails","followers_url":"https://api.github.com/users/rails/followers","following_url":"https://api.github.com/users/rails/following{/other_user}","gists_url":"https://api.github.com/users/rails/gists{/gist_id}","starred_url":"https://api.github.com/users/rails/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rails/subscriptions","organizations_url":"https://api.github.com/users/rails/orgs","repos_url":"https://api.github.com/users/rails/repos","events_url":"https://api.github.com/users/rails/events{/privacy}","received_events_url":"https://api.github.com/users/rails/received_events","type":"Organization","site_admin":false},"repo":{"id":8514,"name":"rails","full_name":"rails/rails","owner":{"login":"rails","id":4223,"avatar_url":"https://avatars.githubusercontent.com/u/4223?","gravatar_id":"30f39a09e233e8369dddf6feb4be0308","url":"https://api.github.com/users/rails","html_url":"https://github.com/rails","followers_url":"https://api.github.com/users/rails/followers","following_url":"https://api.github.com/users/rails/following{/other_user}","gists_url":"https://api.github.com/users/rails/gists{/gist_id}","starred_url":"https://api.github.com/users/rails/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rails/subscriptions","organizations_url":"https://api.github.com/users/rails/orgs","repos_url":"https://api.github.com/users/rails/repos","events_url":"https://api.github.com/users/rails/events{/privacy}","received_events_url":"https://api.github.com/users/rails/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rails/rails","description":"Ruby on Rails","fork":false,"url":"https://api.github.com/repos/rails/rails","forks_url":"https://api.github.com/repos/rails/rails/forks","keys_url":"https://api.github.com/repos/rails/rails/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rails/rails/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rails/rails/teams","hooks_url":"https://api.github.com/repos/rails/rails/hooks","issue_events_url":"https://api.github.com/repos/rails/rails/issues/events{/number}","events_url":"https://api.github.com/repos/rails/rails/events","assignees_url":"https://api.github.com/repos/rails/rails/assignees{/user}","branches_url":"https://api.github.com/repos/rails/rails/branches{/branch}","tags_url":"https://api.github.com/repos/rails/rails/tags","blobs_url":"https://api.github.com/repos/rails/rails/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rails/rails/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rails/rails/git/refs{/sha}","trees_url":"https://api.github.com/repos/rails/rails/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rails/rails/statuses/{sha}","languages_url":"https://api.github.com/repos/rails/rails/languages","stargazers_url":"https://api.github.com/repos/rails/rails/stargazers","contributors_url":"https://api.github.com/repos/rails/rails/contributors","subscribers_url":"https://api.github.com/repos/rails/rails/subscribers","subscription_url":"https://api.github.com/repos/rails/rails/subscription","commits_url":"https://api.github.com/repos/rails/rails/commits{/sha}","git_commits_url":"https://api.github.com/repos/rails/rails/git/commits{/sha}","comments_url":"https://api.github.com/repos/rails/rails/comments{/number}","issue_comment_url":"https://api.github.com/repos/rails/rails/issues/comments/{number}","contents_url":"https://api.github.com/repos/rails/rails/contents/{+path}","compare_url":"https://api.github.com/repos/rails/rails/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rails/rails/merges","archive_url":"https://api.github.com/repos/rails/rails/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rails/rails/downloads","issues_url":"https://api.github.com/repos/rails/rails/issues{/number}","pulls_url":"https://api.github.com/repos/rails/rails/pulls{/number}","milestones_url":"https://api.github.com/repos/rails/rails/milestones{/number}","notifications_url":"https://api.github.com/repos/rails/rails/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rails/rails/labels{/name}","releases_url":"https://api.github.com/repos/rails/rails/releases{/id}","created_at":"2008-04-11T02:19:47Z","updated_at":"2014-04-14T17:16:27Z","pushed_at":"2014-04-14T17:16:27Z","git_url":"git://github.com/rails/rails.git","ssh_url":"git@github.com:rails/rails.git","clone_url":"https://github.com/rails/rails.git","svn_url":"https://github.com/rails/rails","homepage":"http://rubyonrails.org","size":283449,"stargazers_count":21454,"watchers_count":21454,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"forks_count":7791,"mirror_url":null,"open_issues_count":724,"forks":7791,"open_issues":724,"watchers":21454,"default_branch":"master","master_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rails/rails/pulls/14735"},"html":{"href":"https://github.com/rails/rails/pull/14735"},"issue":{"href":"https://api.github.com/repos/rails/rails/issues/14735"},"comments":{"href":"https://api.github.com/repos/rails/rails/issues/14735/comments"},"review_comments":{"href":"https://api.github.com/repos/rails/rails/pulls/14735/comments"},"review_comment":{"href":"https://api.github.com/repos/rails/rails/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/rails/rails/pulls/14735/commits"},"statuses":{"href":"https://api.github.com/repos/rails/rails/statuses/655a3667aa99ae3f7e68024b3971b5783d6396bf"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"tenderlove","id":3124,"avatar_url":"https://avatars.githubusercontent.com/u/3124?","gravatar_id":"f29327647a9cff5c69618bae420792ea","url":"https://api.github.com/users/tenderlove","html_url":"https://github.com/tenderlove","followers_url":"https://api.github.com/users/tenderlove/followers","following_url":"https://api.github.com/users/tenderlove/following{/other_user}","gists_url":"https://api.github.com/users/tenderlove/gists{/gist_id}","starred_url":"https://api.github.com/users/tenderlove/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tenderlove/subscriptions","organizations_url":"https://api.github.com/users/tenderlove/orgs","repos_url":"https://api.github.com/users/tenderlove/repos","events_url":"https://api.github.com/users/tenderlove/events{/privacy}","received_events_url":"https://api.github.com/users/tenderlove/received_events","type":"User","site_admin":false},"comments":9,"review_comments":2,"commits":2,"additions":47,"deletions":4,"changed_files":3}},"public":true,"type":"PullRequestEvent","url":"https://github.com/rails/rails/pull/14735","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-14T10:16:28-07:00","payload":{"action":"closed","number":7965,"pull_request":{"url":"https://api.github.com/repos/rails/rails/pulls/7965","id":2668076,"html_url":"https://github.com/rails/rails/pull/7965","diff_url":"https://github.com/rails/rails/pull/7965.diff","patch_url":"https://github.com/rails/rails/pull/7965.patch","issue_url":"https://api.github.com/repos/rails/rails/issues/7965","number":7965,"state":"closed","title":"Use pessimistic locking to prevent calling destroy callbacks","user":{"login":"bdurand","id":41791,"avatar_url":"https://avatars.githubusercontent.com/u/41791?","gravatar_id":"fd922fce44ba22e32f8b6c44dcd3a6f9","url":"https://api.github.com/users/bdurand","html_url":"https://github.com/bdurand","followers_url":"https://api.github.com/users/bdurand/followers","following_url":"https://api.github.com/users/bdurand/following{/other_user}","gists_url":"https://api.github.com/users/bdurand/gists{/gist_id}","starred_url":"https://api.github.com/users/bdurand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bdurand/subscriptions","organizations_url":"https://api.github.com/users/bdurand/orgs","repos_url":"https://api.github.com/users/bdurand/repos","events_url":"https://api.github.com/users/bdurand/events{/privacy}","received_events_url":"https://api.github.com/users/bdurand/received_events","type":"User","site_admin":false},"body":"This change adds a pessimistic lock attempt before calling destroy callbacks on an ActiveRecord model. This is a work around for a race condition where a record is destroyed by concurrent processes. The record will only be deleted once, but the callbacks based on that deletion will be called multiple times. This can mess up logic like the association counter cache which is invoked by a callback.\r\n\r\nThe change adds a select call with lock => true before destroying so the database can lock the record (if it supports this mechanism). If the record no longer exists, then the callbacks are not called. The rest of the destroy chain is called so that the record will remain in a consistent state.","created_at":"2012-10-16T18:01:47Z","updated_at":"2014-04-14T17:16:27Z","closed_at":"2014-04-14T17:16:27Z","merged_at":null,"merge_commit_sha":"c32dfe666707674788baa82d7b001dde3c913116","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/rails/rails/pulls/7965/commits","review_comments_url":"https://api.github.com/repos/rails/rails/pulls/7965/comments","review_comment_url":"https://api.github.com/repos/rails/rails/pulls/comments/{number}","comments_url":"https://api.github.com/repos/rails/rails/issues/7965/comments","statuses_url":"https://api.github.com/repos/rails/rails/statuses/85d4ff282d044bedc70c68a09db2c5f9e9929afb","head":{"label":"bdurand:safe_destroy_callbacks","ref":"safe_destroy_callbacks","sha":"85d4ff282d044bedc70c68a09db2c5f9e9929afb","user":{"login":"bdurand","id":41791,"avatar_url":"https://avatars.githubusercontent.com/u/41791?","gravatar_id":"fd922fce44ba22e32f8b6c44dcd3a6f9","url":"https://api.github.com/users/bdurand","html_url":"https://github.com/bdurand","followers_url":"https://api.github.com/users/bdurand/followers","following_url":"https://api.github.com/users/bdurand/following{/other_user}","gists_url":"https://api.github.com/users/bdurand/gists{/gist_id}","starred_url":"https://api.github.com/users/bdurand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bdurand/subscriptions","organizations_url":"https://api.github.com/users/bdurand/orgs","repos_url":"https://api.github.com/users/bdurand/repos","events_url":"https://api.github.com/users/bdurand/events{/privacy}","received_events_url":"https://api.github.com/users/bdurand/received_events","type":"User","site_admin":false},"repo":{"id":1948068,"name":"rails","full_name":"bdurand/rails","owner":{"login":"bdurand","id":41791,"avatar_url":"https://avatars.githubusercontent.com/u/41791?","gravatar_id":"fd922fce44ba22e32f8b6c44dcd3a6f9","url":"https://api.github.com/users/bdurand","html_url":"https://github.com/bdurand","followers_url":"https://api.github.com/users/bdurand/followers","following_url":"https://api.github.com/users/bdurand/following{/other_user}","gists_url":"https://api.github.com/users/bdurand/gists{/gist_id}","starred_url":"https://api.github.com/users/bdurand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bdurand/subscriptions","organizations_url":"https://api.github.com/users/bdurand/orgs","repos_url":"https://api.github.com/users/bdurand/repos","events_url":"https://api.github.com/users/bdurand/events{/privacy}","received_events_url":"https://api.github.com/users/bdurand/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bdurand/rails","description":"Ruby on Rails","fork":true,"url":"https://api.github.com/repos/bdurand/rails","forks_url":"https://api.github.com/repos/bdurand/rails/forks","keys_url":"https://api.github.com/repos/bdurand/rails/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bdurand/rails/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bdurand/rails/teams","hooks_url":"https://api.github.com/repos/bdurand/rails/hooks","issue_events_url":"https://api.github.com/repos/bdurand/rails/issues/events{/number}","events_url":"https://api.github.com/repos/bdurand/rails/events","assignees_url":"https://api.github.com/repos/bdurand/rails/assignees{/user}","branches_url":"https://api.github.com/repos/bdurand/rails/branches{/branch}","tags_url":"https://api.github.com/repos/bdurand/rails/tags","blobs_url":"https://api.github.com/repos/bdurand/rails/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bdurand/rails/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bdurand/rails/git/refs{/sha}","trees_url":"https://api.github.com/repos/bdurand/rails/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bdurand/rails/statuses/{sha}","languages_url":"https://api.github.com/repos/bdurand/rails/languages","stargazers_url":"https://api.github.com/repos/bdurand/rails/stargazers","contributors_url":"https://api.github.com/repos/bdurand/rails/contributors","subscribers_url":"https://api.github.com/repos/bdurand/rails/subscribers","subscription_url":"https://api.github.com/repos/bdurand/rails/subscription","commits_url":"https://api.github.com/repos/bdurand/rails/commits{/sha}","git_commits_url":"https://api.github.com/repos/bdurand/rails/git/commits{/sha}","comments_url":"https://api.github.com/repos/bdurand/rails/comments{/number}","issue_comment_url":"https://api.github.com/repos/bdurand/rails/issues/comments/{number}","contents_url":"https://api.github.com/repos/bdurand/rails/contents/{+path}","compare_url":"https://api.github.com/repos/bdurand/rails/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bdurand/rails/merges","archive_url":"https://api.github.com/repos/bdurand/rails/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bdurand/rails/downloads","issues_url":"https://api.github.com/repos/bdurand/rails/issues{/number}","pulls_url":"https://api.github.com/repos/bdurand/rails/pulls{/number}","milestones_url":"https://api.github.com/repos/bdurand/rails/milestones{/number}","notifications_url":"https://api.github.com/repos/bdurand/rails/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bdurand/rails/labels{/name}","releases_url":"https://api.github.com/repos/bdurand/rails/releases{/id}","created_at":"2011-06-24T15:01:55Z","updated_at":"2014-04-14T17:16:27Z","pushed_at":"2012-10-19T17:14:06Z","git_url":"git://github.com/bdurand/rails.git","ssh_url":"git@github.com:bdurand/rails.git","clone_url":"https://github.com/bdurand/rails.git","svn_url":"https://github.com/bdurand/rails","homepage":"http://rubyonrails.org","size":74990,"stargazers_count":1,"watchers_count":1,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master","master_branch":"master"}},"base":{"label":"rails:master","ref":"master","sha":"8c2e4b664e1dfabe2e892c75f5b6038f86eab982","user":{"login":"rails","id":4223,"avatar_url":"https://avatars.githubusercontent.com/u/4223?","gravatar_id":"30f39a09e233e8369dddf6feb4be0308","url":"https://api.github.com/users/rails","html_url":"https://github.com/rails","followers_url":"https://api.github.com/users/rails/followers","following_url":"https://api.github.com/users/rails/following{/other_user}","gists_url":"https://api.github.com/users/rails/gists{/gist_id}","starred_url":"https://api.github.com/users/rails/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rails/subscriptions","organizations_url":"https://api.github.com/users/rails/orgs","repos_url":"https://api.github.com/users/rails/repos","events_url":"https://api.github.com/users/rails/events{/privacy}","received_events_url":"https://api.github.com/users/rails/received_events","type":"Organization","site_admin":false},"repo":{"id":8514,"name":"rails","full_name":"rails/rails","owner":{"login":"rails","id":4223,"avatar_url":"https://avatars.githubusercontent.com/u/4223?","gravatar_id":"30f39a09e233e8369dddf6feb4be0308","url":"https://api.github.com/users/rails","html_url":"https://github.com/rails","followers_url":"https://api.github.com/users/rails/followers","following_url":"https://api.github.com/users/rails/following{/other_user}","gists_url":"https://api.github.com/users/rails/gists{/gist_id}","starred_url":"https://api.github.com/users/rails/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rails/subscriptions","organizations_url":"https://api.github.com/users/rails/orgs","repos_url":"https://api.github.com/users/rails/repos","events_url":"https://api.github.com/users/rails/events{/privacy}","received_events_url":"https://api.github.com/users/rails/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rails/rails","description":"Ruby on Rails","fork":false,"url":"https://api.github.com/repos/rails/rails","forks_url":"https://api.github.com/repos/rails/rails/forks","keys_url":"https://api.github.com/repos/rails/rails/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rails/rails/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rails/rails/teams","hooks_url":"https://api.github.com/repos/rails/rails/hooks","issue_events_url":"https://api.github.com/repos/rails/rails/issues/events{/number}","events_url":"https://api.github.com/repos/rails/rails/events","assignees_url":"https://api.github.com/repos/rails/rails/assignees{/user}","branches_url":"https://api.github.com/repos/rails/rails/branches{/branch}","tags_url":"https://api.github.com/repos/rails/rails/tags","blobs_url":"https://api.github.com/repos/rails/rails/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rails/rails/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rails/rails/git/refs{/sha}","trees_url":"https://api.github.com/repos/rails/rails/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rails/rails/statuses/{sha}","languages_url":"https://api.github.com/repos/rails/rails/languages","stargazers_url":"https://api.github.com/repos/rails/rails/stargazers","contributors_url":"https://api.github.com/repos/rails/rails/contributors","subscribers_url":"https://api.github.com/repos/rails/rails/subscribers","subscription_url":"https://api.github.com/repos/rails/rails/subscription","commits_url":"https://api.github.com/repos/rails/rails/commits{/sha}","git_commits_url":"https://api.github.com/repos/rails/rails/git/commits{/sha}","comments_url":"https://api.github.com/repos/rails/rails/comments{/number}","issue_comment_url":"https://api.github.com/repos/rails/rails/issues/comments/{number}","contents_url":"https://api.github.com/repos/rails/rails/contents/{+path}","compare_url":"https://api.github.com/repos/rails/rails/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rails/rails/merges","archive_url":"https://api.github.com/repos/rails/rails/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rails/rails/downloads","issues_url":"https://api.github.com/repos/rails/rails/issues{/number}","pulls_url":"https://api.github.com/repos/rails/rails/pulls{/number}","milestones_url":"https://api.github.com/repos/rails/rails/milestones{/number}","notifications_url":"https://api.github.com/repos/rails/rails/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rails/rails/labels{/name}","releases_url":"https://api.github.com/repos/rails/rails/releases{/id}","created_at":"2008-04-11T02:19:47Z","updated_at":"2014-04-14T17:16:27Z","pushed_at":"2014-04-14T17:16:27Z","git_url":"git://github.com/rails/rails.git","ssh_url":"git@github.com:rails/rails.git","clone_url":"https://github.com/rails/rails.git","svn_url":"https://github.com/rails/rails","homepage":"http://rubyonrails.org","size":283449,"stargazers_count":21454,"watchers_count":21454,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"forks_count":7791,"mirror_url":null,"open_issues_count":724,"forks":7791,"open_issues":724,"watchers":21454,"default_branch":"master","master_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rails/rails/pulls/7965"},"html":{"href":"https://github.com/rails/rails/pull/7965"},"issue":{"href":"https://api.github.com/repos/rails/rails/issues/7965"},"comments":{"href":"https://api.github.com/repos/rails/rails/issues/7965/comments"},"review_comments":{"href":"https://api.github.com/repos/rails/rails/pulls/7965/comments"},"review_comment":{"href":"https://api.github.com/repos/rails/rails/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/rails/rails/pulls/7965/commits"},"statuses":{"href":"https://api.github.com/repos/rails/rails/statuses/85d4ff282d044bedc70c68a09db2c5f9e9929afb"}},"merged":false,"mergeable":false,"mergeable_state":"dirty","merged_by":null,"comments":12,"review_comments":0,"commits":1,"additions":31,"deletions":2,"changed_files":3}},"public":true,"type":"PullRequestEvent","url":"https://github.com/rails/rails/pull/7965","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-14T10:16:23-07:00","payload":{"issue_id":31411261,"comment_id":40392602},"public":true,"type":"IssueCommentEvent","url":"https://github.com/rails/rails/pull/14735#issuecomment-40392602","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-13T20:43:28-07:00","payload":{"issue_id":31411261,"comment_id":40331306},"public":true,"type":"IssueCommentEvent","url":"https://github.com/rails/rails/pull/14735#issuecomment-40331306","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-13T20:36:38-07:00","payload":{"issue_id":31411261,"comment_id":40331095},"public":true,"type":"IssueCommentEvent","url":"https://github.com/rails/rails/pull/14735#issuecomment-40331095","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-13T20:28:55-07:00","payload":{"issue_id":31411261,"comment_id":40330821},"public":true,"type":"IssueCommentEvent","url":"https://github.com/rails/rails/pull/14735#issuecomment-40330821","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-13T20:05:44-07:00","payload":{"comment":{"url":"https://api.github.com/repos/rails/rails/pulls/comments/11570370","id":11570370,"diff_hunk":"@@ -118,5 +118,26 @@ def decrement_counter(counter_name, id)\n update_counters(id, counter_name => -1)\n end\n end\n+\n+ protected\n+\n+ def actually_destroyed?\n+ @_actually_destroyed","path":"activerecord/lib/active_record/counter_cache.rb","position":8,"original_position":8,"commit_id":"655a3667aa99ae3f7e68024b3971b5783d6396bf","original_commit_id":"655a3667aa99ae3f7e68024b3971b5783d6396bf","user":{"login":"tenderlove","id":3124,"avatar_url":"https://avatars.githubusercontent.com/u/3124?","gravatar_id":"f29327647a9cff5c69618bae420792ea","url":"https://api.github.com/users/tenderlove","html_url":"https://github.com/tenderlove","followers_url":"https://api.github.com/users/tenderlove/followers","following_url":"https://api.github.com/users/tenderlove/following{/other_user}","gists_url":"https://api.github.com/users/tenderlove/gists{/gist_id}","starred_url":"https://api.github.com/users/tenderlove/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tenderlove/subscriptions","organizations_url":"https://api.github.com/users/tenderlove/orgs","repos_url":"https://api.github.com/users/tenderlove/repos","events_url":"https://api.github.com/users/tenderlove/events{/privacy}","received_events_url":"https://api.github.com/users/tenderlove/received_events","type":"User","site_admin":false},"body":"This will cause uninitialized variable warnings.","created_at":"2014-04-14T03:05:44Z","updated_at":"2014-04-14T03:05:44Z","html_url":"https://github.com/rails/rails/pull/14735#discussion_r11570370","pull_request_url":"https://api.github.com/repos/rails/rails/pulls/14735","_links":{"self":{"href":"https://api.github.com/repos/rails/rails/pulls/comments/11570370"},"html":{"href":"https://github.com/rails/rails/pull/14735#discussion_r11570370"},"pull_request":{"href":"https://api.github.com/repos/rails/rails/pulls/14735"}}}},"public":true,"type":"PullRequestReviewCommentEvent","url":"https://github.com/rails/rails/pull/14735#discussion_r11570370","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-13T19:31:12-07:00","payload":{"commit":"af549a1ad6692d7e2c756750651f0e1b293f5185","comment_id":5997538},"public":true,"type":"CommitCommentEvent","url":"https://github.com/rails/rails/commit/af549a1ad6692d7e2c756750651f0e1b293f5185#-P0","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-13T15:47:51-07:00","payload":{"shas":[["af549a1ad6692d7e2c756750651f0e1b293f5185","aaron.patterson@gmail.com","again, read_attribute is public, so just call it","Aaron Patterson",true]],"size":1,"ref":"refs/heads/master","head":"af549a1ad6692d7e2c756750651f0e1b293f5185"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/feb88bda54...af549a1ad6","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-13T15:45:10-07:00","payload":{"shas":[["feb88bda5484c2af13daec768f47d46e9ab4879e","aaron.patterson@gmail.com","read_attribute is public, so we should just call it","Aaron Patterson",true]],"size":1,"ref":"refs/heads/master","head":"feb88bda5484c2af13daec768f47d46e9ab4879e"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/4baa866e35...feb88bda54","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-13T09:24:40-07:00","payload":{"action":"opened","number":1,"pull_request":{"url":"https://api.github.com/repos/unak/unagiaward/pulls/1","id":14695523,"html_url":"https://github.com/unak/unagiaward/pull/1","diff_url":"https://github.com/unak/unagiaward/pull/1.diff","patch_url":"https://github.com/unak/unagiaward/pull/1.patch","issue_url":"https://api.github.com/repos/unak/unagiaward/issues/1","number":1,"state":"open","title":"Fix spelling, make sentence a little more natural","user":{"login":"tenderlove","id":3124,"avatar_url":"https://avatars.githubusercontent.com/u/3124?","gravatar_id":"f29327647a9cff5c69618bae420792ea","url":"https://api.github.com/users/tenderlove","html_url":"https://github.com/tenderlove","followers_url":"https://api.github.com/users/tenderlove/followers","following_url":"https://api.github.com/users/tenderlove/following{/other_user}","gists_url":"https://api.github.com/users/tenderlove/gists{/gist_id}","starred_url":"https://api.github.com/users/tenderlove/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tenderlove/subscriptions","organizations_url":"https://api.github.com/users/tenderlove/orgs","repos_url":"https://api.github.com/users/tenderlove/repos","events_url":"https://api.github.com/users/tenderlove/events{/privacy}","received_events_url":"https://api.github.com/users/tenderlove/received_events","type":"User","site_admin":false},"body":"I changed one of the sentences about RubyKaigi too.","created_at":"2014-04-13T16:24:40Z","updated_at":"2014-04-13T16:24:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/unak/unagiaward/pulls/1/commits","review_comments_url":"https://api.github.com/repos/unak/unagiaward/pulls/1/comments","review_comment_url":"https://api.github.com/repos/unak/unagiaward/pulls/comments/{number}","comments_url":"https://api.github.com/repos/unak/unagiaward/issues/1/comments","statuses_url":"https://api.github.com/repos/unak/unagiaward/statuses/ab8b093c8cf282f9fb6c3ba3870a076a03f54c13","head":{"label":"tenderlove:spelling","ref":"spelling","sha":"ab8b093c8cf282f9fb6c3ba3870a076a03f54c13","user":{"login":"tenderlove","id":3124,"avatar_url":"https://avatars.githubusercontent.com/u/3124?","gravatar_id":"f29327647a9cff5c69618bae420792ea","url":"https://api.github.com/users/tenderlove","html_url":"https://github.com/tenderlove","followers_url":"https://api.github.com/users/tenderlove/followers","following_url":"https://api.github.com/users/tenderlove/following{/other_user}","gists_url":"https://api.github.com/users/tenderlove/gists{/gist_id}","starred_url":"https://api.github.com/users/tenderlove/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tenderlove/subscriptions","organizations_url":"https://api.github.com/users/tenderlove/orgs","repos_url":"https://api.github.com/users/tenderlove/repos","events_url":"https://api.github.com/users/tenderlove/events{/privacy}","received_events_url":"https://api.github.com/users/tenderlove/received_events","type":"User","site_admin":false},"repo":{"id":18732985,"name":"unagiaward","full_name":"tenderlove/unagiaward","owner":{"login":"tenderlove","id":3124,"avatar_url":"https://avatars.githubusercontent.com/u/3124?","gravatar_id":"f29327647a9cff5c69618bae420792ea","url":"https://api.github.com/users/tenderlove","html_url":"https://github.com/tenderlove","followers_url":"https://api.github.com/users/tenderlove/followers","following_url":"https://api.github.com/users/tenderlove/following{/other_user}","gists_url":"https://api.github.com/users/tenderlove/gists{/gist_id}","starred_url":"https://api.github.com/users/tenderlove/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tenderlove/subscriptions","organizations_url":"https://api.github.com/users/tenderlove/orgs","repos_url":"https://api.github.com/users/tenderlove/repos","events_url":"https://api.github.com/users/tenderlove/events{/privacy}","received_events_url":"https://api.github.com/users/tenderlove/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tenderlove/unagiaward","description":"","fork":true,"url":"https://api.github.com/repos/tenderlove/unagiaward","forks_url":"https://api.github.com/repos/tenderlove/unagiaward/forks","keys_url":"https://api.github.com/repos/tenderlove/unagiaward/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tenderlove/unagiaward/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tenderlove/unagiaward/teams","hooks_url":"https://api.github.com/repos/tenderlove/unagiaward/hooks","issue_events_url":"https://api.github.com/repos/tenderlove/unagiaward/issues/events{/number}","events_url":"https://api.github.com/repos/tenderlove/unagiaward/events","assignees_url":"https://api.github.com/repos/tenderlove/unagiaward/assignees{/user}","branches_url":"https://api.github.com/repos/tenderlove/unagiaward/branches{/branch}","tags_url":"https://api.github.com/repos/tenderlove/unagiaward/tags","blobs_url":"https://api.github.com/repos/tenderlove/unagiaward/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tenderlove/unagiaward/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tenderlove/unagiaward/git/refs{/sha}","trees_url":"https://api.github.com/repos/tenderlove/unagiaward/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tenderlove/unagiaward/statuses/{sha}","languages_url":"https://api.github.com/repos/tenderlove/unagiaward/languages","stargazers_url":"https://api.github.com/repos/tenderlove/unagiaward/stargazers","contributors_url":"https://api.github.com/repos/tenderlove/unagiaward/contributors","subscribers_url":"https://api.github.com/repos/tenderlove/unagiaward/subscribers","subscription_url":"https://api.github.com/repos/tenderlove/unagiaward/subscription","commits_url":"https://api.github.com/repos/tenderlove/unagiaward/commits{/sha}","git_commits_url":"https://api.github.com/repos/tenderlove/unagiaward/git/commits{/sha}","comments_url":"https://api.github.com/repos/tenderlove/unagiaward/comments{/number}","issue_comment_url":"https://api.github.com/repos/tenderlove/unagiaward/issues/comments/{number}","contents_url":"https://api.github.com/repos/tenderlove/unagiaward/contents/{+path}","compare_url":"https://api.github.com/repos/tenderlove/unagiaward/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tenderlove/unagiaward/merges","archive_url":"https://api.github.com/repos/tenderlove/unagiaward/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tenderlove/unagiaward/downloads","issues_url":"https://api.github.com/repos/tenderlove/unagiaward/issues{/number}","pulls_url":"https://api.github.com/repos/tenderlove/unagiaward/pulls{/number}","milestones_url":"https://api.github.com/repos/tenderlove/unagiaward/milestones{/number}","notifications_url":"https://api.github.com/repos/tenderlove/unagiaward/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tenderlove/unagiaward/labels{/name}","releases_url":"https://api.github.com/repos/tenderlove/unagiaward/releases{/id}","created_at":"2014-04-13T15:52:55Z","updated_at":"2014-04-13T16:24:40Z","pushed_at":"2014-04-13T16:11:03Z","git_url":"git://github.com/tenderlove/unagiaward.git","ssh_url":"git@github.com:tenderlove/unagiaward.git","clone_url":"https://github.com/tenderlove/unagiaward.git","svn_url":"https://github.com/tenderlove/unagiaward","homepage":null,"size":0,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master","master_branch":"master"}},"base":{"label":"unak:master","ref":"master","sha":"e66024ac26bb3f298ef33caff8510575fe5a8b2a","user":{"login":"unak","id":17790,"avatar_url":"https://avatars.githubusercontent.com/u/17790?","gravatar_id":"8cbb39dadafaf2287a83a13ee4981ec9","url":"https://api.github.com/users/unak","html_url":"https://github.com/unak","followers_url":"https://api.github.com/users/unak/followers","following_url":"https://api.github.com/users/unak/following{/other_user}","gists_url":"https://api.github.com/users/unak/gists{/gist_id}","starred_url":"https://api.github.com/users/unak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/unak/subscriptions","organizations_url":"https://api.github.com/users/unak/orgs","repos_url":"https://api.github.com/users/unak/repos","events_url":"https://api.github.com/users/unak/events{/privacy}","received_events_url":"https://api.github.com/users/unak/received_events","type":"User","site_admin":false},"repo":{"id":18732866,"name":"unagiaward","full_name":"unak/unagiaward","owner":{"login":"unak","id":17790,"avatar_url":"https://avatars.githubusercontent.com/u/17790?","gravatar_id":"8cbb39dadafaf2287a83a13ee4981ec9","url":"https://api.github.com/users/unak","html_url":"https://github.com/unak","followers_url":"https://api.github.com/users/unak/followers","following_url":"https://api.github.com/users/unak/following{/other_user}","gists_url":"https://api.github.com/users/unak/gists{/gist_id}","starred_url":"https://api.github.com/users/unak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/unak/subscriptions","organizations_url":"https://api.github.com/users/unak/orgs","repos_url":"https://api.github.com/users/unak/repos","events_url":"https://api.github.com/users/unak/events{/privacy}","received_events_url":"https://api.github.com/users/unak/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/unak/unagiaward","description":"Ruby Unagi Award","fork":false,"url":"https://api.github.com/repos/unak/unagiaward","forks_url":"https://api.github.com/repos/unak/unagiaward/forks","keys_url":"https://api.github.com/repos/unak/unagiaward/keys{/key_id}","collaborators_url":"https://api.github.com/repos/unak/unagiaward/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/unak/unagiaward/teams","hooks_url":"https://api.github.com/repos/unak/unagiaward/hooks","issue_events_url":"https://api.github.com/repos/unak/unagiaward/issues/events{/number}","events_url":"https://api.github.com/repos/unak/unagiaward/events","assignees_url":"https://api.github.com/repos/unak/unagiaward/assignees{/user}","branches_url":"https://api.github.com/repos/unak/unagiaward/branches{/branch}","tags_url":"https://api.github.com/repos/unak/unagiaward/tags","blobs_url":"https://api.github.com/repos/unak/unagiaward/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/unak/unagiaward/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/unak/unagiaward/git/refs{/sha}","trees_url":"https://api.github.com/repos/unak/unagiaward/git/trees{/sha}","statuses_url":"https://api.github.com/repos/unak/unagiaward/statuses/{sha}","languages_url":"https://api.github.com/repos/unak/unagiaward/languages","stargazers_url":"https://api.github.com/repos/unak/unagiaward/stargazers","contributors_url":"https://api.github.com/repos/unak/unagiaward/contributors","subscribers_url":"https://api.github.com/repos/unak/unagiaward/subscribers","subscription_url":"https://api.github.com/repos/unak/unagiaward/subscription","commits_url":"https://api.github.com/repos/unak/unagiaward/commits{/sha}","git_commits_url":"https://api.github.com/repos/unak/unagiaward/git/commits{/sha}","comments_url":"https://api.github.com/repos/unak/unagiaward/comments{/number}","issue_comment_url":"https://api.github.com/repos/unak/unagiaward/issues/comments/{number}","contents_url":"https://api.github.com/repos/unak/unagiaward/contents/{+path}","compare_url":"https://api.github.com/repos/unak/unagiaward/compare/{base}...{head}","merges_url":"https://api.github.com/repos/unak/unagiaward/merges","archive_url":"https://api.github.com/repos/unak/unagiaward/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/unak/unagiaward/downloads","issues_url":"https://api.github.com/repos/unak/unagiaward/issues{/number}","pulls_url":"https://api.github.com/repos/unak/unagiaward/pulls{/number}","milestones_url":"https://api.github.com/repos/unak/unagiaward/milestones{/number}","notifications_url":"https://api.github.com/repos/unak/unagiaward/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/unak/unagiaward/labels{/name}","releases_url":"https://api.github.com/repos/unak/unagiaward/releases{/id}","created_at":"2014-04-13T15:48:07Z","updated_at":"2014-04-13T16:19:34Z","pushed_at":"2014-04-13T16:19:34Z","git_url":"git://github.com/unak/unagiaward.git","ssh_url":"git@github.com:unak/unagiaward.git","clone_url":"https://github.com/unak/unagiaward.git","svn_url":"https://github.com/unak/unagiaward","homepage":"https://unagiaward.herokuapp.com","size":0,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":1,"mirror_url":null,"open_issues_count":1,"forks":1,"open_issues":1,"watchers":0,"default_branch":"master","master_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/unak/unagiaward/pulls/1"},"html":{"href":"https://github.com/unak/unagiaward/pull/1"},"issue":{"href":"https://api.github.com/repos/unak/unagiaward/issues/1"},"comments":{"href":"https://api.github.com/repos/unak/unagiaward/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/unak/unagiaward/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/unak/unagiaward/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/unak/unagiaward/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/unak/unagiaward/statuses/ab8b093c8cf282f9fb6c3ba3870a076a03f54c13"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":5,"deletions":5,"changed_files":1}},"public":true,"type":"PullRequestEvent","url":"https://github.com/unak/unagiaward/pull/1","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":18732866,"name":"unagiaward","url":"https://github.com/unak/unagiaward","description":"Ruby Unagi Award","homepage":"https://unagiaward.herokuapp.com","watchers":1,"stargazers":1,"forks":1,"fork":false,"size":0,"owner":"unak","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":true,"language":"Ruby","created_at":"2014-04-13T08:48:07-07:00","pushed_at":"2014-04-15T01:05:03-07:00","master_branch":"master"}},{"created_at":"2014-04-13T09:11:05-07:00","payload":{"ref":"spelling","ref_type":"branch","master_branch":"master","description":"","pusher_type":"user"},"public":true,"type":"CreateEvent","url":"https://github.com/tenderlove/unagiaward/compare/spelling","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":18732985,"name":"unagiaward","url":"https://github.com/tenderlove/unagiaward","description":"","watchers":0,"stargazers":0,"forks":0,"fork":true,"size":0,"owner":"tenderlove","private":false,"open_issues":0,"has_issues":false,"has_downloads":true,"has_wiki":true,"language":"Ruby","created_at":"2014-04-13T08:52:55-07:00","pushed_at":"2014-04-13T09:11:03-07:00","master_branch":"master"}},{"created_at":"2014-04-13T08:52:56-07:00","payload":{},"public":true,"type":"ForkEvent","url":"https://github.com/tenderlove/unagiaward","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":18732866,"name":"unagiaward","url":"https://github.com/unak/unagiaward","description":"Ruby Unagi Award","homepage":"https://unagiaward.herokuapp.com","watchers":1,"stargazers":1,"forks":1,"fork":false,"size":0,"owner":"unak","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":true,"language":"Ruby","created_at":"2014-04-13T08:48:07-07:00","pushed_at":"2014-04-15T01:05:03-07:00","master_branch":"master"}},{"created_at":"2014-04-12T18:40:34-07:00","payload":{"shas":[["09608ce9d236c6a9439cf011a3442e1492d0732e","aaron.patterson@gmail.com","use an array for bind params to simplify substitution","Aaron Patterson",true]],"size":1,"ref":"refs/heads/adequaterecord","head":"09608ce9d236c6a9439cf011a3442e1492d0732e"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/85f3a57a57...09608ce9d2","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-12T10:15:16-07:00","payload":{"shas":[["711a882f106385e248135c84ea9a6a827f0bd1e1","aaron.patterson@gmail.com","don't bother with an offset if the offset is zero\n\nwe're guaranteed to pass a numeric value for offset, so if it's zero,\njust don't add an offset to the query","Aaron Patterson",true]],"size":1,"ref":"refs/heads/master","head":"711a882f106385e248135c84ea9a6a827f0bd1e1"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/8c2b79d0c8...711a882f10","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-12T09:47:53-07:00","payload":{"shas":[["0405d5a7e95776f9adf5b8ff064300898d89b43a","aaron.patterson@gmail.com","remove branching logic from calls to find_nth","Aaron Patterson",true],["8c2b79d0c8f3533f8045baf647317c4ff33b0f26","aaron.patterson@gmail.com","only add the offset and index when we need to","Aaron Patterson",true]],"size":2,"ref":"refs/heads/master","head":"8c2b79d0c8f3533f8045baf647317c4ff33b0f26"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/fd56a78c0e...8c2b79d0c8","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-11T16:23:05-07:00","payload":{"shas":[["e533855383ea187d8a157d49afc438f893c4b8ae","aaron.patterson@gmail.com","please use Ruby, not ActiveSupport","Aaron Patterson",true]],"size":1,"ref":"refs/heads/master","head":"e533855383ea187d8a157d49afc438f893c4b8ae"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/c8a70660d4...e533855383","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-11T16:17:46-07:00","payload":{"shas":[["d1192956e481474a77ea01da35c0546ff422a0e6","aaron.patterson@gmail.com","always add a space before keywords (it is easier)","Aaron Patterson",true]],"size":1,"ref":"refs/heads/master","head":"d1192956e481474a77ea01da35c0546ff422a0e6"},"public":true,"type":"PushEvent","url":"https://github.com/rails/arel/compare/048478bf15...d1192956e4","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":337788,"name":"arel","url":"https://github.com/rails/arel","description":"A Relational Algebra","homepage":"","watchers":985,"stargazers":985,"forks":228,"fork":true,"size":4512,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":true,"language":"Ruby","created_at":"2009-10-14T16:47:40-07:00","pushed_at":"2014-04-14T14:16:04-07:00","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-11T16:17:37-07:00","payload":{"shas":[["85f3a57a57b3c6d105e35936bf3ee972dc652902","aaron.patterson@gmail.com","propogate bind values collected in arel to SQL generation","Aaron Patterson",true]],"size":1,"ref":"refs/heads/adequaterecord","head":"85f3a57a57b3c6d105e35936bf3ee972dc652902"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/dbc8c0ee36...85f3a57a57","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-10T17:29:33-07:00","payload":{"shas":[["90c9a09ff70388b32b9c9afca4ae998b99fd2d1f","aaron.patterson@gmail.com","remove dead code","Aaron Patterson",true],["47037b648d1b56470dba35798fc5e30f1143eb95","aaron.patterson@gmail.com","eagerly build the relation object","Aaron Patterson",true],["496204009eb3265a71d27c8a5513ca0dd803ea45","aaron.patterson@gmail.com","eagerly build the bind map","Aaron Patterson",true],["f85e4bca14a3ccba14facee474f601f9ff42dd56","aaron.patterson@gmail.com","eagerly build the cacheable query builder","Aaron Patterson",true],["8de3c433ef21d325c9ab3072c75da4b3d9043d8d","aaron.patterson@gmail.com","fix ivar names and add reader methods","Aaron Patterson",true],["2d3969c82fd8aa57186c263afd4b2d93eb6ba5d3","aaron.patterson@gmail.com","stop caching the class on the statement cache object","Aaron Patterson",true],["249fd686fb86c89463d791f44114fd829cb05bd2","aaron.patterson@gmail.com","remove intelligence from StatementCache#initialize","Aaron Patterson",true],["dbc8c0ee36ddda7c27a375c78bbdb989fd30c298","aaron.patterson@gmail.com","decouple the factory method from the constructing model\n\nThe factory method only requires the constructing model to get the\nconnection object. Since the model is available when calling the factory\nmethod, we can just pass the appropriate connection in.","Aaron Patterson",true]],"size":8,"ref":"refs/heads/adequaterecord","head":"dbc8c0ee36ddda7c27a375c78bbdb989fd30c298"},"public":true,"type":"PushEvent","url":"https://github.com/rails/rails/compare/6388b4b153...dbc8c0ee36","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":8514,"name":"rails","url":"https://github.com/rails/rails","description":"Ruby on Rails","homepage":"http://rubyonrails.org","watchers":21498,"stargazers":21498,"forks":7820,"fork":false,"size":284597,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":false,"language":"Ruby","created_at":"2008-04-10T19:19:47-07:00","pushed_at":"2014-04-16T15:03:26-07:00","integrate_branch":"master","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-10T11:14:25-07:00","payload":{"shas":[["214af496460c3639e8963c85834ee064f203cc6b","jean.boussier@gmail.com","Allow INSERT INTO <table> SELECT queries","Jean Boussier",true],["4a898b3c682f74890065e28ffe03899f23a4ab20","jean.boussier@gmail.com","Get rid of the visit select hack","Jean Boussier",true],["048478bf152a495a2d0ba17990d6966970a38cff","aaron.patterson@gmail.com","Merge pull request #255 from byroot/insert-select\n\nAllow INSERT INTO <table> SELECT queries","Aaron Patterson",true]],"size":3,"ref":"refs/heads/master","head":"048478bf152a495a2d0ba17990d6966970a38cff"},"public":true,"type":"PushEvent","url":"https://github.com/rails/arel/compare/4b187a19b1...048478bf15","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":337788,"name":"arel","url":"https://github.com/rails/arel","description":"A Relational Algebra","homepage":"","watchers":985,"stargazers":985,"forks":228,"fork":true,"size":4512,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":true,"language":"Ruby","created_at":"2009-10-14T16:47:40-07:00","pushed_at":"2014-04-14T14:16:04-07:00","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-10T11:14:23-07:00","payload":{"action":"closed","number":255,"pull_request":{"url":"https://api.github.com/repos/rails/arel/pulls/255","id":14605393,"html_url":"https://github.com/rails/arel/pull/255","diff_url":"https://github.com/rails/arel/pull/255.diff","patch_url":"https://github.com/rails/arel/pull/255.patch","issue_url":"https://api.github.com/repos/rails/arel/issues/255","number":255,"state":"closed","title":"Allow INSERT INTO <table> SELECT queries","user":{"login":"byroot","id":44640,"avatar_url":"https://avatars.githubusercontent.com/u/44640?","gravatar_id":"a0f37219f0943a048003ef5269ff31e8","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","site_admin":false},"body":"I'm afraid I had to use a hack here: https://github.com/byroot/arel/compare/insert-select?expand=1#diff-3538aead5b80677372eea0e903ff728eR106\r\n\r\nIf you have an idea on how do this better, let me know.\r\n\r\nRegards.","created_at":"2014-04-10T14:10:15Z","updated_at":"2014-04-10T18:14:23Z","closed_at":"2014-04-10T18:14:23Z","merged_at":"2014-04-10T18:14:23Z","merge_commit_sha":"4e5fad1b76b78918d794abf79a5d659ff990d112","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/rails/arel/pulls/255/commits","review_comments_url":"https://api.github.com/repos/rails/arel/pulls/255/comments","review_comment_url":"https://api.github.com/repos/rails/arel/pulls/comments/{number}","comments_url":"https://api.github.com/repos/rails/arel/issues/255/comments","statuses_url":"https://api.github.com/repos/rails/arel/statuses/4a898b3c682f74890065e28ffe03899f23a4ab20","head":{"label":"byroot:insert-select","ref":"insert-select","sha":"4a898b3c682f74890065e28ffe03899f23a4ab20","user":{"login":"byroot","id":44640,"avatar_url":"https://avatars.githubusercontent.com/u/44640?","gravatar_id":"a0f37219f0943a048003ef5269ff31e8","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","site_admin":false},"repo":{"id":18613774,"name":"arel","full_name":"byroot/arel","owner":{"login":"byroot","id":44640,"avatar_url":"https://avatars.githubusercontent.com/u/44640?","gravatar_id":"a0f37219f0943a048003ef5269ff31e8","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/byroot/arel","description":"A Relational Algebra","fork":true,"url":"https://api.github.com/repos/byroot/arel","forks_url":"https://api.github.com/repos/byroot/arel/forks","keys_url":"https://api.github.com/repos/byroot/arel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/byroot/arel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/byroot/arel/teams","hooks_url":"https://api.github.com/repos/byroot/arel/hooks","issue_events_url":"https://api.github.com/repos/byroot/arel/issues/events{/number}","events_url":"https://api.github.com/repos/byroot/arel/events","assignees_url":"https://api.github.com/repos/byroot/arel/assignees{/user}","branches_url":"https://api.github.com/repos/byroot/arel/branches{/branch}","tags_url":"https://api.github.com/repos/byroot/arel/tags","blobs_url":"https://api.github.com/repos/byroot/arel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/byroot/arel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/byroot/arel/git/refs{/sha}","trees_url":"https://api.github.com/repos/byroot/arel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/byroot/arel/statuses/{sha}","languages_url":"https://api.github.com/repos/byroot/arel/languages","stargazers_url":"https://api.github.com/repos/byroot/arel/stargazers","contributors_url":"https://api.github.com/repos/byroot/arel/contributors","subscribers_url":"https://api.github.com/repos/byroot/arel/subscribers","subscription_url":"https://api.github.com/repos/byroot/arel/subscription","commits_url":"https://api.github.com/repos/byroot/arel/commits{/sha}","git_commits_url":"https://api.github.com/repos/byroot/arel/git/commits{/sha}","comments_url":"https://api.github.com/repos/byroot/arel/comments{/number}","issue_comment_url":"https://api.github.com/repos/byroot/arel/issues/comments/{number}","contents_url":"https://api.github.com/repos/byroot/arel/contents/{+path}","compare_url":"https://api.github.com/repos/byroot/arel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/byroot/arel/merges","archive_url":"https://api.github.com/repos/byroot/arel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/byroot/arel/downloads","issues_url":"https://api.github.com/repos/byroot/arel/issues{/number}","pulls_url":"https://api.github.com/repos/byroot/arel/pulls{/number}","milestones_url":"https://api.github.com/repos/byroot/arel/milestones{/number}","notifications_url":"https://api.github.com/repos/byroot/arel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/byroot/arel/labels{/name}","releases_url":"https://api.github.com/repos/byroot/arel/releases{/id}","created_at":"2014-04-09T21:19:44Z","updated_at":"2014-04-10T18:14:23Z","pushed_at":"2014-04-10T17:52:51Z","git_url":"git://github.com/byroot/arel.git","ssh_url":"git@github.com:byroot/arel.git","clone_url":"https://github.com/byroot/arel.git","svn_url":"https://github.com/byroot/arel","homepage":"","size":3108,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master","master_branch":"master"}},"base":{"label":"rails:master","ref":"master","sha":"4b187a19b16ed4cb0b248e4e4d658a4ef6e8f26e","user":{"login":"rails","id":4223,"avatar_url":"https://avatars.githubusercontent.com/u/4223?","gravatar_id":"30f39a09e233e8369dddf6feb4be0308","url":"https://api.github.com/users/rails","html_url":"https://github.com/rails","followers_url":"https://api.github.com/users/rails/followers","following_url":"https://api.github.com/users/rails/following{/other_user}","gists_url":"https://api.github.com/users/rails/gists{/gist_id}","starred_url":"https://api.github.com/users/rails/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rails/subscriptions","organizations_url":"https://api.github.com/users/rails/orgs","repos_url":"https://api.github.com/users/rails/repos","events_url":"https://api.github.com/users/rails/events{/privacy}","received_events_url":"https://api.github.com/users/rails/received_events","type":"Organization","site_admin":false},"repo":{"id":337788,"name":"arel","full_name":"rails/arel","owner":{"login":"rails","id":4223,"avatar_url":"https://avatars.githubusercontent.com/u/4223?","gravatar_id":"30f39a09e233e8369dddf6feb4be0308","url":"https://api.github.com/users/rails","html_url":"https://github.com/rails","followers_url":"https://api.github.com/users/rails/followers","following_url":"https://api.github.com/users/rails/following{/other_user}","gists_url":"https://api.github.com/users/rails/gists{/gist_id}","starred_url":"https://api.github.com/users/rails/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rails/subscriptions","organizations_url":"https://api.github.com/users/rails/orgs","repos_url":"https://api.github.com/users/rails/repos","events_url":"https://api.github.com/users/rails/events{/privacy}","received_events_url":"https://api.github.com/users/rails/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rails/arel","description":"A Relational Algebra","fork":true,"url":"https://api.github.com/repos/rails/arel","forks_url":"https://api.github.com/repos/rails/arel/forks","keys_url":"https://api.github.com/repos/rails/arel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rails/arel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rails/arel/teams","hooks_url":"https://api.github.com/repos/rails/arel/hooks","issue_events_url":"https://api.github.com/repos/rails/arel/issues/events{/number}","events_url":"https://api.github.com/repos/rails/arel/events","assignees_url":"https://api.github.com/repos/rails/arel/assignees{/user}","branches_url":"https://api.github.com/repos/rails/arel/branches{/branch}","tags_url":"https://api.github.com/repos/rails/arel/tags","blobs_url":"https://api.github.com/repos/rails/arel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rails/arel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rails/arel/git/refs{/sha}","trees_url":"https://api.github.com/repos/rails/arel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rails/arel/statuses/{sha}","languages_url":"https://api.github.com/repos/rails/arel/languages","stargazers_url":"https://api.github.com/repos/rails/arel/stargazers","contributors_url":"https://api.github.com/repos/rails/arel/contributors","subscribers_url":"https://api.github.com/repos/rails/arel/subscribers","subscription_url":"https://api.github.com/repos/rails/arel/subscription","commits_url":"https://api.github.com/repos/rails/arel/commits{/sha}","git_commits_url":"https://api.github.com/repos/rails/arel/git/commits{/sha}","comments_url":"https://api.github.com/repos/rails/arel/comments{/number}","issue_comment_url":"https://api.github.com/repos/rails/arel/issues/comments/{number}","contents_url":"https://api.github.com/repos/rails/arel/contents/{+path}","compare_url":"https://api.github.com/repos/rails/arel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rails/arel/merges","archive_url":"https://api.github.com/repos/rails/arel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rails/arel/downloads","issues_url":"https://api.github.com/repos/rails/arel/issues{/number}","pulls_url":"https://api.github.com/repos/rails/arel/pulls{/number}","milestones_url":"https://api.github.com/repos/rails/arel/milestones{/number}","notifications_url":"https://api.github.com/repos/rails/arel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rails/arel/labels{/name}","releases_url":"https://api.github.com/repos/rails/arel/releases{/id}","created_at":"2009-10-14T23:47:40Z","updated_at":"2014-04-10T18:14:23Z","pushed_at":"2014-04-10T18:14:23Z","git_url":"git://github.com/rails/arel.git","ssh_url":"git@github.com:rails/arel.git","clone_url":"https://github.com/rails/arel.git","svn_url":"https://github.com/rails/arel","homepage":"","size":4512,"stargazers_count":982,"watchers_count":982,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":223,"mirror_url":null,"open_issues_count":58,"forks":223,"open_issues":58,"watchers":982,"default_branch":"master","master_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rails/arel/pulls/255"},"html":{"href":"https://github.com/rails/arel/pull/255"},"issue":{"href":"https://api.github.com/repos/rails/arel/issues/255"},"comments":{"href":"https://api.github.com/repos/rails/arel/issues/255/comments"},"review_comments":{"href":"https://api.github.com/repos/rails/arel/pulls/255/comments"},"review_comment":{"href":"https://api.github.com/repos/rails/arel/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/rails/arel/pulls/255/commits"},"statuses":{"href":"https://api.github.com/repos/rails/arel/statuses/4a898b3c682f74890065e28ffe03899f23a4ab20"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"tenderlove","id":3124,"avatar_url":"https://avatars.githubusercontent.com/u/3124?","gravatar_id":"f29327647a9cff5c69618bae420792ea","url":"https://api.github.com/users/tenderlove","html_url":"https://github.com/tenderlove","followers_url":"https://api.github.com/users/tenderlove/followers","following_url":"https://api.github.com/users/tenderlove/following{/other_user}","gists_url":"https://api.github.com/users/tenderlove/gists{/gist_id}","starred_url":"https://api.github.com/users/tenderlove/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tenderlove/subscriptions","organizations_url":"https://api.github.com/users/tenderlove/orgs","repos_url":"https://api.github.com/users/tenderlove/repos","events_url":"https://api.github.com/users/tenderlove/events{/privacy}","received_events_url":"https://api.github.com/users/tenderlove/received_events","type":"User","site_admin":false},"comments":4,"review_comments":4,"commits":2,"additions":39,"deletions":3,"changed_files":4}},"public":true,"type":"PullRequestEvent","url":"https://github.com/rails/arel/pull/255","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":337788,"name":"arel","url":"https://github.com/rails/arel","description":"A Relational Algebra","homepage":"","watchers":985,"stargazers":985,"forks":228,"fork":true,"size":4512,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":true,"language":"Ruby","created_at":"2009-10-14T16:47:40-07:00","pushed_at":"2014-04-14T14:16:04-07:00","master_branch":"master","organization":"rails"}},{"created_at":"2014-04-10T10:49:01-07:00","payload":{"issue_id":31245792,"comment_id":40116020},"public":true,"type":"IssueCommentEvent","url":"https://github.com/rails/arel/pull/255#issuecomment-40116020","actor":"tenderlove","actor_attributes":{"login":"tenderlove","type":"User","gravatar_id":"f29327647a9cff5c69618bae420792ea","name":"Aaron Patterson","blog":"http://tenderlovemaking.com/","location":"Seattle","email":"aaron.patterson@gmail.com"},"repository":{"id":337788,"name":"arel","url":"https://github.com/rails/arel","description":"A Relational Algebra","homepage":"","watchers":985,"stargazers":985,"forks":228,"fork":true,"size":4512,"owner":"rails","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":true,"language":"Ruby","created_at":"2009-10-14T16:47:40-07:00","pushed_at":"2014-04-14T14:16:04-07:00","master_branch":"master","organization":"rails"}}]
@@ -0,0 +1,12 @@
1
+ require "thincloud/test"
2
+ require 'fantasyhub'
3
+
4
+ describe "End to end live test against github" do
5
+ subject { Fantasyhub.event_scores_sum_for("fantasyhubber") }
6
+
7
+ it "expects the score for fantasyhubber to be 1" do
8
+ VCR.turned_off do
9
+ subject.must_equal 1
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,20 @@
1
+ if RUBY_ENGINE == "ruby" &&
2
+ ENV.has_key?("SLOW")
3
+ begin
4
+ require "simplecov"
5
+ SimpleCov.start do
6
+ add_filter "test"
7
+ add_filter "config"
8
+ command_name "MiniTest"
9
+ end
10
+ rescue LoadError
11
+ warn "unable to load SimpleCov"
12
+ end
13
+ end
14
+
15
+ require "thincloud/test"
16
+ require 'fantasyhub'
17
+
18
+ # Requires supporting ruby files with custom matchers and macros, etc,
19
+ # in spec/support/ and its subdirectories.
20
+ Dir[File.join("./test/support/**/*.rb")].sort.each { |f| require f }
@@ -0,0 +1,4 @@
1
+ unless ENV["CI"]
2
+ require "minitest/reporters"
3
+ MiniTest::Reporters.use! MiniTest::Reporters::ProgressReporter.new
4
+ end
@@ -0,0 +1 @@
1
+ require "mocha/setup"
@@ -0,0 +1 @@
1
+ require 'ostruct'
@@ -0,0 +1,8 @@
1
+ require 'vcr'
2
+
3
+ VCR.configure do |c|
4
+ c.cassette_library_dir = 'test/fixtures/cassettes'
5
+ c.ignore_hosts 'codeclimate.com'
6
+ c.hook_into :webmock
7
+ end
8
+ WebMock.allow_net_connect!
metadata ADDED
@@ -0,0 +1,224 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fantasyhub
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - thatrubylove
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: thincloud-test
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: formatador
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: vcr
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: dotenv
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: codeclimate-test-reporter
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description:
126
+ email:
127
+ - thatrubylove@gmail.com
128
+ executables:
129
+ - console
130
+ - run_test_suite
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - ".gitignore"
135
+ - ".travis.yml"
136
+ - Gemfile
137
+ - Guardfile
138
+ - LICENSE.txt
139
+ - README.md
140
+ - Rakefile
141
+ - bin/console
142
+ - bin/run_test_suite
143
+ - fantasyhub.gemspec
144
+ - id_rsa_fantasyhubber
145
+ - id_rsa_fantasyhubber.pub
146
+ - lib/fantasyhub.rb
147
+ - lib/fantasyhub/event.rb
148
+ - lib/fantasyhub/events.rb
149
+ - lib/fantasyhub/events/commit_comment_event.rb
150
+ - lib/fantasyhub/events/create_event.rb
151
+ - lib/fantasyhub/events/delete_event.rb
152
+ - lib/fantasyhub/events/follow_event.rb
153
+ - lib/fantasyhub/events/fork_event.rb
154
+ - lib/fantasyhub/events/gollumn_event.rb
155
+ - lib/fantasyhub/events/issue_comment_event.rb
156
+ - lib/fantasyhub/events/issues_event.rb
157
+ - lib/fantasyhub/events/member_event.rb
158
+ - lib/fantasyhub/events/pull_request_event.rb
159
+ - lib/fantasyhub/events/pull_request_review_comment_event.rb
160
+ - lib/fantasyhub/events/push_event.rb
161
+ - lib/fantasyhub/events/watch_event.rb
162
+ - lib/fantasyhub/feed.rb
163
+ - lib/fantasyhub/feed/downloader.rb
164
+ - lib/fantasyhub/feed/parser.rb
165
+ - lib/fantasyhub/feed/scorer.rb
166
+ - lib/fantasyhub/version.rb
167
+ - lib/tasks/test.rake
168
+ - test/ci/before_script.sh
169
+ - test/ci/ci_runner.sh
170
+ - test/fantasyhub/events_test.rb
171
+ - test/fantasyhub/feed/downloader_test.rb
172
+ - test/fantasyhub/feed/parser_test.rb
173
+ - test/fantasyhub/feed/scorer_test.rb
174
+ - test/fantasyhub_test.rb
175
+ - test/fixtures/cassettes/tenderlove_activity.yml
176
+ - test/fixtures/cassettes/tenderlove_activity_feed.yml
177
+ - test/fixtures/tenderlove.json
178
+ - test/integration_test.rb
179
+ - test/minitest_helper.rb
180
+ - test/support/minitest_reporters.rb
181
+ - test/support/mocha.rb
182
+ - test/support/open_struct.rb
183
+ - test/support/vcr.rb
184
+ homepage: https://github.com/thatrubylove/fantasyhub
185
+ licenses:
186
+ - MIT
187
+ metadata: {}
188
+ post_install_message:
189
+ rdoc_options: []
190
+ require_paths:
191
+ - lib
192
+ required_ruby_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ required_rubygems_version: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ requirements: []
203
+ rubyforge_project:
204
+ rubygems_version: 2.2.2
205
+ signing_key:
206
+ specification_version: 4
207
+ summary: 'Business logic for #peepcode''s challenge, the fantasy league of githubbers'
208
+ test_files:
209
+ - test/ci/before_script.sh
210
+ - test/ci/ci_runner.sh
211
+ - test/fantasyhub/events_test.rb
212
+ - test/fantasyhub/feed/downloader_test.rb
213
+ - test/fantasyhub/feed/parser_test.rb
214
+ - test/fantasyhub/feed/scorer_test.rb
215
+ - test/fantasyhub_test.rb
216
+ - test/fixtures/cassettes/tenderlove_activity.yml
217
+ - test/fixtures/cassettes/tenderlove_activity_feed.yml
218
+ - test/fixtures/tenderlove.json
219
+ - test/integration_test.rb
220
+ - test/minitest_helper.rb
221
+ - test/support/minitest_reporters.rb
222
+ - test/support/mocha.rb
223
+ - test/support/open_struct.rb
224
+ - test/support/vcr.rb