primedia-endeca 1.1.0 → 1.2.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/endeca.gemspec CHANGED
@@ -2,20 +2,19 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{endeca}
5
- s.version = "1.1.0"
5
+ s.version = "1.2.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Rein Henrichs", "Andy Stone"]
9
- s.date = %q{2009-04-22}
9
+ s.date = %q{2009-05-13}
10
10
  s.description = %q{An Endeca client library for Ruby.}
11
11
  s.email = %q{}
12
12
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.rdoc"]
13
13
  s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "endeca.gemspec", "example/benchmark.rb", "example/listing.rb", "lib/class_to_proc.rb", "lib/core_ext.rb", "lib/endeca.rb", "lib/endeca/benchmarking.rb", "lib/endeca/breadcrumb.rb", "lib/endeca/breadcrumbs.rb", "lib/endeca/caching.rb", "lib/endeca/dimension.rb", "lib/endeca/document.rb", "lib/endeca/document_collection.rb", "lib/endeca/logging.rb", "lib/endeca/map.rb", "lib/endeca/readers.rb", "lib/endeca/refinement.rb", "lib/endeca/refinement_dimension.rb", "lib/endeca/request.rb", "lib/endeca/transformer.rb", "spec/core_ext_spec.rb", "spec/endeca/benchmarking_spec.rb", "spec/endeca/breadcrumb_spec.rb", "spec/endeca/caching_spec.rb", "spec/endeca/dimension_spec.rb", "spec/endeca/document_collection_spec.rb", "spec/endeca/document_spec.rb", "spec/endeca/map_spec.rb", "spec/endeca/readers_spec.rb", "spec/endeca/refinement_dimension_spec.rb", "spec/endeca/refinement_spec.rb", "spec/endeca/request_spec.rb", "spec/endeca/transformer_spec.rb", "spec/endeca_spec.rb", "spec/rcov.opts", "spec/spec.opts", "spec/spec_helper.rb"]
14
- s.has_rdoc = true
15
14
  s.homepage = %q{http://github.com/primedia/endeca-ruby}
16
15
  s.rdoc_options = ["--main", "README.rdoc"]
17
16
  s.require_paths = ["lib"]
18
17
  s.rubyforge_project = %q{endeca}
19
- s.rubygems_version = %q{1.3.1}
18
+ s.rubygems_version = %q{1.3.3}
20
19
  s.summary = %q{An Endeca client library for Ruby}
21
20
  end
data/lib/endeca.rb CHANGED
@@ -28,7 +28,7 @@ module Endeca
28
28
  extend Logging
29
29
 
30
30
  # :stopdoc:
31
- VERSION = '1.1.0'
31
+ VERSION = '1.2.0'
32
32
  # :startdoc:
33
33
 
34
34
  # Returns the version string for the library.
@@ -10,16 +10,29 @@ require 'endeca'
10
10
  module Endeca #:nodoc:
11
11
 
12
12
  class << self
13
- def perform_caching?; !@@cache_store.nil? end
14
- def cache_store; @@cache_store; end
13
+ def perform_caching?
14
+ !cache_store.nil?
15
+ end
16
+
17
+ def cache_store
18
+ @cache_store
19
+ end
20
+
21
+ def disable_caching
22
+ @cache_store = nil
23
+ end
15
24
 
16
25
  # Defines the storage option for cached queries
26
+ #
27
+ # ActiveSupport::Cache.lookup_store will return MemoryStore
28
+ # if nil is passed in and we don't want that.
17
29
  def cache_store=(store_option)
18
- @@cache_store = ActiveSupport::Cache.lookup_store(store_option)
30
+ if store_option
31
+ @cache_store = ActiveSupport::Cache.lookup_store(store_option)
32
+ end
19
33
  end
20
34
  end
21
35
 
22
-
23
36
  # Caching is a way to speed up slow Endeca queries by keeping the result of
24
37
  # an Endeca request around to be reused by subequest requests. Caching is
25
38
  # turned off by default.
@@ -39,26 +52,19 @@ module Endeca #:nodoc:
39
52
  # Endeca.cache_store = :drb_store, "druby://localhost:9192"
40
53
  # Endeca.cache_store = :mem_cache_store, "localhost"
41
54
  # Endeca.cache_store = MyOwnStore.new("parameter")
42
- module Caching
43
- def get_response_with_caching #:nodoc:
44
- return get_response_without_caching unless Endeca.perform_caching?
45
-
46
- fetch(cache_key) { get_response_without_caching }
55
+ module Caching
56
+ def self.included(base)
57
+ base.alias_method_chain :get_response, :caching
47
58
  end
48
59
 
49
60
  private
50
61
 
51
- def fetch(key, &block)
52
- Endeca.cache_store.fetch(key, &block)
62
+ def get_response_with_caching #:nodoc:
63
+ return get_response_without_caching unless Endeca.perform_caching?
64
+ fetch { get_response_without_caching }
53
65
  end
54
66
 
55
- def cache_key
56
- Digest::SHA1.hexdigest uri.to_s
57
- end
67
+ def cache_key; Digest::SHA1.hexdigest uri.to_s end
68
+ def fetch(&block); Endeca.cache_store.fetch(cache_key, &block) end
58
69
  end
59
70
  end
60
-
61
- Endeca::Request.class_eval do
62
- include Endeca::Caching
63
- alias_method_chain :get_response, :caching
64
- end
@@ -1,9 +1,10 @@
1
1
  require 'uri'
2
+ require 'lib/endeca/caching'
3
+
2
4
  module Endeca
3
5
  class RequestError < ::StandardError; end
4
6
 
5
7
  class Request
6
-
7
8
  def self.perform(path, query=nil)
8
9
  raise RequestError, "Must provide a path" unless path
9
10
  new(path, query).perform
@@ -77,5 +78,7 @@ module Endeca
77
78
 
78
79
  query_string_parts.empty? ? nil : query_string_parts.join('&')
79
80
  end
81
+
82
+ include Caching
80
83
  end
81
84
  end
@@ -1,8 +1,14 @@
1
1
  require File.join(File.dirname(__FILE__), %w[.. spec_helper])
2
2
 
3
3
  describe Endeca::Request do
4
- before(:all){ Endeca.cache_store = :memory_store }
5
- after(:all){ Endeca.cache_store = nil }
4
+ before(:all) do
5
+ Endeca.cache_store = :memory_store
6
+ end
7
+
8
+ after(:all) do
9
+ Endeca.disable_caching
10
+ end
11
+
6
12
  before do
7
13
  @path = "http://example.com"
8
14
  @query = "foo=bar"
@@ -14,7 +20,7 @@ describe Endeca::Request do
14
20
  @request.stub!(:cache_key).and_return(@cache_key)
15
21
  end
16
22
 
17
- context "When a cached response is available" do
23
+ describe "When a cached response is available" do
18
24
  before do
19
25
  Endeca.cache_store.write(@cache_key, @response)
20
26
  end
@@ -29,7 +35,7 @@ describe Endeca::Request do
29
35
  end
30
36
  end
31
37
 
32
- context "When a cached response is not available" do
38
+ describe "When a cached response is not available" do
33
39
  before do
34
40
  Endeca.cache_store.delete(@cache_key)
35
41
  end
@@ -47,3 +53,21 @@ describe Endeca::Request do
47
53
  end
48
54
  end
49
55
  end
56
+
57
+
58
+ describe Endeca::Caching do
59
+ it "should return false when cache store is not set" do
60
+ Endeca.perform_caching?.should be_false
61
+ end
62
+
63
+ it "should return false when if disable_caching has been set" do
64
+ Endeca.cache_store = :memory_store
65
+ Endeca.disable_caching
66
+ Endeca.perform_caching?.should be_false
67
+ end
68
+
69
+ it "should return memory store" do
70
+ Endeca.cache_store = :memory_store
71
+ Endeca.cache_store.class.should == ActiveSupport::Cache::MemoryStore
72
+ end
73
+ end
@@ -6,7 +6,7 @@ require File.join(File.dirname(__FILE__), %w[.. spec_helper])
6
6
  describe Endeca::Request do
7
7
  before do
8
8
  @path = 'http://example.com/foobar'
9
- Endeca.cache_store = nil
9
+ Endeca.disable_caching
10
10
  end
11
11
 
12
12
  describe '.perform' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primedia-endeca
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rein Henrichs
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-04-22 00:00:00 -07:00
13
+ date: 2009-05-13 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -66,7 +66,7 @@ files:
66
66
  - spec/rcov.opts
67
67
  - spec/spec.opts
68
68
  - spec/spec_helper.rb
69
- has_rdoc: true
69
+ has_rdoc: false
70
70
  homepage: http://github.com/primedia/endeca-ruby
71
71
  post_install_message:
72
72
  rdoc_options: