aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorJack Nagel2012-01-12 00:57:23 -0600
committerJack Nagel2012-01-12 01:16:02 -0600
commite9a0f24ccbd74e9494e0641037d27b23631e22cf (patch)
treefb773b2610b493559ab312d0a0ad149d03b2409b /Library
parent1ed22ff1c34a99e48feea77af39b05e6b9d00ce4 (diff)
downloadbrew-e9a0f24ccbd74e9494e0641037d27b23631e22cf.tar.bz2
versions: use the actual class name when unloading
And document a bit more why this hack is present. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/versions.rb11
1 files changed, 9 insertions, 2 deletions
diff --git a/Library/Homebrew/cmd/versions.rb b/Library/Homebrew/cmd/versions.rb
index 696282545..5a84e9b50 100644
--- a/Library/Homebrew/cmd/versions.rb
+++ b/Library/Homebrew/cmd/versions.rb
@@ -62,8 +62,15 @@ class Formula
mktemp do
path = Pathname.new(Pathname.pwd+"#{name}.rb")
path.write text_from_sha(sha)
- # FIXME: shouldn't have to do this?
- Object.send(:remove_const, "#{name.capitalize}")
+
+ # Unload the class so Formula#version returns the correct value.
+ # Note that this means that the command will error out after it
+ # encounters a formula that won't import. This doesn't matter
+ # for most formulae, but e.g. Bash at revision aae084c9db has a
+ # syntax error and so `versions` isn't able to walk very far back
+ # through the history.
+ # FIXME shouldn't have to do this?
+ Object.send(:remove_const, "#{Formula.class_s(name)}")
Formula.factory(path).version
end rescue nil
end