taggable_cache 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -0
 - data/.travis.yml +1 -1
 - data/CHANGELOG.md +6 -0
 - data/README.rdoc +34 -2
 - data/lib/taggable_cache.rb +2 -0
 - data/lib/taggable_cache/extensions.rb +92 -0
 - data/lib/taggable_cache/railtie.rb +7 -45
 - data/lib/taggable_cache/store.rb +2 -1
 - data/lib/taggable_cache/version.rb +1 -1
 - data/spec/internal/app/controller/action_caching_controller.rb +9 -3
 - data/spec/requests/action_caching_controller_spec.rb +49 -18
 - data/spec/taggable-cache/settings_spec.rb +23 -0
 - data/taggable-cache.gemspec +4 -1
 - metadata +34 -13
 - data/Gemfile.lock +0 -148
 - data/lib/taggable_cache/dynamic_store.rb +0 -5
 - data/lib/taggable_cache/spectator.rb +0 -10
 - data/spec/internal/public/favicon.ico +0 -0
 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -1,10 +1,42 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            = Taggable cache
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            This gem simplifies cache expiration in rails.
         
     | 
| 
      
 3 
     | 
    
         
            +
            This gem simplifies cache expiration in rails by adding depends_on helper, which expires cache element when depending object is changed/deleted.
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            = How to use
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
            Controller(action caching):
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              caches_action :index
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              def index
         
     | 
| 
      
 12 
     | 
    
         
            +
                Page.load_lot_of_data
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                #this depends on any Page object change - creation, deletion, change
         
     | 
| 
      
 15 
     | 
    
         
            +
                depends_on Page
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            View(fragment caching):
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              <%# Page.active can be AR scope, every Page object on change is checked if it is in this scope, and if is - expires cache element %>
         
     | 
| 
      
 21 
     | 
    
         
            +
              <% cache 'cache_entry', :depends_on => [Page.active] do %>
         
     | 
| 
      
 22 
     | 
    
         
            +
                <% Page.load_lot_of_data %>
         
     | 
| 
      
 23 
     | 
    
         
            +
              <% end %>
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            Usage with Rails.cache:
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              page = Page.first
         
     | 
| 
      
 28 
     | 
    
         
            +
              #this cache key expires only if this Page object is changed/deleted
         
     | 
| 
      
 29 
     | 
    
         
            +
              Rails.cache.write('key', 'value', :depends_on => [page])
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            Usage with cells gem:
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              class TabsCell < Cell::Rails
         
     | 
| 
      
 34 
     | 
    
         
            +
                cache :index, nil, :depends_on => [Category, Metacategory, Product]
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                def index
         
     | 
| 
      
 37 
     | 
    
         
            +
                  render
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
       8 
40 
     | 
    
         | 
| 
       9 
41 
     | 
    
         
             
            == Build Status {<img src="https://secure.travis-ci.org/brain-geek/taggable-cache.png"/>}[http://travis-ci.org/brain-geek/taggable-cache]
         
     | 
| 
       10 
42 
     | 
    
         | 
    
        data/lib/taggable_cache.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,92 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module TaggableCache
         
     | 
| 
      
 2 
     | 
    
         
            +
              module CacheStoreExtension
         
     | 
| 
      
 3 
     | 
    
         
            +
                extend ActiveSupport::Concern
         
     | 
| 
      
 4 
     | 
    
         
            +
                def self.included(base)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  base.class_eval do
         
     | 
| 
      
 6 
     | 
    
         
            +
                    def taggable
         
     | 
| 
      
 7 
     | 
    
         
            +
                      @taggable ||= ::TaggableCache::Store.new
         
     | 
| 
      
 8 
     | 
    
         
            +
                    end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                    alias_method :original_write, :write
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    def write(name, value, options = nil)
         
     | 
| 
      
 13 
     | 
    
         
            +
                      if !options.nil? && options.has_key?(:depends_on) 
         
     | 
| 
      
 14 
     | 
    
         
            +
                        add_tags(name, *options[:depends_on])
         
     | 
| 
      
 15 
     | 
    
         
            +
                      end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                      original_write(name, value, options)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                    def add_tags(key, *params)
         
     | 
| 
      
 21 
     | 
    
         
            +
                      taggable.add(key, *params)
         
     | 
| 
      
 22 
     | 
    
         
            +
                    end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                    def delete_by_tags(*params)
         
     | 
| 
      
 25 
     | 
    
         
            +
                      taggable.get(*params).each do |m|
         
     | 
| 
      
 26 
     | 
    
         
            +
                        self.delete(m)
         
     | 
| 
      
 27 
     | 
    
         
            +
                      end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                      taggable.get_scope(*(params.delete_if{|a| not a.is_a? ActiveRecord::Base})).each do |m|
         
     | 
| 
      
 30 
     | 
    
         
            +
                        self.delete(m)
         
     | 
| 
      
 31 
     | 
    
         
            +
                      end
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              module ActionControllerExtension
         
     | 
| 
      
 38 
     | 
    
         
            +
                extend ActiveSupport::Concern
         
     | 
| 
      
 39 
     | 
    
         
            +
                def self.included(base)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  base.class_eval do
         
     | 
| 
      
 41 
     | 
    
         
            +
                    def depends_on(*keys)
         
     | 
| 
      
 42 
     | 
    
         
            +
                      _process_action_callbacks.find_all{|x| 
         
     | 
| 
      
 43 
     | 
    
         
            +
                          (x.kind == :around) && 
         
     | 
| 
      
 44 
     | 
    
         
            +
                          (x.raw_filter.is_a? ActionController::Caching::Actions::ActionCacheFilter) }.each do |callback|
         
     | 
| 
      
 45 
     | 
    
         
            +
                        cache_path = callback.raw_filter.instance_variable_get('@cache_path')
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                        path_options = if cache_path.respond_to?(:call)
         
     | 
| 
      
 48 
     | 
    
         
            +
                          instance_exec(self, &cache_path)
         
     | 
| 
      
 49 
     | 
    
         
            +
                        else
         
     | 
| 
      
 50 
     | 
    
         
            +
                          cache_path
         
     | 
| 
      
 51 
     | 
    
         
            +
                        end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                        path_options = ::ActionController::Caching::Actions::ActionCachePath.new(self, path_options || {}).path
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                        Rails.cache.add_tags(fragment_cache_key(path_options), *keys)
         
     | 
| 
      
 56 
     | 
    
         
            +
                      end
         
     | 
| 
      
 57 
     | 
    
         
            +
                    end        
         
     | 
| 
      
 58 
     | 
    
         
            +
                  end
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
              end  
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              module ActiveRecordExtension
         
     | 
| 
      
 63 
     | 
    
         
            +
                extend ActiveSupport::Concern
         
     | 
| 
      
 64 
     | 
    
         
            +
                included do
         
     | 
| 
      
 65 
     | 
    
         
            +
                  # Future subclasses will pick up the model extension
         
     | 
| 
      
 66 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 67 
     | 
    
         
            +
                    def inherited_with_taggable(kls)
         
     | 
| 
      
 68 
     | 
    
         
            +
                      inherited_without_taggable kls
         
     | 
| 
      
 69 
     | 
    
         
            +
                      kls.send(:include, TaggableCache::ActiveRecordModelExtension) if kls.superclass == ActiveRecord::Base
         
     | 
| 
      
 70 
     | 
    
         
            +
                    end
         
     | 
| 
      
 71 
     | 
    
         
            +
                    alias_method_chain :inherited, :taggable
         
     | 
| 
      
 72 
     | 
    
         
            +
                  end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                  # Existing subclasses pick up the model extension as well
         
     | 
| 
      
 75 
     | 
    
         
            +
                  self.descendants.each do |kls|
         
     | 
| 
      
 76 
     | 
    
         
            +
                    kls.send(:include, TaggableCache::ActiveRecordModelExtension) if kls.superclass == ActiveRecord::Base
         
     | 
| 
      
 77 
     | 
    
         
            +
                  end
         
     | 
| 
      
 78 
     | 
    
         
            +
                end
         
     | 
| 
      
 79 
     | 
    
         
            +
              end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
              module ActiveRecordModelExtension
         
     | 
| 
      
 83 
     | 
    
         
            +
                extend ActiveSupport::Concern
         
     | 
| 
      
 84 
     | 
    
         
            +
                def self.included(base)
         
     | 
| 
      
 85 
     | 
    
         
            +
                    [:after_update, :before_update, :before_destroy, :after_create].each do |event|
         
     | 
| 
      
 86 
     | 
    
         
            +
                      base.send(event, Proc.new do |model|
         
     | 
| 
      
 87 
     | 
    
         
            +
                              Rails.cache.delete_by_tags(model, model.class)
         
     | 
| 
      
 88 
     | 
    
         
            +
                            end)
         
     | 
| 
      
 89 
     | 
    
         
            +
                  end
         
     | 
| 
      
 90 
     | 
    
         
            +
                end
         
     | 
| 
      
 91 
     | 
    
         
            +
              end
         
     | 
| 
      
 92 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,51 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require ' 
     | 
| 
       2 
     | 
    
         
            -
            require 'action_controller'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'rails'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            require 'taggable_cache/spectator'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            ActiveSupport::Cache::Store.class_eval do
         
     | 
| 
       8 
     | 
    
         
            -
              def taggable
         
     | 
| 
       9 
     | 
    
         
            -
                @taggable ||= ::TaggableCache::Store.new
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              alias_method :original_write, :write
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
              def write(name, value, options = nil)
         
     | 
| 
       15 
     | 
    
         
            -
                if !options.nil? && options.has_key?(:depends_on) 
         
     | 
| 
       16 
     | 
    
         
            -
                  add_tags(name, *options[:depends_on])
         
     | 
| 
       17 
     | 
    
         
            -
                end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                original_write(name, value, options)
         
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
              def add_tags(key, *params)
         
     | 
| 
       23 
     | 
    
         
            -
                taggable.add(key, *params)
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              def delete_by_tags(*params)
         
     | 
| 
       27 
     | 
    
         
            -
                taggable.get(*params).each do |m|
         
     | 
| 
       28 
     | 
    
         
            -
                  self.delete(m)
         
     | 
| 
       29 
     | 
    
         
            -
                end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                taggable.get_scope(*(params.delete_if{|a| not a.is_a? ActiveRecord::Base})).each do |m|
         
     | 
| 
       32 
     | 
    
         
            -
                  self.delete(m)
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
              end
         
     | 
| 
       35 
     | 
    
         
            -
            end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
            ActionController::Base.class_eval do
         
     | 
| 
       38 
     | 
    
         
            -
              def depends_on(*params)
         
     | 
| 
       39 
     | 
    
         
            -
                key_name = fragment_cache_key(::ActionController::Caching::Actions::ActionCachePath.new(self).path)
         
     | 
| 
       40 
     | 
    
         
            -
                Rails.cache.add_tags(key_name, *params)
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'taggable_cache/extensions'
         
     | 
| 
       43 
2 
     | 
    
         | 
| 
       44 
3 
     | 
    
         
             
            module TaggableCache
         
     | 
| 
       45 
4 
     | 
    
         
             
              class Railtie < ::Rails::Railtie
         
     | 
| 
       46 
5 
     | 
    
         
             
                initializer "taggable_cache" do |app|
         
     | 
| 
       47 
     | 
    
         
            -
                   
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 6 
     | 
    
         
            +
                  ActiveSupport.on_load(:active_record) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                    ::ActiveRecord::Base.send :include, TaggableCache::ActiveRecordExtension
         
     | 
| 
      
 8 
     | 
    
         
            +
                    ::ActiveSupport::Cache::Store.send :include, TaggableCache::CacheStoreExtension
         
     | 
| 
      
 9 
     | 
    
         
            +
                    ::ActionController::Base.send :include, TaggableCache::ActionControllerExtension        
         
     | 
| 
      
 10 
     | 
    
         
            +
                  end
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
       50 
12 
     | 
    
         
             
              end  
         
     | 
| 
       51 
13 
     | 
    
         
             
            end
         
     | 
    
        data/lib/taggable_cache/store.rb
    CHANGED
    
    
| 
         @@ -1,15 +1,21 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            class ActionCachingController < ActionController::Base
         
     | 
| 
       2 
2 
     | 
    
         
             
              caches_action :index
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
      
 4 
     | 
    
         
            +
              caches_action :cp, :cache_path => Proc.new { {'key' => 'value', 2 => 56} }
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       4 
6 
     | 
    
         
             
              def index
         
     | 
| 
       5 
7 
     | 
    
         
             
                Page.load_lot_of_data
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
       7 
9 
     | 
    
         
             
                depends_on Page
         
     | 
| 
       8 
10 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                render :text => ' 
     | 
| 
      
 11 
     | 
    
         
            +
                render :text => 'none'
         
     | 
| 
       10 
12 
     | 
    
         
             
              end
         
     | 
| 
       11 
13 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
              def  
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
      
 14 
     | 
    
         
            +
              def cp
         
     | 
| 
      
 15 
     | 
    
         
            +
                Page.load_lot_of_data
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                depends_on Page
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                render :text => 'none'
         
     | 
| 
       14 
20 
     | 
    
         
             
              end
         
     | 
| 
       15 
21 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,28 +1,59 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe ActionCachingController do
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
              describe "simple" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                before :each do 
         
     | 
| 
      
 6 
     | 
    
         
            +
                  Rails.cache.clear
         
     | 
| 
      
 7 
     | 
    
         
            +
                  Redis.new.flushall
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @url = 'action_caching/index'
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                it "should be successful" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  Page.should_receive :load_lot_of_data
         
     | 
| 
      
 13 
     | 
    
         
            +
                  get @url
         
     | 
| 
      
 14 
     | 
    
         
            +
                  response.status.should be(200)      
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                it "should run second test with cache deletion" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                  Page.should_receive(:load_lot_of_data).once
         
     | 
| 
      
 19 
     | 
    
         
            +
                  get @url
         
     | 
| 
      
 20 
     | 
    
         
            +
                  response.status.should be(200)
         
     | 
| 
       8 
21 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 22 
     | 
    
         
            +
                  get @url
         
     | 
| 
      
 23 
     | 
    
         
            +
                  response.status.should be(200)
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  Page.should_receive(:load_lot_of_data).once
         
     | 
| 
      
 26 
     | 
    
         
            +
                  Page.create
         
     | 
| 
      
 27 
     | 
    
         
            +
                  get @url
         
     | 
| 
      
 28 
     | 
    
         
            +
                  response.status.should be(200)
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
       13 
30 
     | 
    
         
             
              end
         
     | 
| 
       14 
31 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
               
     | 
| 
       16 
     | 
    
         
            -
                 
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
              describe "with cache_path" do
         
     | 
| 
      
 33 
     | 
    
         
            +
                before :each do 
         
     | 
| 
      
 34 
     | 
    
         
            +
                  Rails.cache.clear
         
     | 
| 
      
 35 
     | 
    
         
            +
                  Redis.new.flushall
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @url = 'action_caching/cp'
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                it "should be successful" do
         
     | 
| 
      
 40 
     | 
    
         
            +
                  Page.should_receive :load_lot_of_data
         
     | 
| 
      
 41 
     | 
    
         
            +
                  get @url
         
     | 
| 
      
 42 
     | 
    
         
            +
                  response.status.should be(200)
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                it "should run second test with cache deletion" do
         
     | 
| 
      
 46 
     | 
    
         
            +
                  Page.should_receive(:load_lot_of_data).once
         
     | 
| 
      
 47 
     | 
    
         
            +
                  get @url
         
     | 
| 
      
 48 
     | 
    
         
            +
                  response.status.should be(200)
         
     | 
| 
       19 
49 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 50 
     | 
    
         
            +
                  get @url
         
     | 
| 
      
 51 
     | 
    
         
            +
                  response.status.should be(200)
         
     | 
| 
       22 
52 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 53 
     | 
    
         
            +
                  Page.should_receive(:load_lot_of_data).once
         
     | 
| 
      
 54 
     | 
    
         
            +
                  Page.create
         
     | 
| 
      
 55 
     | 
    
         
            +
                  get @url
         
     | 
| 
      
 56 
     | 
    
         
            +
                  response.status.should be(200)
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
       27 
58 
     | 
    
         
             
              end
         
     | 
| 
       28 
59 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe TaggableCache::Store do
         
     | 
| 
      
 4 
     | 
    
         
            +
              after :all do
         
     | 
| 
      
 5 
     | 
    
         
            +
                ENV.delete("REDIS_HOST")
         
     | 
| 
      
 6 
     | 
    
         
            +
                ENV.delete("REDIS_PORT")
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              it "should fall back to defaults if no settings given" do
         
     | 
| 
      
 10 
     | 
    
         
            +
                Redis.should_receive(:new).with(:host => '127.0.0.1', :port => 6379)
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                TaggableCache::Store.new
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              it "should use ENV settings" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                ENV["REDIS_HOST"] =  'hostname.lvh.me';
         
     | 
| 
      
 17 
     | 
    
         
            +
                ENV["REDIS_PORT"] =  '1234';
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                Redis.should_receive(:new).with(:host => 'hostname.lvh.me', :port => 1234)
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                TaggableCache::Store.new
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
    
        data/taggable-cache.gemspec
    CHANGED
    
    | 
         @@ -28,7 +28,10 @@ Gem::Specification.new do |s| 
     | 
|
| 
       28 
28 
     | 
    
         
             
              s.rubygems_version = "1.8.15"
         
     | 
| 
       29 
29 
     | 
    
         
             
              s.summary = "This gem simplifies cache expiration in rails by providing depends_on option to rails cache."
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
              s.add_dependency(%q<rails>, [">= 3.1.0"])
         
     | 
| 
      
 31 
     | 
    
         
            +
              #s.add_dependency(%q<rails>, [">= 3.1.0"])
         
     | 
| 
      
 32 
     | 
    
         
            +
              s.add_dependency(%q<railties>, [">= 3.1.0"])
         
     | 
| 
      
 33 
     | 
    
         
            +
              s.add_dependency(%q<actionpack>, [">= 3.1.0"])
         
     | 
| 
      
 34 
     | 
    
         
            +
              s.add_dependency(%q<activerecord>, [">= 3.1.0"])
         
     | 
| 
       32 
35 
     | 
    
         
             
              s.add_dependency(%q<redis>, [">= 2.2.2"])
         
     | 
| 
       33 
36 
     | 
    
         
             
            end
         
     | 
| 
       34 
37 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: taggable_cache
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.4.0
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -12,8 +12,8 @@ cert_chain: [] 
     | 
|
| 
       12 
12 
     | 
    
         
             
            date: 2012-02-09 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
     | 
    
         
            -
              name:  
     | 
| 
       16 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 15 
     | 
    
         
            +
              name: railties
         
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: &77251570 !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       18 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
19 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -21,10 +21,32 @@ dependencies: 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    version: 3.1.0
         
     | 
| 
       22 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       23 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: *77251570
         
     | 
| 
      
 25 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 26 
     | 
    
         
            +
              name: actionpack
         
     | 
| 
      
 27 
     | 
    
         
            +
              requirement: &77251040 !ruby/object:Gem::Requirement
         
     | 
| 
      
 28 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 29 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 30 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 31 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 32 
     | 
    
         
            +
                    version: 3.1.0
         
     | 
| 
      
 33 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 34 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 35 
     | 
    
         
            +
              version_requirements: *77251040
         
     | 
| 
      
 36 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 37 
     | 
    
         
            +
              name: activerecord
         
     | 
| 
      
 38 
     | 
    
         
            +
              requirement: &77250480 !ruby/object:Gem::Requirement
         
     | 
| 
      
 39 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 40 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 41 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 42 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 43 
     | 
    
         
            +
                    version: 3.1.0
         
     | 
| 
      
 44 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 45 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 46 
     | 
    
         
            +
              version_requirements: *77250480
         
     | 
| 
       25 
47 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
48 
     | 
    
         
             
              name: redis
         
     | 
| 
       27 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 49 
     | 
    
         
            +
              requirement: &77249530 !ruby/object:Gem::Requirement
         
     | 
| 
       28 
50 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
52 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -32,7 +54,7 @@ dependencies: 
     | 
|
| 
       32 
54 
     | 
    
         
             
                    version: 2.2.2
         
     | 
| 
       33 
55 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       34 
56 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 57 
     | 
    
         
            +
              version_requirements: *77249530
         
     | 
| 
       36 
58 
     | 
    
         
             
            description: This gem simplifies cache expiration in rails
         
     | 
| 
       37 
59 
     | 
    
         
             
            email: brain-geek@yandex.ua
         
     | 
| 
       38 
60 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -43,17 +65,16 @@ extra_rdoc_files: 
     | 
|
| 
       43 
65 
     | 
    
         
             
            files:
         
     | 
| 
       44 
66 
     | 
    
         
             
            - .gitignore
         
     | 
| 
       45 
67 
     | 
    
         
             
            - .travis.yml
         
     | 
| 
      
 68 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
       46 
69 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       47 
     | 
    
         
            -
            - Gemfile.lock
         
     | 
| 
       48 
70 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
       49 
71 
     | 
    
         
             
            - README.rdoc
         
     | 
| 
       50 
72 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       51 
73 
     | 
    
         
             
            - gemfiles/Gemfile-rails.3.1.x
         
     | 
| 
       52 
74 
     | 
    
         
             
            - gemfiles/Gemfile-rails.3.2.x
         
     | 
| 
       53 
75 
     | 
    
         
             
            - lib/taggable_cache.rb
         
     | 
| 
       54 
     | 
    
         
            -
            - lib/taggable_cache/ 
     | 
| 
      
 76 
     | 
    
         
            +
            - lib/taggable_cache/extensions.rb
         
     | 
| 
       55 
77 
     | 
    
         
             
            - lib/taggable_cache/railtie.rb
         
     | 
| 
       56 
     | 
    
         
            -
            - lib/taggable_cache/spectator.rb
         
     | 
| 
       57 
78 
     | 
    
         
             
            - lib/taggable_cache/store.rb
         
     | 
| 
       58 
79 
     | 
    
         
             
            - lib/taggable_cache/version.rb
         
     | 
| 
       59 
80 
     | 
    
         
             
            - spec/integration/rails_cache_spec.rb
         
     | 
| 
         @@ -64,10 +85,10 @@ files: 
     | 
|
| 
       64 
85 
     | 
    
         
             
            - spec/internal/config/database.yml
         
     | 
| 
       65 
86 
     | 
    
         
             
            - spec/internal/config/routes.rb
         
     | 
| 
       66 
87 
     | 
    
         
             
            - spec/internal/db/schema.rb
         
     | 
| 
       67 
     | 
    
         
            -
            - spec/internal/public/favicon.ico
         
     | 
| 
       68 
88 
     | 
    
         
             
            - spec/requests/action_caching_controller_spec.rb
         
     | 
| 
       69 
89 
     | 
    
         
             
            - spec/requests/fragment_caching_controller_spec.rb
         
     | 
| 
       70 
90 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
      
 91 
     | 
    
         
            +
            - spec/taggable-cache/settings_spec.rb
         
     | 
| 
       71 
92 
     | 
    
         
             
            - spec/taggable-cache/store_spec.rb
         
     | 
| 
       72 
93 
     | 
    
         
             
            - taggable-cache.gemspec
         
     | 
| 
       73 
94 
     | 
    
         
             
            homepage: http://github.com/brain-geek/taggable-cache
         
     | 
| 
         @@ -85,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       85 
106 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       86 
107 
     | 
    
         
             
                  segments:
         
     | 
| 
       87 
108 
     | 
    
         
             
                  - 0
         
     | 
| 
       88 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 109 
     | 
    
         
            +
                  hash: 1067828559
         
     | 
| 
       89 
110 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       90 
111 
     | 
    
         
             
              none: false
         
     | 
| 
       91 
112 
     | 
    
         
             
              requirements:
         
     | 
| 
         @@ -94,10 +115,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       94 
115 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       95 
116 
     | 
    
         
             
                  segments:
         
     | 
| 
       96 
117 
     | 
    
         
             
                  - 0
         
     | 
| 
       97 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 118 
     | 
    
         
            +
                  hash: 1067828559
         
     | 
| 
       98 
119 
     | 
    
         
             
            requirements: []
         
     | 
| 
       99 
120 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       100 
     | 
    
         
            -
            rubygems_version: 1.8. 
     | 
| 
      
 121 
     | 
    
         
            +
            rubygems_version: 1.8.10
         
     | 
| 
       101 
122 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       102 
123 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       103 
124 
     | 
    
         
             
            summary: This gem simplifies cache expiration in rails by providing depends_on option
         
     | 
    
        data/Gemfile.lock
    DELETED
    
    | 
         @@ -1,148 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            PATH
         
     | 
| 
       2 
     | 
    
         
            -
              remote: .
         
     | 
| 
       3 
     | 
    
         
            -
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                taggable_cache (0.3.0)
         
     | 
| 
       5 
     | 
    
         
            -
                  rails (>= 3.1.0)
         
     | 
| 
       6 
     | 
    
         
            -
                  redis (>= 2.2.2)
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            GEM
         
     | 
| 
       9 
     | 
    
         
            -
              remote: http://rubygems.org/
         
     | 
| 
       10 
     | 
    
         
            -
              specs:
         
     | 
| 
       11 
     | 
    
         
            -
                actionmailer (3.2.2)
         
     | 
| 
       12 
     | 
    
         
            -
                  actionpack (= 3.2.2)
         
     | 
| 
       13 
     | 
    
         
            -
                  mail (~> 2.4.0)
         
     | 
| 
       14 
     | 
    
         
            -
                actionpack (3.2.2)
         
     | 
| 
       15 
     | 
    
         
            -
                  activemodel (= 3.2.2)
         
     | 
| 
       16 
     | 
    
         
            -
                  activesupport (= 3.2.2)
         
     | 
| 
       17 
     | 
    
         
            -
                  builder (~> 3.0.0)
         
     | 
| 
       18 
     | 
    
         
            -
                  erubis (~> 2.7.0)
         
     | 
| 
       19 
     | 
    
         
            -
                  journey (~> 1.0.1)
         
     | 
| 
       20 
     | 
    
         
            -
                  rack (~> 1.4.0)
         
     | 
| 
       21 
     | 
    
         
            -
                  rack-cache (~> 1.1)
         
     | 
| 
       22 
     | 
    
         
            -
                  rack-test (~> 0.6.1)
         
     | 
| 
       23 
     | 
    
         
            -
                  sprockets (~> 2.1.2)
         
     | 
| 
       24 
     | 
    
         
            -
                activemodel (3.2.2)
         
     | 
| 
       25 
     | 
    
         
            -
                  activesupport (= 3.2.2)
         
     | 
| 
       26 
     | 
    
         
            -
                  builder (~> 3.0.0)
         
     | 
| 
       27 
     | 
    
         
            -
                activerecord (3.2.2)
         
     | 
| 
       28 
     | 
    
         
            -
                  activemodel (= 3.2.2)
         
     | 
| 
       29 
     | 
    
         
            -
                  activesupport (= 3.2.2)
         
     | 
| 
       30 
     | 
    
         
            -
                  arel (~> 3.0.2)
         
     | 
| 
       31 
     | 
    
         
            -
                  tzinfo (~> 0.3.29)
         
     | 
| 
       32 
     | 
    
         
            -
                activeresource (3.2.2)
         
     | 
| 
       33 
     | 
    
         
            -
                  activemodel (= 3.2.2)
         
     | 
| 
       34 
     | 
    
         
            -
                  activesupport (= 3.2.2)
         
     | 
| 
       35 
     | 
    
         
            -
                activesupport (3.2.2)
         
     | 
| 
       36 
     | 
    
         
            -
                  i18n (~> 0.6)
         
     | 
| 
       37 
     | 
    
         
            -
                  multi_json (~> 1.0)
         
     | 
| 
       38 
     | 
    
         
            -
                arel (3.0.2)
         
     | 
| 
       39 
     | 
    
         
            -
                builder (3.0.0)
         
     | 
| 
       40 
     | 
    
         
            -
                capybara (1.1.2)
         
     | 
| 
       41 
     | 
    
         
            -
                  mime-types (>= 1.16)
         
     | 
| 
       42 
     | 
    
         
            -
                  nokogiri (>= 1.3.3)
         
     | 
| 
       43 
     | 
    
         
            -
                  rack (>= 1.0.0)
         
     | 
| 
       44 
     | 
    
         
            -
                  rack-test (>= 0.5.4)
         
     | 
| 
       45 
     | 
    
         
            -
                  selenium-webdriver (~> 2.0)
         
     | 
| 
       46 
     | 
    
         
            -
                  xpath (~> 0.1.4)
         
     | 
| 
       47 
     | 
    
         
            -
                childprocess (0.3.1)
         
     | 
| 
       48 
     | 
    
         
            -
                  ffi (~> 1.0.6)
         
     | 
| 
       49 
     | 
    
         
            -
                coderay (1.0.5)
         
     | 
| 
       50 
     | 
    
         
            -
                combustion (0.3.2)
         
     | 
| 
       51 
     | 
    
         
            -
                  rails (>= 3.0.0)
         
     | 
| 
       52 
     | 
    
         
            -
                  thor (>= 0.14.6)
         
     | 
| 
       53 
     | 
    
         
            -
                diff-lcs (1.1.3)
         
     | 
| 
       54 
     | 
    
         
            -
                erubis (2.7.0)
         
     | 
| 
       55 
     | 
    
         
            -
                ffi (1.0.11)
         
     | 
| 
       56 
     | 
    
         
            -
                hike (1.2.1)
         
     | 
| 
       57 
     | 
    
         
            -
                i18n (0.6.0)
         
     | 
| 
       58 
     | 
    
         
            -
                journey (1.0.3)
         
     | 
| 
       59 
     | 
    
         
            -
                json (1.6.5)
         
     | 
| 
       60 
     | 
    
         
            -
                mail (2.4.3)
         
     | 
| 
       61 
     | 
    
         
            -
                  i18n (>= 0.4.0)
         
     | 
| 
       62 
     | 
    
         
            -
                  mime-types (~> 1.16)
         
     | 
| 
       63 
     | 
    
         
            -
                  treetop (~> 1.4.8)
         
     | 
| 
       64 
     | 
    
         
            -
                method_source (0.7.1)
         
     | 
| 
       65 
     | 
    
         
            -
                mime-types (1.17.2)
         
     | 
| 
       66 
     | 
    
         
            -
                multi_json (1.1.0)
         
     | 
| 
       67 
     | 
    
         
            -
                nokogiri (1.5.0)
         
     | 
| 
       68 
     | 
    
         
            -
                polyglot (0.3.3)
         
     | 
| 
       69 
     | 
    
         
            -
                pry (0.9.8.4)
         
     | 
| 
       70 
     | 
    
         
            -
                  coderay (~> 1.0.5)
         
     | 
| 
       71 
     | 
    
         
            -
                  method_source (~> 0.7.1)
         
     | 
| 
       72 
     | 
    
         
            -
                  slop (>= 2.4.4, < 3)
         
     | 
| 
       73 
     | 
    
         
            -
                pry-nav (0.1.0)
         
     | 
| 
       74 
     | 
    
         
            -
                  pry (~> 0.9.8.1)
         
     | 
| 
       75 
     | 
    
         
            -
                rack (1.4.1)
         
     | 
| 
       76 
     | 
    
         
            -
                rack-cache (1.2)
         
     | 
| 
       77 
     | 
    
         
            -
                  rack (>= 0.4)
         
     | 
| 
       78 
     | 
    
         
            -
                rack-ssl (1.3.2)
         
     | 
| 
       79 
     | 
    
         
            -
                  rack
         
     | 
| 
       80 
     | 
    
         
            -
                rack-test (0.6.1)
         
     | 
| 
       81 
     | 
    
         
            -
                  rack (>= 1.0)
         
     | 
| 
       82 
     | 
    
         
            -
                rails (3.2.2)
         
     | 
| 
       83 
     | 
    
         
            -
                  actionmailer (= 3.2.2)
         
     | 
| 
       84 
     | 
    
         
            -
                  actionpack (= 3.2.2)
         
     | 
| 
       85 
     | 
    
         
            -
                  activerecord (= 3.2.2)
         
     | 
| 
       86 
     | 
    
         
            -
                  activeresource (= 3.2.2)
         
     | 
| 
       87 
     | 
    
         
            -
                  activesupport (= 3.2.2)
         
     | 
| 
       88 
     | 
    
         
            -
                  bundler (~> 1.0)
         
     | 
| 
       89 
     | 
    
         
            -
                  railties (= 3.2.2)
         
     | 
| 
       90 
     | 
    
         
            -
                railties (3.2.2)
         
     | 
| 
       91 
     | 
    
         
            -
                  actionpack (= 3.2.2)
         
     | 
| 
       92 
     | 
    
         
            -
                  activesupport (= 3.2.2)
         
     | 
| 
       93 
     | 
    
         
            -
                  rack-ssl (~> 1.3.2)
         
     | 
| 
       94 
     | 
    
         
            -
                  rake (>= 0.8.7)
         
     | 
| 
       95 
     | 
    
         
            -
                  rdoc (~> 3.4)
         
     | 
| 
       96 
     | 
    
         
            -
                  thor (~> 0.14.6)
         
     | 
| 
       97 
     | 
    
         
            -
                rake (0.9.2.2)
         
     | 
| 
       98 
     | 
    
         
            -
                rdoc (3.12)
         
     | 
| 
       99 
     | 
    
         
            -
                  json (~> 1.4)
         
     | 
| 
       100 
     | 
    
         
            -
                redis (2.2.2)
         
     | 
| 
       101 
     | 
    
         
            -
                rspec (2.8.0)
         
     | 
| 
       102 
     | 
    
         
            -
                  rspec-core (~> 2.8.0)
         
     | 
| 
       103 
     | 
    
         
            -
                  rspec-expectations (~> 2.8.0)
         
     | 
| 
       104 
     | 
    
         
            -
                  rspec-mocks (~> 2.8.0)
         
     | 
| 
       105 
     | 
    
         
            -
                rspec-core (2.8.0)
         
     | 
| 
       106 
     | 
    
         
            -
                rspec-expectations (2.8.0)
         
     | 
| 
       107 
     | 
    
         
            -
                  diff-lcs (~> 1.1.2)
         
     | 
| 
       108 
     | 
    
         
            -
                rspec-mocks (2.8.0)
         
     | 
| 
       109 
     | 
    
         
            -
                rspec-rails (2.8.1)
         
     | 
| 
       110 
     | 
    
         
            -
                  actionpack (>= 3.0)
         
     | 
| 
       111 
     | 
    
         
            -
                  activesupport (>= 3.0)
         
     | 
| 
       112 
     | 
    
         
            -
                  railties (>= 3.0)
         
     | 
| 
       113 
     | 
    
         
            -
                  rspec (~> 2.8.0)
         
     | 
| 
       114 
     | 
    
         
            -
                rubyzip (0.9.6.1)
         
     | 
| 
       115 
     | 
    
         
            -
                selenium-webdriver (2.20.0)
         
     | 
| 
       116 
     | 
    
         
            -
                  childprocess (>= 0.2.5)
         
     | 
| 
       117 
     | 
    
         
            -
                  ffi (~> 1.0)
         
     | 
| 
       118 
     | 
    
         
            -
                  multi_json (~> 1.0)
         
     | 
| 
       119 
     | 
    
         
            -
                  rubyzip
         
     | 
| 
       120 
     | 
    
         
            -
                slop (2.4.4)
         
     | 
| 
       121 
     | 
    
         
            -
                sprockets (2.1.2)
         
     | 
| 
       122 
     | 
    
         
            -
                  hike (~> 1.2)
         
     | 
| 
       123 
     | 
    
         
            -
                  rack (~> 1.0)
         
     | 
| 
       124 
     | 
    
         
            -
                  tilt (~> 1.1, != 1.3.0)
         
     | 
| 
       125 
     | 
    
         
            -
                sqlite3 (1.3.5)
         
     | 
| 
       126 
     | 
    
         
            -
                thor (0.14.6)
         
     | 
| 
       127 
     | 
    
         
            -
                tilt (1.3.3)
         
     | 
| 
       128 
     | 
    
         
            -
                treetop (1.4.10)
         
     | 
| 
       129 
     | 
    
         
            -
                  polyglot
         
     | 
| 
       130 
     | 
    
         
            -
                  polyglot (>= 0.3.1)
         
     | 
| 
       131 
     | 
    
         
            -
                tzinfo (0.3.32)
         
     | 
| 
       132 
     | 
    
         
            -
                xpath (0.1.4)
         
     | 
| 
       133 
     | 
    
         
            -
                  nokogiri (~> 1.3)
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
            PLATFORMS
         
     | 
| 
       136 
     | 
    
         
            -
              ruby
         
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
            DEPENDENCIES
         
     | 
| 
       139 
     | 
    
         
            -
              capybara
         
     | 
| 
       140 
     | 
    
         
            -
              combustion
         
     | 
| 
       141 
     | 
    
         
            -
              pry
         
     | 
| 
       142 
     | 
    
         
            -
              pry-nav
         
     | 
| 
       143 
     | 
    
         
            -
              rails (~> 3.2.0)
         
     | 
| 
       144 
     | 
    
         
            -
              rake
         
     | 
| 
       145 
     | 
    
         
            -
              rspec
         
     | 
| 
       146 
     | 
    
         
            -
              rspec-rails
         
     | 
| 
       147 
     | 
    
         
            -
              sqlite3
         
     | 
| 
       148 
     | 
    
         
            -
              taggable_cache!
         
     | 
| 
         
            File without changes
         
     |