endeca 1.4.2 → 1.5.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.
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{endeca}
8
- s.version = "1.4.2"
8
+ s.version = "1.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Primedia Team"]
12
- s.date = %q{2010-02-19}
12
+ s.date = %q{2010-05-06}
13
13
  s.email = %q{}
14
14
  s.extra_rdoc_files = [
15
15
  "README.rdoc"
@@ -43,6 +43,7 @@ Gem::Specification.new do |s|
43
43
  "spec/endeca/dimension_spec.rb",
44
44
  "spec/endeca/document_collection_spec.rb",
45
45
  "spec/endeca/document_spec.rb",
46
+ "spec/endeca/logging_spec.rb",
46
47
  "spec/endeca/map_spec.rb",
47
48
  "spec/endeca/readers_spec.rb",
48
49
  "spec/endeca/refinement_dimension_spec.rb",
@@ -57,7 +58,7 @@ Gem::Specification.new do |s|
57
58
  s.homepage = %q{http://github.com/primedia/endeca-ruby}
58
59
  s.rdoc_options = ["--charset=UTF-8"]
59
60
  s.require_paths = ["lib"]
60
- s.rubygems_version = %q{1.3.5}
61
+ s.rubygems_version = %q{1.3.6}
61
62
  s.summary = %q{Endeca adapter for use with the Endeca Bridge}
62
63
  s.test_files = [
63
64
  "spec/endeca_spec.rb",
@@ -67,6 +68,7 @@ Gem::Specification.new do |s|
67
68
  "spec/endeca/request_spec.rb",
68
69
  "spec/endeca/transformer_spec.rb",
69
70
  "spec/endeca/breadcrumb_spec.rb",
71
+ "spec/endeca/logging_spec.rb",
70
72
  "spec/endeca/document_spec.rb",
71
73
  "spec/endeca/refinement_spec.rb",
72
74
  "spec/endeca/map_spec.rb",
@@ -1,30 +1,19 @@
1
1
  require 'curb'
2
2
  require 'yajl'
3
3
  require 'logger'
4
+ require 'uri'
4
5
 
5
6
  $:.unshift(File.dirname(__FILE__))
6
7
  require 'core_ext'
7
8
  require 'endeca/logging'
8
9
  require 'endeca/benchmarking'
9
- require 'endeca/readers'
10
- require 'endeca/map'
11
- require 'endeca/transformer'
12
- require 'endeca/dimension'
13
- require 'endeca/refinement_dimension'
14
- require 'endeca/refinement'
15
- require 'endeca/breadcrumbs'
16
- require 'endeca/breadcrumb'
17
- require 'endeca/request'
18
- require 'endeca/document_collection'
19
- require 'endeca/document'
20
-
21
10
 
22
11
  module Endeca
23
12
  extend Benchmarking
24
13
  extend Logging
25
14
 
26
15
  # :stopdoc:
27
- VERSION = '1.4.2'
16
+ VERSION = '1.5.0'
28
17
  # :startdoc:
29
18
 
30
19
  # Returns the version string for the library.
@@ -32,23 +21,27 @@ module Endeca
32
21
  VERSION
33
22
  end
34
23
 
35
- # Set Endeca.debug = true to turn on query logging
36
- # Set Endeca.benchmark = true to turn on query benchmarking
24
+ # Set ENV['ENDECA_DEBUG'] = true to turn on query logging
25
+ # Set ENV['ENDECA_BENCHMARK'] = true to turn on query benchmarking
37
26
  class << self
38
27
  attr_accessor :logger
39
- attr_accessor :debug
40
- attr_accessor :benchmark
41
28
  attr_accessor :timeout
42
29
 
43
30
  def analyze?
44
- debug && logger && benchmark
31
+ debug? && benchmark?
32
+ end
33
+
34
+ def debug?
35
+ ENV['ENDECA_DEBUG'] == 'true'
36
+ end
37
+
38
+ def benchmark?
39
+ ENV['ENDECA_BENCHMARK'] == 'true'
45
40
  end
46
41
 
47
42
  end
48
43
 
49
44
  self.logger = Logger.new(STDOUT)
50
- self.debug = false
51
- self.benchmark = false
52
45
  self.timeout = 8
53
46
 
54
47
  # Endeca URIs require colons to be escaped
@@ -57,4 +50,16 @@ module Endeca
57
50
  end
58
51
  end
59
52
 
53
+ require 'endeca/readers'
54
+ require 'endeca/map'
55
+ require 'endeca/transformer'
56
+ require 'endeca/dimension'
57
+ require 'endeca/refinement_dimension'
58
+ require 'endeca/refinement'
59
+ require 'endeca/breadcrumbs'
60
+ require 'endeca/breadcrumb'
61
+ require 'endeca/request'
62
+ require 'endeca/document_collection'
63
+ require 'endeca/document'
64
+
60
65
  puts ">> Using Endeca gem version: #{Endeca::VERSION}"
@@ -3,34 +3,26 @@ module Endeca
3
3
  # Log and benchmark the workings of a single block. Will only be called if
4
4
  # Endeca.debug and Endeca.benchmark are true.
5
5
  def bm(metric_symbol, detail = nil)
6
- if Endeca.analyze?
7
- result = nil
8
- ms = ::Benchmark.ms { result = yield }
9
- add_bm_detail(metric_symbol,ms,detail) if detail.to_s.strip.length > 0
10
- increase_metric(metric_symbol, ms)
11
- Endeca.logger.debug("#{metric_symbol.to_s}: #{'%.1f' % ms}ms")
12
- result
13
- else
14
- yield
15
- end
6
+ result = nil
7
+ ms = ::Benchmark.ms { result = yield }
8
+ add_bm_detail(metric_symbol,ms,detail) if detail.to_s.strip.length > 0
9
+ increase_metric(metric_symbol, ms)
10
+ Endeca.logger.debug("#{metric_symbol.to_s}: #{'%.1f' % ms}ms")
11
+ result
16
12
  end
17
13
 
18
14
  def increase_metric(metric_symbol, up_value)
19
- if Endeca.analyze?
20
- Thread.current[:endeca] ||= {}
21
- Thread.current[:endeca][metric_symbol] ||= 0
22
- Thread.current[:endeca][metric_symbol] += up_value
23
- end
15
+ Thread.current[:endeca] ||= {}
16
+ Thread.current[:endeca][metric_symbol] ||= 0
17
+ Thread.current[:endeca][metric_symbol] += up_value
24
18
  end
25
19
 
26
20
  private
27
21
 
28
22
  def add_bm_detail(label,time,detail)
29
- if Endeca.analyze?
30
- Thread.current[:endeca] ||= {}
31
- Thread.current[:endeca]["#{label}_detail"] ||= []
32
- Thread.current[:endeca]["#{label}_detail"] << {:detail => detail, :time => time}
33
- end
23
+ Thread.current[:endeca] ||= {}
24
+ Thread.current[:endeca]["#{label}_detail"] ||= []
25
+ Thread.current[:endeca]["#{label}_detail"] << {:detail => detail, :time => time}
34
26
  end
35
27
  end
36
28
  end
@@ -3,7 +3,8 @@ module Endeca
3
3
  # Log and benchmark the workings of a single block. Will only be called if
4
4
  # Endeca.benchmark is true
5
5
  def log(message)
6
- Endeca.logger.debug(message) if Endeca.debug && Endeca.logger
6
+ logger = Endeca.logger
7
+ logger.debug(message) if Endeca.debug? && logger
7
8
  end
8
9
  end
9
10
  end
@@ -126,7 +126,7 @@ module Endeca
126
126
  end
127
127
 
128
128
  def inspect
129
- perform({ 'old_key' => "inspect_data" }).inspect
129
+ perform({ @old_key => "inspect_data" }).inspect
130
130
  end
131
131
 
132
132
  private
@@ -13,10 +13,17 @@ module Endeca
13
13
  @query = query
14
14
  end
15
15
 
16
- def perform
17
- raise RequestError, endeca_error[:message] if endeca_error?
18
- Endeca.increase_metric(:request_count, 1)
19
- return response
16
+ if Endeca.analyze?
17
+ def perform
18
+ raise RequestError, endeca_error[:message] if endeca_error?
19
+ Endeca.increase_metric(:request_count, 1)
20
+ return response
21
+ end
22
+ else
23
+ def perform
24
+ raise RequestError, endeca_error[:message] if endeca_error?
25
+ return response
26
+ end
20
27
  end
21
28
 
22
29
  def response
@@ -47,37 +54,61 @@ module Endeca
47
54
  !endeca_error.nil?
48
55
  end
49
56
 
50
- def get_response #:nodoc:
51
- Endeca.log "ENDECA ADAPTER REQUEST"
52
- Endeca.log " parameters => " + @query.inspect
53
- Endeca.log " uri => " + uri.to_s
54
- Endeca.bm(:request_time, "#{@path} #{@query.inspect}") do
55
- begin
56
- @response = Curl::Easy.perform(uri.to_s) do |curl|
57
- curl.timeout = Endeca.timeout
58
- end
59
- rescue => e
60
- raise RequestError, e.message
61
- end
62
- end
63
-
64
- return @response
65
- end
66
-
67
- def handle_response(response) #:nodoc:
68
- case response.response_code.to_s
69
- when "200"
70
- Endeca.bm :parse_time do
57
+ if Endeca.analyze?
58
+ def get_response #:nodoc:
59
+ Endeca.log "ENDECA ADAPTER REQUEST"
60
+ Endeca.log " parameters => " + @query.inspect
61
+ Endeca.log " uri => " + uri.to_s
62
+ Endeca.bm(:request_time, "#{@path} #{@query.inspect}") do
71
63
  begin
72
- @json = Yajl::Parser.parse(response.body_str)
73
- rescue Yajl::ParseError => e
74
- raise RequestError, "JSON Parse error: #{e}"
64
+ Curl::Easy.perform(uri.to_s) do |curl|
65
+ curl.timeout = Endeca.timeout
66
+ end
67
+ rescue => e
68
+ raise RequestError, e.message
75
69
  end
76
70
  end
77
- else
78
- raise RequestError, "#{response.response_code} HTTP Error"
79
71
  end
80
- end
72
+ else
73
+ def get_response #:nodoc:
74
+ Curl::Easy.perform(uri.to_s) do |curl|
75
+ curl.timeout = Endeca.timeout
76
+ end
77
+ rescue => e
78
+ raise RequestError, e.message
79
+ end
80
+ end
81
+
82
+ if Endeca.analyze?
83
+
84
+ def handle_response(response) #:nodoc:
85
+ case response.response_code.to_s
86
+ when "200"
87
+ Endeca.bm :parse_time do
88
+ begin
89
+ Yajl::Parser.parse(response.body_str)
90
+ rescue Yajl::ParseError => e
91
+ raise RequestError, "JSON Parse error: #{e}"
92
+ end
93
+ end
94
+ else
95
+ raise RequestError, "#{response.response_code} HTTP Error"
96
+ end
97
+ end
98
+ else
99
+ def handle_response(response) #:nodoc:
100
+ case response.response_code.to_s
101
+ when "200"
102
+ begin
103
+ Yajl::Parser.parse(response.body_str)
104
+ rescue Yajl::ParseError => e
105
+ raise RequestError, "JSON Parse error: #{e}"
106
+ end
107
+ else
108
+ raise RequestError, "#{response.response_code} HTTP Error"
109
+ end
110
+ end
111
+ end
81
112
 
82
113
  def query_string
83
114
  @path.match(/\?(.*)$/)
@@ -383,7 +383,7 @@ describe Endeca::Document do
383
383
 
384
384
  describe "#inspect" do
385
385
  it "should return details of the Document class" do
386
- Endeca::Document.inspect.should == "#<Endeca::Document>\nPath: \"http://endeca.example.com\"\nCollection Class: SubDocumentCollection\"\nMappings:\n\tfoo: {:new_foo=>nil}\n\t \nDefaultParams:\n\t \n"
386
+ Endeca::Document.inspect.should == "#<Endeca::Document>\nPath: \"http://endeca.example.com\"\nCollection Class: SubDocumentCollection\"\nMappings:\n\tfoo: {:new_foo=>\"inspect_data\"}\n\t \nDefaultParams:\n\t \n"
387
387
  end
388
388
  end
389
389
  end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ class Logit
4
+ include Endeca::Logging
5
+ end
6
+
7
+ describe Endeca::Logging do
8
+ before do
9
+ @logit = Logit.new
10
+ end
11
+
12
+ describe '.log' do
13
+ it 'calls endeca logger' do
14
+ logger = mock('logger')
15
+ Endeca.should_receive(:debug?).and_return(true)
16
+ Endeca.should_receive(:logger).and_return(logger)
17
+
18
+ logger.should_receive(:debug).with('hiya')
19
+
20
+ @logit.log('hiya')
21
+ end
22
+ end
23
+ end
@@ -116,7 +116,7 @@ describe Endeca::Map do
116
116
  map = Endeca::Map.new :foo
117
117
  map.into(:Ntk => :Ntt)
118
118
  map.inspect.should include(":Ntk=>\"foo\"")
119
- map.inspect.should include(":Ntt=>\"\"")
119
+ map.inspect.should include(":Ntt=>\"inspect_data\"")
120
120
  end
121
121
  end
122
122
  end
@@ -14,6 +14,34 @@ describe Endeca do
14
14
  Endeca.escape(query).should == 'N=5875%205922&Nf=geocode%7CGCLT%2026.121900,-80.143600%2032.18688&Nu=mgtcoid&Ns=searchonly%7C0%7C%7Cisapartment%7C1%7C%7Csortorder%7C0&Ntk=showapartment%7Cmgtcologodisplay&F=cityseopath%3A1%7Cmediummgtcologo%3A1%7Cmgtcodescription%3A1%7Cmgtcoid%3A1%7Cmgtcologo%3A1%7Cmgtcologodisplay%3A1%7Cmgtconame%3A1%7Cmsa_code%3A1%7Cpropertycity%3A1%7Cpropertystatelong%3A1%7Csmallmgtcologo%3A1%7Cwebtollfree%3A1%7Cmvtphone%3A1&Ntt=1%7C1&M=recs_per_page%3A99999%7Cexpand_all_dims%3A0'
15
15
 
16
16
  end
17
+
18
+ it "#anaylze" do
19
+ Endeca.should_receive(:debug?).and_return(true)
20
+ Endeca.should_receive(:benchmark?).and_return(true)
21
+
22
+ Endeca.analyze?
23
+ end
24
+
25
+ it "#debug?" do
26
+ ENV['ENDECA_DEBUG'] = 'true'
27
+
28
+ Endeca.debug?.should == true
29
+
30
+ ENV['ENDECA_DEBUG'] = 'false'
31
+
32
+ Endeca.debug?.should == false
33
+ end
34
+
35
+ it "#benchmark?" do
36
+ ENV['ENDECA_BENCHMARK'] = 'true'
37
+
38
+ Endeca.benchmark?.should == true
39
+
40
+ ENV['ENDECA_BENCHMARK'] = 'false'
41
+
42
+ Endeca.benchmark?.should == false
43
+ end
44
+
17
45
  end
18
46
 
19
47
  # EOF
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: endeca
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 5
8
+ - 0
9
+ version: 1.5.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Primedia Team
@@ -9,39 +14,50 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-19 00:00:00 -05:00
17
+ date: 2010-05-06 00:00:00 -04:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: curb
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - "="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 6
30
+ - 6
31
+ - 0
23
32
  version: 0.6.6.0
24
- version:
33
+ type: :runtime
34
+ version_requirements: *id001
25
35
  - !ruby/object:Gem::Dependency
26
36
  name: yajl-ruby
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
30
39
  requirements:
31
40
  - - "="
32
41
  - !ruby/object:Gem::Version
42
+ segments:
43
+ - 0
44
+ - 7
45
+ - 1
33
46
  version: 0.7.1
34
- version:
47
+ type: :runtime
48
+ version_requirements: *id002
35
49
  - !ruby/object:Gem::Dependency
36
50
  name: rspec
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
40
53
  requirements:
41
54
  - - ">="
42
55
  - !ruby/object:Gem::Version
56
+ segments:
57
+ - 0
43
58
  version: "0"
44
- version:
59
+ type: :development
60
+ version_requirements: *id003
45
61
  description:
46
62
  email: ""
47
63
  executables: []
@@ -79,6 +95,7 @@ files:
79
95
  - spec/endeca/dimension_spec.rb
80
96
  - spec/endeca/document_collection_spec.rb
81
97
  - spec/endeca/document_spec.rb
98
+ - spec/endeca/logging_spec.rb
82
99
  - spec/endeca/map_spec.rb
83
100
  - spec/endeca/readers_spec.rb
84
101
  - spec/endeca/refinement_dimension_spec.rb
@@ -102,18 +119,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
119
  requirements:
103
120
  - - ">="
104
121
  - !ruby/object:Gem::Version
122
+ segments:
123
+ - 0
105
124
  version: "0"
106
- version:
107
125
  required_rubygems_version: !ruby/object:Gem::Requirement
108
126
  requirements:
109
127
  - - ">="
110
128
  - !ruby/object:Gem::Version
129
+ segments:
130
+ - 0
111
131
  version: "0"
112
- version:
113
132
  requirements: []
114
133
 
115
134
  rubyforge_project:
116
- rubygems_version: 1.3.5
135
+ rubygems_version: 1.3.6
117
136
  signing_key:
118
137
  specification_version: 3
119
138
  summary: Endeca adapter for use with the Endeca Bridge
@@ -125,6 +144,7 @@ test_files:
125
144
  - spec/endeca/request_spec.rb
126
145
  - spec/endeca/transformer_spec.rb
127
146
  - spec/endeca/breadcrumb_spec.rb
147
+ - spec/endeca/logging_spec.rb
128
148
  - spec/endeca/document_spec.rb
129
149
  - spec/endeca/refinement_spec.rb
130
150
  - spec/endeca/map_spec.rb