{"id":24883190,"url":"https://github.com/ajm188/octo_ranker","last_synced_at":"2026-05-04T03:35:32.195Z","repository":{"id":30159133,"uuid":"33709402","full_name":"ajm188/octo_ranker","owner":"ajm188","description":"Rank your organization's members by their contributions to your public repositories on GitHub","archived":false,"fork":false,"pushed_at":"2015-04-10T05:05:57.000Z","size":124,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-03T00:43:57.294Z","etag":null,"topics":["github","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ajm188.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-10T05:03:31.000Z","updated_at":"2015-04-10T05:07:28.000Z","dependencies_parsed_at":"2022-09-03T12:00:57.482Z","dependency_job_id":null,"html_url":"https://github.com/ajm188/octo_ranker","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ajm188/octo_ranker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajm188%2Focto_ranker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajm188%2Focto_ranker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajm188%2Focto_ranker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajm188%2Focto_ranker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ajm188","download_url":"https://codeload.github.com/ajm188/octo_ranker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajm188%2Focto_ranker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32593945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github","ruby"],"created_at":"2025-02-01T13:48:34.136Z","updated_at":"2026-05-04T03:35:32.181Z","avatar_url":"https://github.com/ajm188.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OctoRanker\n\nGit ranked.\n\nOctoRanker can rank the members of an organization based on their contributions\nto the organization's public repositories. You should probably read the whole\nREADME, but at the very least, please read the\n[organizational usage](#organizational).\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'octo_ranker'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install octo_ranker\n\n## Usage\n\n### Programmatic\n\nUsing OctoRanker is very straightforward. It goes like this:\n```ruby\nrequire 'octo_ranker'\nOctoRanker.rank_members('name-of-my-org')\n```\nThis will give you an array of [`OctoRanker::User`](lib/octo_ranker/user.rb)\nobjects. You can read the docs to find out how the rankings are calculated.\n\n#### Rate Limiting\nGitHub uses rate limiting. You can read about their policies\n[here](https://developer.github.com/v3/rate_limit/). Depending on the size of\nyour organization, this may cause some errors to be thrown once GitHub starts\nresponding with 429s.\n\nTo increase your rate limit, you can configure\n[octokit](https://github.com/octokit/octokit.rb) (which is what OctoRanker \nuses to get data from GitHub) to authorize with your GitHub credentials like so:\n```ruby\nrequire 'octo_ranker'\nOctokit.configure do |c|\n  c.login = 'ajm188'\n  c.password = 'password' # Obviously not my real password (or is it?), but you get the idea.\nend\n# Now make your queries as normal\nOctoRanker.rank_members('name-of-my-org')\n```\n\nIf your organization is so large that you're maxing out the authenticated rate\nlimit (wow, good for you!), create an issue in here, and I'll try to come up\nwith a good batch processing solution.\n\n### Organizational\n\nOctoRanker is intended to be a fun way to encourage members of your organization\nto contribute to your repos. The rankings should provide **friendly** competition\nand motivation to get more involved with your organization's open source software.\n\nThings you **should not do** if your organization uses rankings:\n* \"Dood, you suck. You have, like, the worst ranking in our org.\"\n* Make a bunch of really small commits to boost your ranking. That's not the point.\n\nThings you should do instead:\n* Be kind and encouraging to your fellow teammates. You're on the same team after all.\n* Focus on making contributions to your organization, and not on your ranking. After all,\nthe more you focus on making contributions, the better your ranking will be as a result.\n\n## Contributing\n\n1. Fork it ( https://github.com/ajm188/octo_ranker/fork )\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create a new Pull Request\n\n## Potential Features\nThese are some things I'm considering adding to the project. If you want to\nwork on one (or any) of them, feel free. Just let me know so I don't\nduplicate your effort (duplicated effort is lame). Also see\n[contributing](#contributing) for the workflow.\n\n1. Batch processing of org repos. See [rate limiting](#rate-limiting).\n1. Option to count private repos. Note that this will require authentication\nfrom a member of the organization.\n1. Add some tests. I've seen the code work, but why should you trust me?\n  1. This isn't a \"feature\" per se, but I might as well stick this here and hope\n  someone else does it for me.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajm188%2Focto_ranker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fajm188%2Focto_ranker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajm188%2Focto_ranker/lists"}