From 1c4d28ba314c8cdd0039becf3bc9e678219b8f46 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Wed, 17 Jun 2009 10:37:39 -0500 Subject: Move model naming into ActiveModel --- .../lib/active_support/core_ext/module.rb | 1 - .../active_support/core_ext/module/model_naming.rb | 25 ---------------------- 2 files changed, 26 deletions(-) delete mode 100644 activesupport/lib/active_support/core_ext/module/model_naming.rb (limited to 'activesupport/lib') diff --git a/activesupport/lib/active_support/core_ext/module.rb b/activesupport/lib/active_support/core_ext/module.rb index 215c47b114..fbe89fe07c 100644 --- a/activesupport/lib/active_support/core_ext/module.rb +++ b/activesupport/lib/active_support/core_ext/module.rb @@ -7,5 +7,4 @@ require 'active_support/core_ext/module/attr_internal' require 'active_support/core_ext/module/attr_accessor_with_default' require 'active_support/core_ext/module/delegation' require 'active_support/core_ext/module/loading' -require 'active_support/core_ext/module/model_naming' require 'active_support/core_ext/module/synchronization' diff --git a/activesupport/lib/active_support/core_ext/module/model_naming.rb b/activesupport/lib/active_support/core_ext/module/model_naming.rb deleted file mode 100644 index 13420bab07..0000000000 --- a/activesupport/lib/active_support/core_ext/module/model_naming.rb +++ /dev/null @@ -1,25 +0,0 @@ -require 'active_support/inflector' - -module ActiveSupport - class ModelName < String - attr_reader :singular, :plural, :element, :collection, :partial_path - alias_method :cache_key, :collection - - def initialize(name) - super - @singular = ActiveSupport::Inflector.underscore(self).tr('/', '_').freeze - @plural = ActiveSupport::Inflector.pluralize(@singular).freeze - @element = ActiveSupport::Inflector.underscore(ActiveSupport::Inflector.demodulize(self)).freeze - @collection = ActiveSupport::Inflector.tableize(self).freeze - @partial_path = "#{@collection}/#{@element}".freeze - end - end -end - -class Module - # Returns an ActiveSupport::ModelName object for module. It can be - # used to retrieve all kinds of naming-related information. - def model_name - @model_name ||= ActiveSupport::ModelName.new(name) - end -end -- cgit v1.2.3 From fbdf706fffbfb17731a1f459203d242414ef5086 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Wed, 17 Jun 2009 21:27:36 -0500 Subject: Add basic JSON serializer to AMo --- activesupport/lib/active_support/json/decoding.rb | 1 + activesupport/lib/active_support/json/encoding.rb | 5 +++++ 2 files changed, 6 insertions(+) (limited to 'activesupport/lib') diff --git a/activesupport/lib/active_support/json/decoding.rb b/activesupport/lib/active_support/json/decoding.rb index b4e4177724..356b6cebeb 100644 --- a/activesupport/lib/active_support/json/decoding.rb +++ b/activesupport/lib/active_support/json/decoding.rb @@ -1,4 +1,5 @@ require 'active_support/core_ext/module/attribute_accessors' +require 'active_support/core_ext/module/delegation' module ActiveSupport # Look for and parse json strings that look like ISO 8601 times. diff --git a/activesupport/lib/active_support/json/encoding.rb b/activesupport/lib/active_support/json/encoding.rb index 907094a747..068b58b997 100644 --- a/activesupport/lib/active_support/json/encoding.rb +++ b/activesupport/lib/active_support/json/encoding.rb @@ -4,6 +4,11 @@ require 'active_support/core_ext/module/delegation' require 'active_support/core_ext/object/instance_variables' require 'active_support/deprecation' +require 'active_support/core_ext/date_time/conversions' +require 'active_support/core_ext/time/conversions' +require 'active_support/time_with_zone' +require 'active_support/values/time_zone' + # Hack to load json gem first so we can overwrite its to_json. begin require 'json' -- cgit v1.2.3 From b5775c2b3efb3ae5ef9074d26f6fc3e302a4f6f0 Mon Sep 17 00:00:00 2001 From: Pratik Naik Date: Sun, 21 Jun 2009 14:35:14 +0100 Subject: Add expiry support File cache store [#1693 state:resolved] [Roman Shterenzon, Pratik Naik] --- activesupport/lib/active_support/cache.rb | 12 ++++++++++-- activesupport/lib/active_support/cache/file_store.rb | 14 +++++++++++++- activesupport/lib/active_support/cache/mem_cache_store.rb | 4 ---- 3 files changed, 23 insertions(+), 7 deletions(-) (limited to 'activesupport/lib') diff --git a/activesupport/lib/active_support/cache.rb b/activesupport/lib/active_support/cache.rb index feb6b1f2cf..192a82e74f 100644 --- a/activesupport/lib/active_support/cache.rb +++ b/activesupport/lib/active_support/cache.rb @@ -129,8 +129,8 @@ module ActiveSupport # # For example, MemCacheStore's #write method supports the +:expires_in+ # option, which tells the memcached server to automatically expire the - # cache item after a certain period. We can use this option with #fetch - # too: + # cache item after a certain period. This options is also supported by + # FileStore's #read method. We can use this option with #fetch too: # # cache = ActiveSupport::Cache::MemCacheStore.new # cache.fetch("foo", :force => true, :expires_in => 5.seconds) do @@ -169,6 +169,10 @@ module ActiveSupport # You may also specify additional options via the +options+ argument. # The specific cache store implementation will decide what to do with # +options+. + # + # For example, FileStore supports the +:expires_in+ option, which + # makes the method return nil for cache items older than the specified + # period. def read(key, options = nil) log("read", key, options) end @@ -223,6 +227,10 @@ module ActiveSupport end private + def expires_in(options) + (options && options[:expires_in]) || 0 + end + def log(operation, key, options) logger.debug("Cache #{operation}: #{key}#{options ? " (#{options.inspect})" : ""}") if logger && !@silence && !@logger_off end diff --git a/activesupport/lib/active_support/cache/file_store.rb b/activesupport/lib/active_support/cache/file_store.rb index 3217350d58..75eed5ed94 100644 --- a/activesupport/lib/active_support/cache/file_store.rb +++ b/activesupport/lib/active_support/cache/file_store.rb @@ -10,11 +10,23 @@ module ActiveSupport @cache_path = cache_path end + # Reads a value from the cache. + # + # Possible options: + # - +:expires_in+ - the number of seconds that this value may stay in + # the cache. def read(name, options = nil) super - File.open(real_file_path(name), 'rb') { |f| Marshal.load(f) } rescue nil + + file_name = real_file_path(name) + expires = expires_in(options) + + if File.exist?(file_name) && (expires <= 0 || Time.now - File.mtime(file_name) < expires) + File.open(file_name, 'rb') { |f| Marshal.load(f) } + end end + # Writes a value to the cache. def write(name, value, options = nil) super ensure_cache_path(File.dirname(real_file_path(name))) diff --git a/activesupport/lib/active_support/cache/mem_cache_store.rb b/activesupport/lib/active_support/cache/mem_cache_store.rb index 38b3409ca6..954d0f5423 100644 --- a/activesupport/lib/active_support/cache/mem_cache_store.rb +++ b/activesupport/lib/active_support/cache/mem_cache_store.rb @@ -130,10 +130,6 @@ module ActiveSupport end private - def expires_in(options) - (options && options[:expires_in]) || 0 - end - def raw?(options) options && options[:raw] end -- cgit v1.2.3