Class: MIME::Types::Cache
- Inherits:
-
Object
- Object
- MIME::Types::Cache
- Defined in:
- lib/mime/types/cache.rb
Overview
Caching of MIME::Types registries is advisable if you will be loading the default registry relatively frequently. With the class methods on MIME::Types::Cache, any MIME::Types registry can be marshaled quickly and easily.
The cache is invalidated on a per-data-version basis; a cache file for version 3.2015.1118 will not be reused with version 3.2015.1201.
Class Method Summary collapse
-
.load(cache_file = nil) ⇒ Object
Attempts to load the cache from the file provided as a parameter or in the environment variable
RUBY_MIME_TYPES_CACHE
. -
.save(types = nil, cache_file = nil) ⇒ Object
Attempts to save the types provided to the cache file provided.
Class Method Details
.load(cache_file = nil) ⇒ Object
Attempts to load the cache from the file provided as a parameter or in the environment variable RUBY_MIME_TYPES_CACHE
. Returns nil
if the file does not exist, if the file cannot be loaded, or if the data in the cache version is different than this version.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/mime/types/cache.rb', line 17 def load(cache_file = nil) cache_file ||= ENV["RUBY_MIME_TYPES_CACHE"] return nil unless cache_file && File.exist?(cache_file) cache = Marshal.load(File.binread(cache_file)) if cache.version == MIME::Types::Data::VERSION Marshal.load(cache.data) else MIME::Types.logger.error <<-WARNING.chomp.strip Could not load MIME::Types cache: invalid version WARNING nil end rescue => e MIME::Types.logger.error <<-WARNING.chomp.strip Could not load MIME::Types cache: #{e} WARNING nil end |
.save(types = nil, cache_file = nil) ⇒ Object
Attempts to save the types provided to the cache file provided.
If types
is not provided or is nil
, the cache will contain the current MIME::Types default registry.
If cache_file
is not provided or is nil
, the cache will be written to the file specified in the environment variable RUBY_MIME_TYPES_CACHE
. If there is no cache file specified either directly or through the environment, this method will return nil
46 47 48 49 50 51 52 53 |
# File 'lib/mime/types/cache.rb', line 46 def save(types = nil, cache_file = nil) cache_file ||= ENV["RUBY_MIME_TYPES_CACHE"] return nil unless cache_file types ||= MIME::Types.send(:__types__) File.binwrite(cache_file, Marshal.dump(new(MIME::Types::Data::VERSION, Marshal.dump(types)))) end |