Created
January 27, 2009 16:26
-
-
Save misfo/53401 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
def latest_maint_releases(vers) | |
vers.inject([]) do |a, version| | |
unless a.any? {|v| v[/\d+\.\d+/] == version[/\d+\.\d+/] && v > version } | |
a << version | |
end | |
a | |
end | |
end | |
def point_rel(ver) | |
ver[/\d+\.\d+/] | |
end | |
installed_releases = begin | |
rails_info = `gem list rails`.grep(/^rails\s/)[0] | |
rails_versions = rails_info.scan(/\d+\.\d+\.\d+/) | |
latest_maint_releases(rails_versions) | |
end | |
installed_point_releases = installed_releases.collect {|v| point_rel(v) }.uniq | |
newest_maint_releases = begin | |
rails_info = `gem list -ra rails`.grep(/^rails\s/)[0] | |
rails_versions = rails_info.scan(/\d+\.\d+\.\d+/) | |
latest_maint_releases(rails_versions) | |
end | |
needed_versions = newest_maint_releases - installed_releases | |
needed_versions.reject! {|v| !installed_point_releases.include?(point_rel(v)) } | |
if !needed_versions.empty? | |
puts "There are newer maintenance releases for the rails versions installed: #{needed_versions.join(", ")}" | |
end | |
apps = `grep "RAILS_GEM_VERSION" */current/config/environment.rb` | |
outdated_apps = apps.reject {|a| newest_maint_releases.any? {|v| a.include?(v) } } | |
for app in outdated_apps | |
app_dir = app[/^(.+?)\/current\/config\/environment\.rb/, 1] | |
if app =~ /['"]([~><=]*)(\d+(\.\d+){1,})['"]/ | |
unless $1.include?(">") # app is automatically using newer installed versions | |
app_version = $2 | |
new_version = newest_maint_releases.detect {|nmr| point_rel(app_version) == point_rel(nmr) } | |
puts "#{app_dir} (#{app_version} < #{new_version})" | |
end | |
else | |
puts "Could not parse RAILS_GEM_VERSION for #{app_dir}" | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment