primedia-endeca 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: