[Rubygems-developers] Source caches again.

Eric Hodel drbrain at segment7.net
Thu Sep 20 17:37:57 EDT 2007


On Aug 29, 2007, at 10:38, Hugh Sasse wrote:
> On Wed, 29 Aug 2007, I wrote:
>
>> Thanks.  I managed to miss that.
>>
>> :r! gem help source | grep cache | wc
>>        0       0       0
>>
>> no mention of the cache in there.  I'll try to work up a doc patch
>>
>>         Hugh
>
> I've come up with this so far. Not as nice as I'd like, the  
> duplication
> in the second part is basically vile, maybe remove_cache could be a
> protected method of command?  Well, that isn't beautiful either, is  
> it?
> Command then knows too much about Source.  Oh well, I'm sure someone
> here can come up with something better.  This is untested as yet,  
> by the
> way, so beware.  A patch against the unpacked tar ball grabbed from
> Rubyforge.
>         Hugh
>
> :r! (cd /scratch/hgs; display_diffs.rb rubygems-0.9.4)
>
> --- rubygems-0.9.4/lib/rubygems/commands/sources_command.rb.orig	 
> 2007-05-23 15:51:31.000000000 +0100
> +++ rubygems-0.9.4/lib/rubygems/commands/sources_command.rb	 
> 2007-08-29 18:15:20.674031000 +0100
> @@ -18,7 +18,7 @@
>            options[:remove] = value
>          end
>
> -        add_option '-c', '--clear-all', 'Remove all sources' do | 
> value, options|
> +        add_option '-c', '--clear-all', 'Remove all sources (clear  
> the cache)' do |value, options|
>            options[:clear_all] = value
>          end
>        end

This part I like.  I also changed the description to:

   'Manage the sources and cache file RubyGems uses to search for gems'

> --- rubygems-0.9.4/lib/rubygems/commands/ 
> clear_cache_command.rb.orig	2007-08-29 18:22:58.049867000 +0100
> +++ rubygems-0.9.4/lib/rubygems/commands/clear_cache_command.rb	 
> 2007-08-29 18:29:57.586782000 +0100
> @@ -0,0 +1,37 @@
> +module Gem
> +  module Commands
> +
> +    class Clear_cacheCommand < Command
> +
> +      def initialize
> +        super 'clear_cache', 'clear the sources i.e the cache.'
> +
> +      end
> +
> +      def defaults_str
> +        ''
> +      end
> +
> +      def execute
> +        remove_cache_file("user",  
> Gem::SourceInfoCache.user_cache_file)
> +        remove_cache_file("system",  
> Gem::SourceInfoCache.system_cache_file)
> +        say "Cache cleared"
> +
> +      end
> +
> +      def remove_cache_file(desc, fn)
> +        FileUtils.rm_rf fn rescue nil
> +        if ! File.exist?(fn)
> +          say "*** Removed #{desc} source cache ***"
> +        elsif ! File.writable?(fn)
> +          say "*** Unable to remove #{desc} source cache (write  
> protected) ***"
> +        else
> +          say "*** Unable to remove #{desc} source cache ***"
> +        end
> +      end
> +      private :remove_cache_file
> +      # It's private, so we need our own copy. Very non-DRY.
> +
> +    end # class Clear_cacheCommand
> +  end # module Commands
> +end # module Gem

I don't understand this part.  How is this different from `gem  
sources -c`?

--
Poor workers blame their tools. Good workers build better tools. The
best workers get their tools to do the work for them. -- Syndicate Wars




More information about the Rubygems-developers mailing list