supernova 0.7.5 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -19,6 +19,8 @@ group :development do
19
19
  gem "ZenTest", "4.5.0"
20
20
  gem "geokit"
21
21
  gem "guard"
22
+ gem "guard-bundler"
23
+ gem "guard-rspec"
22
24
  gem "rb-fsevent"
23
25
  gem "growl"
24
26
  gem "growl_notify"
@@ -27,13 +27,18 @@ GEM
27
27
  rb-appscript
28
28
  guard (0.8.4)
29
29
  thor (~> 0.14.6)
30
+ guard-bundler (0.1.3)
31
+ bundler (>= 1.0.0)
32
+ guard (>= 0.2.2)
33
+ guard-rspec (0.5.0)
34
+ guard (>= 0.8.4)
30
35
  i18n (0.5.0)
31
36
  jeweler (1.6.4)
32
37
  bundler (~> 1.0)
33
38
  git (>= 1.2.5)
34
39
  rake
35
40
  json (1.5.3)
36
- linecache19 (0.5.12)
41
+ linecache19 (0.5.13)
37
42
  ruby_core_source (>= 0.1.4)
38
43
  mime-types (1.17.2)
39
44
  mysql2 (0.2.18)
@@ -49,7 +54,7 @@ GEM
49
54
  rspec-expectations (2.8.0)
50
55
  diff-lcs (~> 1.1.2)
51
56
  rspec-mocks (2.8.0)
52
- ruby-debug-base19 (0.11.25)
57
+ ruby-debug-base19 (0.11.26)
53
58
  columnize (>= 0.3.1)
54
59
  linecache19 (>= 0.5.11)
55
60
  ruby_core_source (>= 0.1.4)
@@ -79,6 +84,8 @@ DEPENDENCIES
79
84
  growl
80
85
  growl_notify
81
86
  guard
87
+ guard-bundler
88
+ guard-rspec
82
89
  i18n
83
90
  jeweler (~> 1.6.0)
84
91
  json
@@ -0,0 +1,29 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ require "rubygems"
5
+ require "guard/guard"
6
+
7
+ guard :bundler do
8
+ watch('Gemfile')
9
+ end
10
+
11
+ def spec_helper_cmd
12
+ "-r ./spec/spec_helper.rb" if File.exists?(File.expand_path("../spec/spec_helper.rb", __FILE__))
13
+ end
14
+
15
+ guard 'rspec', :version => 2, :cli => "#{spec_helper_cmd} --color -t wip", :notification => :growl do
16
+ watch(%r{^spec/.+_spec\.rb$})
17
+ watch(%r{^lib/(.+)\.rb$}) { |m| ["spec/lib/#{m[1]}_spec.rb", "spec/#{m[1]}_spec.rb"] }
18
+ watch('spec/spec_helper.rb') { "spec" }
19
+
20
+ # Rails example
21
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
22
+ watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
23
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
24
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
25
+ watch('config/routes.rb') { "spec/routing" }
26
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
27
+ # Capybara request specs
28
+ watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
29
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.5
1
+ 0.7.6
@@ -42,4 +42,7 @@ require "supernova/symbol_extensions"
42
42
  require "supernova/condition"
43
43
  require "supernova/collection"
44
44
  require "supernova/criteria"
45
- require "supernova/solr"
45
+ require "supernova/solr"
46
+ require "supernova/attr_initializer"
47
+ require "supernova/coordinate"
48
+ require "supernova/circle"
@@ -0,0 +1,22 @@
1
+ module Supernova::AttrInitializer
2
+ module InstanceMethods
3
+ def initialize(attributes = {})
4
+ attributes.each do |key, value|
5
+ self.send(:"#{key}=", value)
6
+ end
7
+ end
8
+ end
9
+
10
+ module ClassMethods
11
+ def attr_initializer(*args)
12
+ args.each do |arg|
13
+ attr_accessor arg
14
+ end
15
+ end
16
+ end
17
+
18
+ def self.included(base)
19
+ base.send(:include, Supernova::AttrInitializer::InstanceMethods)
20
+ base.extend(Supernova::AttrInitializer::ClassMethods)
21
+ end
22
+ end
@@ -0,0 +1,6 @@
1
+ require "supernova/coordinate"
2
+
3
+ class Supernova::Circle
4
+ include Supernova::AttrInitializer
5
+ attr_initializer :center, :radius_in_meters
6
+ end
@@ -50,6 +50,8 @@ class Supernova::Condition
50
50
  "#{key}:[#{values.first} TO #{values.last}]"
51
51
  elsif values.respond_to?(:ne) && values.respond_to?(:sw)
52
52
  "#{key}:#{type == :inside ? "{" : "["}#{values.sw.lat},#{values.sw.lng} TO #{values.ne.lat},#{values.ne.lng}#{type == :inside ? "}" : "]"}"
53
+ elsif values.is_a?(Supernova::Circle)
54
+ "{!geofilt}"
53
55
  else
54
56
  values.map { |v| v.nil? ? "!#{nil_filter}" : "#{key}:#{v}"}.join(" OR ")
55
57
  end
@@ -0,0 +1,4 @@
1
+ class Supernova::Coordinate
2
+ include Supernova::AttrInitializer
3
+ attr_initializer :lat, :lng
4
+ end
@@ -1,6 +1,44 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  class Supernova::SolrCriteria < Supernova::Criteria
4
+ def geo_circle_from_with
5
+ geo_filter_in_with.at(1) if geo_filter_in_with
6
+ end
7
+
8
+ def geo_center_from_with
9
+ geo_circle_from_with.center if geo_circle_from_with
10
+ end
11
+
12
+ def geo_distance_in_meters_from_with
13
+ geo_circle_from_with.radius_in_meters if geo_circle_from_with
14
+ end
15
+
16
+ def geo_distance_in_meters
17
+ self.search_options[:geo_distance] || geo_distance_in_meters_from_with
18
+ end
19
+
20
+ def geo_center
21
+ if hash = self.search_options[:geo_center]
22
+ Supernova::Coordinate.new(hash)
23
+ else
24
+ geo_center_from_with
25
+ end
26
+ end
27
+
28
+ def geo_filed_key
29
+ geo_filter_in_with ? geo_filter_in_with.first : :location
30
+ end
31
+
32
+ def geo_attributes_from_center_distance_in_meters_and_key(center, distance_in_meters, key)
33
+ if center && distance_in_meters
34
+ {
35
+ :pt => "#{center.lat},#{center.lng}",
36
+ :d => (distance_in_meters.to_f / Supernova::KM_TO_METER),
37
+ :sfield => solr_field_from_field(key)
38
+ }
39
+ end
40
+ end
41
+
4
42
  # move this into separate methods (test each separatly)
5
43
  def to_params
6
44
  solr_options = { :fq => [], :q => "*:*" }
@@ -16,12 +54,11 @@ class Supernova::SolrCriteria < Supernova::Criteria
16
54
  solr_options[:q] = self.search_options[:search].map { |query| "(#{query})" }.join(" AND ")
17
55
  end
18
56
 
19
- if self.search_options[:geo_center] && self.search_options[:geo_distance]
20
- solr_options[:pt] = "#{self.search_options[:geo_center][:lat]},#{self.search_options[:geo_center][:lng]}"
21
- solr_options[:d] = self.search_options[:geo_distance].to_f / Supernova::KM_TO_METER
22
- solr_options[:sfield] = solr_field_from_field(:location)
57
+ if geo_options = geo_attributes_from_center_distance_in_meters_and_key(geo_center, geo_distance_in_meters, geo_filed_key)
58
+ solr_options.merge!(geo_options)
23
59
  solr_options[:fq] << "{!geofilt}"
24
60
  end
61
+
25
62
  if self.search_options[:select]
26
63
  self.search_options[:select] << "id" if !self.search_options[:select].map(&:to_s).include?("id")
27
64
  solr_options[:fl] = self.search_options[:select].compact.map { |field| solr_field_from_field(field) }.join(",")
@@ -44,6 +81,17 @@ class Supernova::SolrCriteria < Supernova::Criteria
44
81
  solr_options
45
82
  end
46
83
 
84
+ def geo_filter_in_with
85
+ (search_options[:with] || []).each do |option|
86
+ if option.is_a?(Hash)
87
+ option.each do |condition, value|
88
+ return [condition.key, value] if value.is_a?(Supernova::Circle)
89
+ end
90
+ end
91
+ end
92
+ nil
93
+ end
94
+
47
95
  def include_facets?
48
96
  self.search_options[:facets] || self.search_options[:facet_queries]
49
97
  end
@@ -1,5 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+ require "spec_helper_ar"
3
3
 
4
4
  describe "Solr" do
5
5
  before(:each) do
@@ -1,13 +1,11 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require 'rspec'
4
- require 'supernova'
5
- require "mysql2"
4
+ require File.expand_path("../../lib/supernova.rb", __FILE__)
6
5
  require "logger"
7
6
  require "fileutils"
8
7
  require "ruby-debug"
9
8
  require "geokit"
10
- require "active_record"
11
9
 
12
10
  def project_root
13
11
  Pathname.new(File.expand_path("..", File.dirname(__FILE__)))
@@ -25,33 +23,12 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
25
23
  RSpec.configure do |config|
26
24
  config.run_all_when_everything_filtered = true
27
25
  config.before(:each) do
28
- ActiveRecord::Base.connection.execute("TRUNCATE offers")
29
26
  Supernova::Criteria.mutable_by_default!
30
27
  end
31
28
  end
32
29
 
33
-
34
- ActiveRecord::Base.establish_connection(
35
- :adapter => "mysql2",
36
- :host => "localhost",
37
- :database => "supernova_test",
38
- :username => "root",
39
- :encoding => "utf8"
40
- )
41
-
42
-
43
30
  FileUtils.mkdir_p(project_root.join("log"))
44
31
 
45
- ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS offers")
46
- ActiveRecord::Base.connection.execute("CREATE TABLE offers (id SERIAL, text TEXT, user_id INTEGER, enabled BOOLEAN, popularity INTEGER, lat FLOAT, lng FLOAT)")
47
-
48
- class Offer < ActiveRecord::Base
49
- include Supernova::Solr
50
- named_search_scope :for_user_ids do |*ids|
51
- with(:user_id => ids.flatten)
52
- end
53
- end
54
-
55
32
  class Host
56
33
  attr_accessor :id
57
34
  end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+ require "active_record"
3
+ require "mysql2"
4
+
5
+ ActiveRecord::Base.establish_connection(
6
+ :adapter => "mysql2",
7
+ :host => "localhost",
8
+ :database => "supernova_test",
9
+ :username => "root",
10
+ :encoding => "utf8"
11
+ )
12
+
13
+ ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS offers")
14
+ ActiveRecord::Base.connection.execute("CREATE TABLE offers (id SERIAL, text TEXT, user_id INTEGER, enabled BOOLEAN, popularity INTEGER, lat FLOAT, lng FLOAT)")
15
+
16
+ class Offer < ActiveRecord::Base
17
+ include Supernova::Solr
18
+ named_search_scope :for_user_ids do |*ids|
19
+ with(:user_id => ids.flatten)
20
+ end
21
+ end
22
+
23
+ RSpec.configure do |config|
24
+ config.before(:each) do
25
+ ActiveRecord::Base.connection.execute("TRUNCATE offers")
26
+ end
27
+ end
@@ -0,0 +1,14 @@
1
+ require "supernova/attr_initializer"
2
+
3
+ describe "Supernova::AttrInitializer" do
4
+ it "implements attr_initializer" do
5
+ class User
6
+ include Supernova::AttrInitializer
7
+ attr_initializer :name, :age
8
+ end
9
+
10
+ usr = User.new(:name => "Hans", :age => 10)
11
+ usr.name.should == "Hans"
12
+ usr.age.should == 10
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ require "supernova/circle"
2
+
3
+ describe "Supernova::Circle" do
4
+ let(:center) { Supernova::Coordinate.new(:lat => 47, :lng => 11) }
5
+
6
+ it "can be initialized" do
7
+ Supernova::Circle.new
8
+ end
9
+
10
+ it "can be initialized with center" do
11
+ Supernova::Circle.new(:center => center).center.should == center
12
+ end
13
+
14
+ it "allows setting of radius_in_meters" do
15
+ Supernova::Circle.new(:radius_in_meters => 101_00).radius_in_meters.should == 101_00
16
+ end
17
+ end
@@ -57,6 +57,12 @@ describe "Supernova::Condition" do
57
57
  :pt.inside.or_key_and_value(bounding_box).should == "pt:{47.0,11.0 TO 48.0,12.0}"
58
58
  end
59
59
 
60
+ it "returns {!geofilt} when center" do
61
+ center = Supernova::Coordinate.new(:lat => 47, :lng => 11)
62
+ circle = Supernova::Circle.new(:center => center, :radius_in_meters => 10)
63
+ :center.in.or_key_and_value(circle).should == "{!geofilt}"
64
+ end
65
+
60
66
  end
61
67
 
62
68
  describe "solr_filter_for", :wip => true do
@@ -0,0 +1,15 @@
1
+ require "supernova/coordinate"
2
+
3
+ describe "Supernova::Coordinate" do
4
+ it "can be initialized" do
5
+ Supernova::Coordinate.new
6
+ end
7
+
8
+ it "allows setting of lat" do
9
+ Supernova::Coordinate.new(:lat => 10).lat.should == 10
10
+ end
11
+
12
+ it "allows setting of lng" do
13
+ Supernova::Coordinate.new(:lng => 10).lng.should == 10
14
+ end
15
+ end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'spec_helper_ar'
2
2
  require "ostruct"
3
3
 
4
4
  describe "Supernova::SolrCriteria" do
@@ -203,6 +203,36 @@ describe "Supernova::SolrCriteria" do
203
203
  end
204
204
  end
205
205
 
206
+ let(:center) { Supernova::Coordinate.new(:lat => 10.1, :lng => 11.2) }
207
+ let(:circle) { Supernova::Circle.new(:center => center, :radius_in_meters => 100) }
208
+ let(:circle_criteria) { criteria.where(:center.in => circle) }
209
+
210
+ describe "geo_filter_in_with" do
211
+ it "finds the correct geo search filter" do
212
+ circle_criteria.geo_filter_in_with.should be_kind_of(Array)
213
+ circle_criteria.geo_filter_in_with.first.should == :center
214
+ circle_criteria.geo_filter_in_with.at(1).should == circle
215
+ end
216
+
217
+ it "returns nil by default" do
218
+ criteria.geo_filter_in_with.should be_nil
219
+ end
220
+ end
221
+
222
+ describe "searching with circle" do
223
+ it "sets the correct center" do
224
+ circle_criteria.to_params[:pt].should == "10.1,11.2"
225
+ end
226
+
227
+ it "sets the correct distance" do
228
+ circle_criteria.to_params[:d].should == 0.1
229
+ end
230
+
231
+ it "sets the sfield to location" do
232
+ circle_criteria.to_params[:sfield].should == "center"
233
+ end
234
+ end
235
+
206
236
  describe "with a nearby search" do
207
237
  let(:nearby_criteria) { Supernova::SolrCriteria.new.near(47, 11).within(10.kms) }
208
238
 
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'spec_helper_ar'
2
2
 
3
3
  describe Supernova do
4
4
  let(:clazz) do
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "supernova"
8
- s.version = "0.7.5"
8
+ s.version = "0.7.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tobias Schwab"]
12
- s.date = "2012-02-21"
12
+ s.date = "2012-03-12"
13
13
  s.description = "Unified search scopes"
14
14
  s.email = "tobias.schwab@dynport.de"
15
15
  s.executables = ["start_solr"]
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  ".rspec",
25
25
  "Gemfile",
26
26
  "Gemfile.lock",
27
+ "Guardfile",
27
28
  "LICENSE.txt",
28
29
  "README.rdoc",
29
30
  "Rakefile",
@@ -32,8 +33,11 @@ Gem::Specification.new do |s|
32
33
  "autotest/discover.rb",
33
34
  "bin/start_solr",
34
35
  "lib/supernova.rb",
36
+ "lib/supernova/attr_initializer.rb",
37
+ "lib/supernova/circle.rb",
35
38
  "lib/supernova/collection.rb",
36
39
  "lib/supernova/condition.rb",
40
+ "lib/supernova/coordinate.rb",
37
41
  "lib/supernova/criteria.rb",
38
42
  "lib/supernova/numeric_extensions.rb",
39
43
  "lib/supernova/solr.rb",
@@ -81,8 +85,12 @@ Gem::Specification.new do |s|
81
85
  "spec/database.sql",
82
86
  "spec/integration/solr_spec.rb",
83
87
  "spec/spec_helper.rb",
88
+ "spec/spec_helper_ar.rb",
89
+ "spec/supernova/attr_initializer_spec.rb",
90
+ "spec/supernova/circle_spec.rb",
84
91
  "spec/supernova/collection_spec.rb",
85
92
  "spec/supernova/condition_spec.rb",
93
+ "spec/supernova/coordinate_spec.rb",
86
94
  "spec/supernova/criteria_spec.rb",
87
95
  "spec/supernova/numeric_extensions_spec.rb",
88
96
  "spec/supernova/solr_criteria_spec.rb",
@@ -95,7 +103,7 @@ Gem::Specification.new do |s|
95
103
  s.homepage = "http://github.com/dynport/supernova"
96
104
  s.licenses = ["MIT"]
97
105
  s.require_paths = ["lib"]
98
- s.rubygems_version = "1.8.10"
106
+ s.rubygems_version = "1.8.16"
99
107
  s.summary = "Unified search scopes"
100
108
 
101
109
  if s.respond_to? :specification_version then
@@ -113,6 +121,8 @@ Gem::Specification.new do |s|
113
121
  s.add_development_dependency(%q<ZenTest>, ["= 4.5.0"])
114
122
  s.add_development_dependency(%q<geokit>, [">= 0"])
115
123
  s.add_development_dependency(%q<guard>, [">= 0"])
124
+ s.add_development_dependency(%q<guard-bundler>, [">= 0"])
125
+ s.add_development_dependency(%q<guard-rspec>, [">= 0"])
116
126
  s.add_development_dependency(%q<rb-fsevent>, [">= 0"])
117
127
  s.add_development_dependency(%q<growl>, [">= 0"])
118
128
  s.add_development_dependency(%q<growl_notify>, [">= 0"])
@@ -134,6 +144,8 @@ Gem::Specification.new do |s|
134
144
  s.add_dependency(%q<ZenTest>, ["= 4.5.0"])
135
145
  s.add_dependency(%q<geokit>, [">= 0"])
136
146
  s.add_dependency(%q<guard>, [">= 0"])
147
+ s.add_dependency(%q<guard-bundler>, [">= 0"])
148
+ s.add_dependency(%q<guard-rspec>, [">= 0"])
137
149
  s.add_dependency(%q<rb-fsevent>, [">= 0"])
138
150
  s.add_dependency(%q<growl>, [">= 0"])
139
151
  s.add_dependency(%q<growl_notify>, [">= 0"])
@@ -156,6 +168,8 @@ Gem::Specification.new do |s|
156
168
  s.add_dependency(%q<ZenTest>, ["= 4.5.0"])
157
169
  s.add_dependency(%q<geokit>, [">= 0"])
158
170
  s.add_dependency(%q<guard>, [">= 0"])
171
+ s.add_dependency(%q<guard-bundler>, [">= 0"])
172
+ s.add_dependency(%q<guard-rspec>, [">= 0"])
159
173
  s.add_dependency(%q<rb-fsevent>, [">= 0"])
160
174
  s.add_dependency(%q<growl>, [">= 0"])
161
175
  s.add_dependency(%q<growl_notify>, [">= 0"])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: supernova
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.5
4
+ version: 0.7.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-21 00:00:00.000000000Z
12
+ date: 2012-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: will_paginate
16
- requirement: &70243495302500 !ruby/object:Gem::Requirement
16
+ requirement: &70106658325520 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70243495302500
24
+ version_requirements: *70106658325520
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &70243495302000 !ruby/object:Gem::Requirement
27
+ requirement: &70106658325040 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70243495302000
35
+ version_requirements: *70106658325040
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &70243495301420 !ruby/object:Gem::Requirement
38
+ requirement: &70106658324560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70243495301420
46
+ version_requirements: *70106658324560
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: typhoeus
49
- requirement: &70243495300860 !ruby/object:Gem::Requirement
49
+ requirement: &70106658340460 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - =
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.3.3
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70243495300860
57
+ version_requirements: *70106658340460
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: i18n
60
- requirement: &70243495300340 !ruby/object:Gem::Requirement
60
+ requirement: &70106658339980 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70243495300340
68
+ version_requirements: *70106658339980
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activerecord
71
- requirement: &70243495299820 !ruby/object:Gem::Requirement
71
+ requirement: &70106658339120 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 3.0.7
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70243495299820
79
+ version_requirements: *70106658339120
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: ruby-debug19
82
- requirement: &70243495299280 !ruby/object:Gem::Requirement
82
+ requirement: &70106658338120 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70243495299280
90
+ version_requirements: *70106658338120
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: mysql2
93
- requirement: &70243495298800 !ruby/object:Gem::Requirement
93
+ requirement: &70106658337240 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.2.18
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70243495298800
101
+ version_requirements: *70106658337240
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: ZenTest
104
- requirement: &70243495298300 !ruby/object:Gem::Requirement
104
+ requirement: &70106658336500 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - =
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 4.5.0
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70243495298300
112
+ version_requirements: *70106658336500
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: geokit
115
- requirement: &70243495297800 !ruby/object:Gem::Requirement
115
+ requirement: &70106658335440 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70243495297800
123
+ version_requirements: *70106658335440
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: guard
126
- requirement: &70243495297280 !ruby/object:Gem::Requirement
126
+ requirement: &70106658334340 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,10 +131,32 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70243495297280
134
+ version_requirements: *70106658334340
135
+ - !ruby/object:Gem::Dependency
136
+ name: guard-bundler
137
+ requirement: &70106658333460 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: *70106658333460
146
+ - !ruby/object:Gem::Dependency
147
+ name: guard-rspec
148
+ requirement: &70106658332780 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: *70106658332780
135
157
  - !ruby/object:Gem::Dependency
136
158
  name: rb-fsevent
137
- requirement: &70243495296760 !ruby/object:Gem::Requirement
159
+ requirement: &70106658348640 !ruby/object:Gem::Requirement
138
160
  none: false
139
161
  requirements:
140
162
  - - ! '>='
@@ -142,10 +164,10 @@ dependencies:
142
164
  version: '0'
143
165
  type: :development
144
166
  prerelease: false
145
- version_requirements: *70243495296760
167
+ version_requirements: *70106658348640
146
168
  - !ruby/object:Gem::Dependency
147
169
  name: growl
148
- requirement: &70243495296280 !ruby/object:Gem::Requirement
170
+ requirement: &70106658348160 !ruby/object:Gem::Requirement
149
171
  none: false
150
172
  requirements:
151
173
  - - ! '>='
@@ -153,10 +175,10 @@ dependencies:
153
175
  version: '0'
154
176
  type: :development
155
177
  prerelease: false
156
- version_requirements: *70243495296280
178
+ version_requirements: *70106658348160
157
179
  - !ruby/object:Gem::Dependency
158
180
  name: growl_notify
159
- requirement: &70243495295760 !ruby/object:Gem::Requirement
181
+ requirement: &70106658347680 !ruby/object:Gem::Requirement
160
182
  none: false
161
183
  requirements:
162
184
  - - ! '>='
@@ -164,10 +186,10 @@ dependencies:
164
186
  version: '0'
165
187
  type: :development
166
188
  prerelease: false
167
- version_requirements: *70243495295760
189
+ version_requirements: *70106658347680
168
190
  - !ruby/object:Gem::Dependency
169
191
  name: autotest
170
- requirement: &70243495295240 !ruby/object:Gem::Requirement
192
+ requirement: &70106658345480 !ruby/object:Gem::Requirement
171
193
  none: false
172
194
  requirements:
173
195
  - - ! '>='
@@ -175,10 +197,10 @@ dependencies:
175
197
  version: '0'
176
198
  type: :development
177
199
  prerelease: false
178
- version_requirements: *70243495295240
200
+ version_requirements: *70106658345480
179
201
  - !ruby/object:Gem::Dependency
180
202
  name: autotest-growl
181
- requirement: &70243495294680 !ruby/object:Gem::Requirement
203
+ requirement: &70106658341980 !ruby/object:Gem::Requirement
182
204
  none: false
183
205
  requirements:
184
206
  - - ! '>='
@@ -186,10 +208,10 @@ dependencies:
186
208
  version: '0'
187
209
  type: :development
188
210
  prerelease: false
189
- version_requirements: *70243495294680
211
+ version_requirements: *70106658341980
190
212
  - !ruby/object:Gem::Dependency
191
213
  name: rspec
192
- requirement: &70243495294200 !ruby/object:Gem::Requirement
214
+ requirement: &70106658341500 !ruby/object:Gem::Requirement
193
215
  none: false
194
216
  requirements:
195
217
  - - ~>
@@ -197,10 +219,10 @@ dependencies:
197
219
  version: 2.8.0
198
220
  type: :development
199
221
  prerelease: false
200
- version_requirements: *70243495294200
222
+ version_requirements: *70106658341500
201
223
  - !ruby/object:Gem::Dependency
202
224
  name: bundler
203
- requirement: &70243495293720 !ruby/object:Gem::Requirement
225
+ requirement: &70106658340880 !ruby/object:Gem::Requirement
204
226
  none: false
205
227
  requirements:
206
228
  - - ~>
@@ -208,10 +230,10 @@ dependencies:
208
230
  version: 1.0.0
209
231
  type: :development
210
232
  prerelease: false
211
- version_requirements: *70243495293720
233
+ version_requirements: *70106658340880
212
234
  - !ruby/object:Gem::Dependency
213
235
  name: jeweler
214
- requirement: &70243495293160 !ruby/object:Gem::Requirement
236
+ requirement: &70106658356540 !ruby/object:Gem::Requirement
215
237
  none: false
216
238
  requirements:
217
239
  - - ~>
@@ -219,10 +241,10 @@ dependencies:
219
241
  version: 1.6.0
220
242
  type: :development
221
243
  prerelease: false
222
- version_requirements: *70243495293160
244
+ version_requirements: *70106658356540
223
245
  - !ruby/object:Gem::Dependency
224
246
  name: rcov
225
- requirement: &70243495292600 !ruby/object:Gem::Requirement
247
+ requirement: &70106658355840 !ruby/object:Gem::Requirement
226
248
  none: false
227
249
  requirements:
228
250
  - - ! '>='
@@ -230,7 +252,7 @@ dependencies:
230
252
  version: '0'
231
253
  type: :development
232
254
  prerelease: false
233
- version_requirements: *70243495292600
255
+ version_requirements: *70106658355840
234
256
  description: Unified search scopes
235
257
  email: tobias.schwab@dynport.de
236
258
  executables:
@@ -246,6 +268,7 @@ files:
246
268
  - .rspec
247
269
  - Gemfile
248
270
  - Gemfile.lock
271
+ - Guardfile
249
272
  - LICENSE.txt
250
273
  - README.rdoc
251
274
  - Rakefile
@@ -254,8 +277,11 @@ files:
254
277
  - autotest/discover.rb
255
278
  - bin/start_solr
256
279
  - lib/supernova.rb
280
+ - lib/supernova/attr_initializer.rb
281
+ - lib/supernova/circle.rb
257
282
  - lib/supernova/collection.rb
258
283
  - lib/supernova/condition.rb
284
+ - lib/supernova/coordinate.rb
259
285
  - lib/supernova/criteria.rb
260
286
  - lib/supernova/numeric_extensions.rb
261
287
  - lib/supernova/solr.rb
@@ -303,8 +329,12 @@ files:
303
329
  - spec/database.sql
304
330
  - spec/integration/solr_spec.rb
305
331
  - spec/spec_helper.rb
332
+ - spec/spec_helper_ar.rb
333
+ - spec/supernova/attr_initializer_spec.rb
334
+ - spec/supernova/circle_spec.rb
306
335
  - spec/supernova/collection_spec.rb
307
336
  - spec/supernova/condition_spec.rb
337
+ - spec/supernova/coordinate_spec.rb
308
338
  - spec/supernova/criteria_spec.rb
309
339
  - spec/supernova/numeric_extensions_spec.rb
310
340
  - spec/supernova/solr_criteria_spec.rb
@@ -328,7 +358,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
328
358
  version: '0'
329
359
  segments:
330
360
  - 0
331
- hash: 2377453050298449102
361
+ hash: 1564723688025824690
332
362
  required_rubygems_version: !ruby/object:Gem::Requirement
333
363
  none: false
334
364
  requirements:
@@ -337,7 +367,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
337
367
  version: '0'
338
368
  requirements: []
339
369
  rubyforge_project:
340
- rubygems_version: 1.8.10
370
+ rubygems_version: 1.8.16
341
371
  signing_key:
342
372
  specification_version: 3
343
373
  summary: Unified search scopes