Skip to content

Instantly share code, notes, and snippets.

@wjlroe
Forked from andrew/railscheck.rb
Created February 12, 2013 11:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wjlroe/4761853 to your computer and use it in GitHub Desktop.
Save wjlroe/4761853 to your computer and use it in GitHub Desktop.
## Rails Upgrade check
#
# Check your github repos for out of date rails apps
#
# usage: $ USERNAME=yourusername PASSWORD=yourpassword ruby railscheck.rb
# or
# usage: $ USERNAME=yourusername PASSWORD=yourpassword ORG=yourorgname ruby railscheck.rb
#
# n.b requires the octokit gem
require 'rubygems'
require 'octokit'
USERNAME = ENV['USERNAME']
PASSWORD = ENV['PASSWORD']
ORG = ENV['ORG']
REGEX = / rails \((\d.+)\)/
client = Octokit::Client.new(:login => USERNAME, :password => PASSWORD, :auto_traversal => true)
if !ORG.nil?
repos = client.org_repos(ORG)
else
repos = client.repos
end
need_updating = []
up_to_date = []
repos.each do |repo|
puts ''
puts repo.full_name
begin
gemlock = client.contents(repo.full_name, :path => 'Gemfile.lock')
gemlock_content = Base64.decode64(gemlock.content)
match = gemlock_content.match(REGEX)
if match
puts " #{match[1]}"
update = ["3.2.12", "3.1.11", "2.3.17"].include?(match[1])
if update
up_to_date << [repo.full_name, match[1]]
else
need_updating << [repo.full_name, match[1]]
end
else
puts " Doesn't look like rails"
end
rescue
puts " No Gemfile.lock"
end
end
unless need_updating.length.zero?
puts ''
puts '*'*20
puts ''
puts "Repos that need updating:"
puts ''
need_updating.each do |r|
puts " #{r[0]} - #{r[1]}"
end
puts ''
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment