endeca 1.4.2 → 1.5.0

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