diff --git a/Library/Homebrew/cache_store.rb b/Library/Homebrew/cache_store.rb index 3328235329..a9b28f704b 100644 --- a/Library/Homebrew/cache_store.rb +++ b/Library/Homebrew/cache_store.rb @@ -12,8 +12,13 @@ class DatabaseCache # https://docs.oracle.com/cd/E17276_01/html/api_reference/C/envopen.html DATABASE_MODE = 0664 - # Returned value from `initialize` block - attr_reader :return_value + def self.use(type) + return_value = nil + DatabaseCache.new(type) { |db| return_value = yield(db) } + return_value + end + + private # Opens and yields a database in read/write mode. Closes the database after use # @@ -22,15 +27,9 @@ class DatabaseCache def initialize(name) # DBM::WRCREAT: Creates the database if it does not already exist @db = DBM.open("#{HOMEBREW_CACHE}/#{name}.db", DATABASE_MODE, DBM::WRCREAT) - @return_value = yield(@db) + yield(@db) @db.close end - - def self.use(type) - return_value = nil - DatabaseCache.new(type) { |db| return_value = yield(db) } - return_value - end end # diff --git a/Library/Homebrew/dev-cmd/linkage.rb b/Library/Homebrew/dev-cmd/linkage.rb index 7f2fbe62c3..01bdfda57f 100644 --- a/Library/Homebrew/dev-cmd/linkage.rb +++ b/Library/Homebrew/dev-cmd/linkage.rb @@ -20,7 +20,7 @@ module Homebrew module_function def linkage - DatabaseCache.new(:linkage) do |database_cache| + DatabaseCache.use(:linkage) do |database_cache| ARGV.kegs.each do |keg| ohai "Checking #{keg.name} linkage" if ARGV.kegs.size > 1 diff --git a/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb b/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb index 4e09799cdd..bd78f0e30b 100644 --- a/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb +++ b/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb @@ -66,7 +66,7 @@ module FormulaCellarChecks return unless formula.prefix.directory? keg = Keg.new(formula.prefix) - DatabaseCache.new(:linkage) do |database_cache| + DatabaseCache.use(:linkage) do |database_cache| use_cache = !ENV["HOMEBREW_LINKAGE_CACHE"].nil? checker = LinkageChecker.new(keg, database_cache, use_cache, formula) diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index aa347a7ba5..946a6fddb3 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -611,7 +611,7 @@ class FormulaInstaller puts summary # Updates the cache for a particular formula after doing an install - DatabaseCache.new(:linkage) do |database_cache| + DatabaseCache.use(:linkage) do |database_cache| break if database_cache.empty? LinkageChecker.new(keg, database_cache, false, formula) end