elastic_searchable 1.1.4 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc CHANGED
@@ -1,4 +1 @@
1
- rvm use ree-1.8.7-2011.03@rails3
2
-
3
- # use rails2 gemset for testing as well
4
- #ree-1.8.7-2011.03@rails2
1
+ rvm use ree-1.8.7-2011.03@elastic_searchable --create
data/README.md CHANGED
@@ -33,6 +33,10 @@ gem 'elastic_searchable'
33
33
  # (optional) customize elasticsearch host
34
34
  # default is localhost:9200
35
35
  ElasticSearchable.base_uri = 'server:9200'
36
+
37
+ # (optional) customize elasticsearch paginator
38
+ # default is ElasticSearchable::Pagination::WillPaginate
39
+ ElasticSearchable::Paginator.handler = ElasticSearchable::Pagination::Kaminari
36
40
  ```
37
41
 
38
42
  ## Contributing
@@ -8,22 +8,21 @@ Gem::Specification.new do |s|
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Ryan Sonnek"]
10
10
  s.email = ["ryan@codecrate.com"]
11
- s.homepage = %q{http://github.com/wireframe/elastic_searchable}
11
+ s.homepage = %q{http://github.com/socialcast/elastic_searchable}
12
12
  s.summary = %q{elastic search for activerecord}
13
13
  s.description = %q{integrate the elastic search engine with rails}
14
14
 
15
15
  s.rubyforge_project = "elastic_searchable"
16
-
16
+
17
17
  s.add_runtime_dependency(%q<activerecord>, [">= 3.0.5"])
18
- s.add_runtime_dependency(%q<will_paginate>, [">= 3.0.pre2"])
19
18
  s.add_runtime_dependency(%q<httparty>, ["~> 0.6.0"])
20
19
  s.add_runtime_dependency(%q<backgrounded>, ["~> 0.7.0"])
20
+ s.add_runtime_dependency(%q<multi_json>, ["~> 1.0.0"])
21
+ s.add_development_dependency(%q<rake>, ["0.9.2"])
22
+ s.add_development_dependency(%q<sqlite3-ruby>, ["~> 1.3.2"])
23
+ s.add_development_dependency(%q<pry>, ["0.9.6.2"])
21
24
  s.add_development_dependency(%q<shoulda>, [">= 0"])
22
25
  s.add_development_dependency(%q<mocha>, [">= 0"])
23
- s.add_development_dependency(%q<bundler>, [">= 0"])
24
- s.add_development_dependency(%q<rcov>, [">= 0"])
25
- s.add_development_dependency(%q<sqlite3-ruby>, ["~> 1.3.2"])
26
- s.add_development_dependency(%q<ruby-debug>, [">= 0"])
27
26
 
28
27
  s.files = `git ls-files`.split("\n")
29
28
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -1,4 +1,5 @@
1
1
  require 'httparty'
2
+ require 'multi_json'
2
3
  require 'logger'
3
4
  require 'elastic_searchable/active_record_extensions'
4
5
 
@@ -25,7 +26,7 @@ module ElasticSearchable
25
26
  # encapsulate encoding hash into json string
26
27
  # support Yajl encoder if installed
27
28
  def encode_json(options = {})
28
- defined?(Yajl) ? Yajl::Encoder.encode(options) : ActiveSupport::JSON.encode(options)
29
+ MultiJson.encode options
29
30
  end
30
31
  # perform a request to the elasticsearch server
31
32
  # configuration:
@@ -33,7 +34,7 @@ module ElasticSearchable
33
34
  # ElasticSearchable.debug_output outputs all http traffic to console
34
35
  def request(method, url, options = {})
35
36
  options.merge! :headers => {'Content-Type' => 'application/json'}
36
- options.merge! :body => ElasticSearchable.encode_json(options[:json_body]) if options[:json_body]
37
+ options.merge! :body => ElasticSearchable.encode_json(options.delete(:json_body)) if options[:json_body]
37
38
 
38
39
  response = self.send(method, url, options)
39
40
  logger.debug "elasticsearch request: #{method} #{url} #{"took #{response['took']}ms" if response['took']}"
@@ -3,6 +3,7 @@ require 'backgrounded'
3
3
  require 'elastic_searchable/queries'
4
4
  require 'elastic_searchable/callbacks'
5
5
  require 'elastic_searchable/index'
6
+ require 'elastic_searchable/paginator'
6
7
 
7
8
  module ElasticSearchable
8
9
  module ActiveRecordExtensions
@@ -11,7 +12,7 @@ module ElasticSearchable
11
12
  # :type (optional) configue type to store data in. default to model table name
12
13
  # :index_options (optional) configure index properties (ex: tokenizer)
13
14
  # :mapping (optional) configure field properties for this model (ex: skip analyzer for field)
14
- # :if (optional) reference symbol/proc condition to only index when condition is true
15
+ # :if (optional) reference symbol/proc condition to only index when condition is true
15
16
  # :unless (optional) reference symbol/proc condition to skip indexing when condition is true
16
17
  # :json (optional) configure the json document to be indexed (see http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html#method-i-as_json for available options)
17
18
  #
@@ -1,5 +1,3 @@
1
- require 'will_paginate'
2
-
3
1
  module ElasticSearchable
4
2
  module Indexing
5
3
  module ClassMethods
@@ -68,13 +66,13 @@ module ElasticSearchable
68
66
  # TODO: move this to AREL relation to remove the options scope param
69
67
  def reindex(options = {})
70
68
  self.update_index_mapping
71
- options.reverse_merge! :page => 1, :per_page => 1000, :total_entries => 1
69
+ options.reverse_merge! :page => 1, :per_page => 1000
72
70
  scope = options.delete(:scope) || self
73
-
74
- records = scope.paginate(options)
71
+ page = options[:page]
72
+ per_page = options[:per_page]
73
+ records = scope.limit(per_page).offset(per_page * (page -1)).all
75
74
  while records.any? do
76
- ElasticSearchable.logger.debug "reindexing batch ##{records.current_page}..."
77
-
75
+ ElasticSearchable.logger.debug "reindexing batch ##{page}..."
78
76
  actions = []
79
77
  records.each do |record|
80
78
  next unless record.should_index?
@@ -89,12 +87,12 @@ module ElasticSearchable
89
87
  begin
90
88
  ElasticSearchable.request(:put, '/_bulk', :body => "\n#{actions.join("\n")}\n") if actions.any?
91
89
  rescue ElasticError => e
92
- ElasticSearchable.logger.warn "Error indexing batch ##{options[:page]}: #{e.message}"
90
+ ElasticSearchable.logger.warn "Error indexing batch ##{page}: #{e.message}"
93
91
  ElasticSearchable.logger.warn e
94
92
  end
95
93
 
96
- options.merge! :page => (records.current_page + 1)
97
- records = scope.paginate(options)
94
+ page += 1
95
+ records = scope.limit(per_page).offset(per_page* (page-1)).all
98
96
  end
99
97
  end
100
98
 
@@ -109,7 +107,7 @@ module ElasticSearchable
109
107
 
110
108
  module InstanceMethods
111
109
  # reindex the object in elasticsearch
112
- # fires after_index callbacks after operation is complete
110
+ # fires after_index callbacks after operation is complete
113
111
  # see http://www.elasticsearch.org/guide/reference/api/index_.html
114
112
  def reindex(lifecycle = nil)
115
113
  query = {}
@@ -0,0 +1,37 @@
1
+ module ElasticSearchable
2
+ module Pagination
3
+ class Kaminari < ::ElasticSearchable::Paginator
4
+ attr_accessor :page, :limit_value, :total_entries, :total_pages
5
+
6
+ def initialize(results, page, per_page, total = nil)
7
+ self.page = page
8
+ self.limit_value = per_page
9
+ self.total_entries = total if total
10
+ self.replace results
11
+ end
12
+
13
+ alias :current_page :page
14
+ alias :per_page :limit_value
15
+
16
+ # total item numbers of the original array
17
+ def total_count
18
+ total_entries
19
+ end
20
+
21
+ # Total number of pages
22
+ def num_pages
23
+ (total_count.to_f / per_page).ceil
24
+ end
25
+
26
+ # First page of the collection ?
27
+ def first_page?
28
+ current_page == 1
29
+ end
30
+
31
+ # Last page of the collection?
32
+ def last_page?
33
+ current_page >= num_pages
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,44 @@
1
+ module ElasticSearchable
2
+ module Pagination
3
+ class WillPaginate < ::ElasticSearchable::Paginator
4
+ attr_reader :current_page, :per_page, :total_entries, :total_pages
5
+
6
+ def initialize(results, page, per_page, total = nil)
7
+ @current_page = page.to_i
8
+ raise InvalidPage.new(page, @current_page) if @current_page < 1
9
+ @per_page = per_page.to_i
10
+ raise ArgumentError, "`per_page` setting cannot be less than 1 (#{@per_page} given)" if @per_page < 1
11
+
12
+ self.total_entries = total if total
13
+ self.replace results
14
+ end
15
+
16
+ def self.create(page, per_page, total = nil)
17
+ pager = new(page, per_page, total)
18
+ yield pager
19
+ pager
20
+ end
21
+
22
+ def out_of_bounds?
23
+ current_page > total_pages
24
+ end
25
+
26
+ def offset
27
+ (current_page - 1) * per_page
28
+ end
29
+
30
+ def previous_page
31
+ current_page > 1 ? (current_page - 1) : nil
32
+ end
33
+
34
+ def next_page
35
+ current_page < total_pages ? (current_page + 1) : nil
36
+ end
37
+
38
+ def total_entries=(number)
39
+ @total_entries = number.to_i
40
+ @total_pages = (@total_entries / per_page.to_f).ceil
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,41 @@
1
+
2
+ module ElasticSearchable
3
+ class Paginator < Array
4
+ class << self
5
+ def handler
6
+ @handler ||= ElasticSearchable::Pagination::WillPaginate
7
+ end
8
+
9
+ def handler=(handler)
10
+ @handler = handler
11
+ end
12
+ end
13
+
14
+ # This is a magic wrapper for the original Array#replace method. It serves
15
+ # for populating the paginated collection after initialization.
16
+ #
17
+ # Why magic? Because it tries to guess the total number of entries judging
18
+ # by the size of given array. If it is shorter than +per_page+ limit, then we
19
+ # know we're on the last page. This trick is very useful for avoiding
20
+ # unnecessary hits to the database to do the counting after we fetched the
21
+ # data for the current page.
22
+ #
23
+ # However, after using +replace+ you should always test the value of
24
+ # +total_entries+ and set it to a proper value if it's +nil+. See the example
25
+ # in +create+.
26
+ def replace(array)
27
+ result = super
28
+
29
+ # The collection is shorter then page limit? Rejoice, because
30
+ # then we know that we are on the last page!
31
+ if total_entries.nil? and length < per_page and (current_page == 1 or length > 0)
32
+ self.total_entries = offset + length
33
+ end
34
+
35
+ result
36
+ end
37
+ end
38
+ end
39
+
40
+ require 'elastic_searchable/pagination/kaminari'
41
+ require 'elastic_searchable/pagination/will_paginate'
@@ -1,9 +1,11 @@
1
- require 'will_paginate/collection'
2
-
3
1
  module ElasticSearchable
4
2
  module Queries
5
3
  PER_PAGE_DEFAULT = 20
6
4
 
5
+ def per_page
6
+ PER_PAGE_DEFAULT
7
+ end
8
+
7
9
  # search returns a will_paginate collection of ActiveRecord objects for the search results
8
10
  # supported options:
9
11
  # :page - page of results to search for
@@ -38,9 +40,7 @@ module ElasticSearchable
38
40
  ids = hits['hits'].collect {|h| h['_id'].to_i }
39
41
  results = self.find(ids).sort_by {|result| ids.index(result.id) }
40
42
 
41
- page = WillPaginate::Collection.new(page, options[:size], hits['total'])
42
- page.replace results
43
- page
43
+ ElasticSearchable::Paginator.handler.new(results, page, options[:size], hits['total'])
44
44
  end
45
45
 
46
46
  private
@@ -1,4 +1,4 @@
1
1
  module ElasticSearchable
2
- VERSION = '1.1.4'
2
+ VERSION = '1.2.0'
3
3
  end
4
4
 
data/test/helper.rb CHANGED
@@ -10,7 +10,7 @@ end
10
10
  require 'test/unit'
11
11
  require 'shoulda'
12
12
  require 'mocha'
13
- require 'ruby-debug'
13
+ require 'pry'
14
14
 
15
15
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
16
16
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -37,12 +37,3 @@ ActiveRecord::Schema.define(:version => 1) do
37
37
  t.belongs_to :parent
38
38
  end
39
39
  end
40
-
41
- if WillPaginate.respond_to?(:enable_activerecord)
42
- puts 'configuring will_paginate v2.x'
43
- WillPaginate.enable_activerecord
44
- else
45
- puts 'configuring will_paginate v3.x'
46
- require 'will_paginate/finders/active_record'
47
- WillPaginate::Finders::ActiveRecord.enable!
48
- end
@@ -4,7 +4,7 @@ class TestElasticSearchable < Test::Unit::TestCase
4
4
  def setup
5
5
  delete_index
6
6
  end
7
- ElasticSearchable.debug_output
7
+ # ElasticSearchable.debug_output
8
8
  SINGLE_NODE_CLUSTER_CONFIG = {'number_of_replicas' => 0, 'number_of_shards' => 1}
9
9
 
10
10
  context 'non elastic activerecord class' do
@@ -194,7 +194,7 @@ class TestElasticSearchable < Test::Unit::TestCase
194
194
  assert_nil @results.next_page
195
195
  end
196
196
  end
197
-
197
+
198
198
  context 'searching for results using a query Hash' do
199
199
  setup do
200
200
  @results = Post.search({
@@ -244,7 +244,7 @@ class TestElasticSearchable < Test::Unit::TestCase
244
244
  assert_equal @first_post, @results.last
245
245
  end
246
246
  end
247
-
247
+
248
248
  context 'advanced sort options' do
249
249
  setup do
250
250
  @results = Post.search 'foo', :sort => [{:id => 'desc'}]
@@ -294,7 +294,7 @@ class TestElasticSearchable < Test::Unit::TestCase
294
294
  'number_of_shards' => 1,
295
295
  "analysis.analyzer.default.tokenizer" => 'standard',
296
296
  "analysis.analyzer.default.filter" => ["standard", "lowercase", 'porterStem']},
297
- :mapping => {:properties => {:name => {:type => :string, :index => :not_analyzed}}}
297
+ :mapping => {:properties => {:name => {:type => 'string', :index => 'not_analyzed'}}}
298
298
  end
299
299
  context 'activerecord class with :index_options and :mapping' do
300
300
  context 'creating index' do
@@ -302,7 +302,7 @@ class TestElasticSearchable < Test::Unit::TestCase
302
302
  User.create_index
303
303
  end
304
304
  should 'have used custom index_options' do
305
- @status = ElasticSearchable.request :get, '/elastic_searchable/_status'
305
+ @status = ElasticSearchable.request :get, '/elastic_searchable/_settings'
306
306
  expected = {
307
307
  "index.number_of_replicas" => "0",
308
308
  "index.number_of_shards" => "1",
@@ -311,18 +311,16 @@ class TestElasticSearchable < Test::Unit::TestCase
311
311
  "index.analysis.analyzer.default.filter.1" => "lowercase",
312
312
  "index.analysis.analyzer.default.filter.2" => "porterStem"
313
313
  }
314
- assert_equal expected, @status['indices']['elastic_searchable']['settings'], @status.inspect
314
+ assert_equal expected, @status['elastic_searchable']['settings'], @status.inspect
315
315
  end
316
316
  should 'have set mapping' do
317
317
  @status = ElasticSearchable.request :get, '/elastic_searchable/users/_mapping'
318
318
  expected = {
319
- "users"=> {
320
- "properties"=> {
321
- "name"=> {"type"=>"string", "index"=>"not_analyzed"}
322
- }
319
+ "properties"=> {
320
+ "name"=> {"type"=>"string", "index"=>"not_analyzed"}
323
321
  }
324
322
  }
325
- assert_equal expected, @status['elastic_searchable'], @status.inspect
323
+ assert_equal expected, @status['users'], @status.inspect
326
324
  end
327
325
  end
328
326
  end
@@ -427,8 +425,25 @@ class TestElasticSearchable < Test::Unit::TestCase
427
425
  @second = MaxPageSizeClass.create! :name => 'foo two'
428
426
  MaxPageSizeClass.refresh_index
429
427
  end
430
- context 'MaxPageSizeClass.search with default options' do
428
+ context 'MaxPageSizeClass.search with default options and WillPaginate' do
429
+ setup do
430
+ ElasticSearchable::Paginator.handler = ElasticSearchable::Pagination::WillPaginate
431
+ @results = MaxPageSizeClass.search 'foo'
432
+ end
433
+ should 'have one per page' do
434
+ assert_equal 1, @results.per_page
435
+ end
436
+ should 'return one instance' do
437
+ assert_equal 1, @results.length
438
+ end
439
+ should 'have second page' do
440
+ assert_equal 2, @results.total_entries
441
+ end
442
+ end
443
+
444
+ context 'MaxPageSizeClass.search with default options and Kaminari' do
431
445
  setup do
446
+ ElasticSearchable::Paginator.handler = ElasticSearchable::Pagination::Kaminari
432
447
  @results = MaxPageSizeClass.search 'foo'
433
448
  end
434
449
  should 'have one per page' do
@@ -440,6 +455,9 @@ class TestElasticSearchable < Test::Unit::TestCase
440
455
  should 'have second page' do
441
456
  assert_equal 2, @results.total_entries
442
457
  end
458
+ should 'have a total of 2 pages' do
459
+ assert_equal 2, @results.num_pages
460
+ end
443
461
  end
444
462
  end
445
463
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elastic_searchable
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 1
9
- - 4
10
- version: 1.1.4
8
+ - 2
9
+ - 0
10
+ version: 1.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Sonnek
@@ -15,7 +15,8 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-04 00:00:00 Z
18
+ date: 2011-10-20 00:00:00 -07:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: activerecord
@@ -34,98 +35,104 @@ dependencies:
34
35
  type: :runtime
35
36
  version_requirements: *id001
36
37
  - !ruby/object:Gem::Dependency
37
- name: will_paginate
38
+ name: httparty
38
39
  prerelease: false
39
40
  requirement: &id002 !ruby/object:Gem::Requirement
40
41
  none: false
41
42
  requirements:
42
- - - ">="
43
+ - - ~>
43
44
  - !ruby/object:Gem::Version
44
- hash: 1923831917
45
+ hash: 7
45
46
  segments:
46
- - 3
47
47
  - 0
48
- - pre
49
- - 2
50
- version: 3.0.pre2
48
+ - 6
49
+ - 0
50
+ version: 0.6.0
51
51
  type: :runtime
52
52
  version_requirements: *id002
53
53
  - !ruby/object:Gem::Dependency
54
- name: httparty
54
+ name: backgrounded
55
55
  prerelease: false
56
56
  requirement: &id003 !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- hash: 7
61
+ hash: 3
62
62
  segments:
63
63
  - 0
64
- - 6
64
+ - 7
65
65
  - 0
66
- version: 0.6.0
66
+ version: 0.7.0
67
67
  type: :runtime
68
68
  version_requirements: *id003
69
69
  - !ruby/object:Gem::Dependency
70
- name: backgrounded
70
+ name: multi_json
71
71
  prerelease: false
72
72
  requirement: &id004 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- hash: 3
77
+ hash: 23
78
78
  segments:
79
+ - 1
79
80
  - 0
80
- - 7
81
81
  - 0
82
- version: 0.7.0
82
+ version: 1.0.0
83
83
  type: :runtime
84
84
  version_requirements: *id004
85
85
  - !ruby/object:Gem::Dependency
86
- name: shoulda
86
+ name: rake
87
87
  prerelease: false
88
88
  requirement: &id005 !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
- - - ">="
91
+ - - "="
92
92
  - !ruby/object:Gem::Version
93
- hash: 3
93
+ hash: 63
94
94
  segments:
95
95
  - 0
96
- version: "0"
96
+ - 9
97
+ - 2
98
+ version: 0.9.2
97
99
  type: :development
98
100
  version_requirements: *id005
99
101
  - !ruby/object:Gem::Dependency
100
- name: mocha
102
+ name: sqlite3-ruby
101
103
  prerelease: false
102
104
  requirement: &id006 !ruby/object:Gem::Requirement
103
105
  none: false
104
106
  requirements:
105
- - - ">="
107
+ - - ~>
106
108
  - !ruby/object:Gem::Version
107
- hash: 3
109
+ hash: 31
108
110
  segments:
109
- - 0
110
- version: "0"
111
+ - 1
112
+ - 3
113
+ - 2
114
+ version: 1.3.2
111
115
  type: :development
112
116
  version_requirements: *id006
113
117
  - !ruby/object:Gem::Dependency
114
- name: bundler
118
+ name: pry
115
119
  prerelease: false
116
120
  requirement: &id007 !ruby/object:Gem::Requirement
117
121
  none: false
118
122
  requirements:
119
- - - ">="
123
+ - - "="
120
124
  - !ruby/object:Gem::Version
121
- hash: 3
125
+ hash: 27
122
126
  segments:
123
127
  - 0
124
- version: "0"
128
+ - 9
129
+ - 6
130
+ - 2
131
+ version: 0.9.6.2
125
132
  type: :development
126
133
  version_requirements: *id007
127
134
  - !ruby/object:Gem::Dependency
128
- name: rcov
135
+ name: shoulda
129
136
  prerelease: false
130
137
  requirement: &id008 !ruby/object:Gem::Requirement
131
138
  none: false
@@ -139,25 +146,9 @@ dependencies:
139
146
  type: :development
140
147
  version_requirements: *id008
141
148
  - !ruby/object:Gem::Dependency
142
- name: sqlite3-ruby
149
+ name: mocha
143
150
  prerelease: false
144
151
  requirement: &id009 !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ~>
148
- - !ruby/object:Gem::Version
149
- hash: 31
150
- segments:
151
- - 1
152
- - 3
153
- - 2
154
- version: 1.3.2
155
- type: :development
156
- version_requirements: *id009
157
- - !ruby/object:Gem::Dependency
158
- name: ruby-debug
159
- prerelease: false
160
- requirement: &id010 !ruby/object:Gem::Requirement
161
152
  none: false
162
153
  requirements:
163
154
  - - ">="
@@ -167,7 +158,7 @@ dependencies:
167
158
  - 0
168
159
  version: "0"
169
160
  type: :development
170
- version_requirements: *id010
161
+ version_requirements: *id009
171
162
  description: integrate the elastic search engine with rails
172
163
  email:
173
164
  - ryan@codecrate.com
@@ -191,13 +182,17 @@ files:
191
182
  - lib/elastic_searchable/active_record_extensions.rb
192
183
  - lib/elastic_searchable/callbacks.rb
193
184
  - lib/elastic_searchable/index.rb
185
+ - lib/elastic_searchable/pagination/kaminari.rb
186
+ - lib/elastic_searchable/pagination/will_paginate.rb
187
+ - lib/elastic_searchable/paginator.rb
194
188
  - lib/elastic_searchable/queries.rb
195
189
  - lib/elastic_searchable/version.rb
196
190
  - test/database.yml
197
191
  - test/helper.rb
198
192
  - test/setup_database.rb
199
193
  - test/test_elastic_searchable.rb
200
- homepage: http://github.com/wireframe/elastic_searchable
194
+ has_rdoc: true
195
+ homepage: http://github.com/socialcast/elastic_searchable
201
196
  licenses: []
202
197
 
203
198
  post_install_message:
@@ -226,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
221
  requirements: []
227
222
 
228
223
  rubyforge_project: elastic_searchable
229
- rubygems_version: 1.7.2
224
+ rubygems_version: 1.5.3
230
225
  signing_key:
231
226
  specification_version: 3
232
227
  summary: elastic search for activerecord