model_set 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -57,9 +57,9 @@ module Sphinx
57
57
  # Current client-side command implementation versions
58
58
 
59
59
  # search command version
60
- VER_COMMAND_SEARCH = 0x116
60
+ VER_COMMAND_SEARCH = 0x119
61
61
  # excerpt command version
62
- VER_COMMAND_EXCERPT = 0x100
62
+ VER_COMMAND_EXCERPT = 0x102
63
63
  # update command version
64
64
  VER_COMMAND_UPDATE = 0x102
65
65
  # keywords command version
@@ -107,7 +107,12 @@ module Sphinx
107
107
  SPH_RANK_WORDCOUNT = 3
108
108
  # phrase proximity
109
109
  SPH_RANK_PROXIMITY = 4
110
-
110
+ SPH_RANK_MATCHANY = 5
111
+ SPH_RANK_FIELDMASK = 6
112
+ SPH_RANK_SPH04 = 7
113
+ SPH_RANK_EXPR = 8
114
+ SPH_RANK_TOTAL = 9
115
+
111
116
  # Known sort modes
112
117
 
113
118
  # sort by document relevance desc, then by date
@@ -147,8 +152,11 @@ module Sphinx
147
152
  SPH_ATTR_FLOAT = 5
148
153
  # signed 64-bit integer
149
154
  SPH_ATTR_BIGINT = 6
155
+ # string
156
+ SPH_ATTR_STRING = 7
150
157
  # this attr has multiple values (0 or more)
151
- SPH_ATTR_MULTI = 0x40000000
158
+ SPH_ATTR_MULTI = 0x40000001
159
+ SPH_ATTR_MULTI64 = 0x40000002
152
160
 
153
161
  # Known grouping functions
154
162
 
@@ -169,7 +177,7 @@ module Sphinx
169
177
  def initialize
170
178
  # per-client-object settings
171
179
  @host = 'localhost' # searchd host (default is "localhost")
172
- @port = 3312 # searchd port (default is 3312)
180
+ @port = 9312 # searchd port (default is 9312)
173
181
 
174
182
  # per-query settings
175
183
  @offset = 0 # how many records to seek from result-set start (default is 0)
@@ -192,6 +200,7 @@ module Sphinx
192
200
  @anchor = [] # geographical anchor point
193
201
  @indexweights = [] # per-index weights
194
202
  @ranker = SPH_RANK_PROXIMITY_BM25 # ranking mode (default is SPH_RANK_PROXIMITY_BM25)
203
+ @rankexpr = '' # ranker expression for SPH_RANK_EXPR
195
204
  @maxquerytime = 0 # max query time, milliseconds (default is 0, do not limit)
196
205
  @fieldweights = {} # per-field-name weights
197
206
  @overrides = [] # per-query attribute values overrides
@@ -262,14 +271,19 @@ module Sphinx
262
271
  end
263
272
 
264
273
  # Set ranking mode.
265
- def SetRankingMode(ranker)
274
+ def SetRankingMode(ranker, rankexpr = '')
266
275
  assert { ranker == SPH_RANK_PROXIMITY_BM25 \
267
276
  || ranker == SPH_RANK_BM25 \
268
277
  || ranker == SPH_RANK_NONE \
269
278
  || ranker == SPH_RANK_WORDCOUNT \
270
- || ranker == SPH_RANK_PROXIMITY }
279
+ || ranker == SPH_RANK_PROXIMITY \
280
+ || ranker == SPH_RANK_MATCHANY \
281
+ || ranker == SPH_RANK_FIELDMASK \
282
+ || ranker == SPH_RANK_SPH04 \
283
+ || ranker == SPH_RANK_EXPR }
271
284
 
272
285
  @ranker = ranker
286
+ @rankexpr = rankexpr
273
287
  end
274
288
 
275
289
  # Set matches sorting mode.
@@ -349,7 +363,7 @@ module Sphinx
349
363
 
350
364
  if values.instance_of?(Array) && values.size > 0
351
365
  values.each do |value|
352
- assert { value.instance_of? Fixnum or value.instance_of? Bignum }
366
+ assert { value.instance_of? Fixnum }
353
367
  end
354
368
 
355
369
  @filters << { 'type' => SPH_FILTER_VALUES, 'attr' => attribute, 'exclude' => exclude, 'values' => values }
@@ -564,7 +578,14 @@ module Sphinx
564
578
 
565
579
  # mode and limits
566
580
  request = Request.new
567
- request.put_int @offset, @limit, @mode, @ranker, @sort
581
+ request.put_int @offset, @limit, @mode, @ranker
582
+ # process the 'expr' ranker
583
+ if @ranker == SPH_RANK_EXPR
584
+ request.put_string @rankexpr
585
+ end
586
+
587
+ request.put_int @sort
588
+
568
589
  request.put_string @sortby
569
590
  # query itself
570
591
  request.put_string query
@@ -758,14 +779,23 @@ module Sphinx
758
779
  when SPH_ATTR_FLOAT
759
780
  # handle floats
760
781
  r['attrs'][a] = response.get_float
782
+ when SPH_ATTR_STRING
783
+ # handle string
784
+ r['attrs'][a] = response.get_string
761
785
  else
762
786
  # handle everything else as unsigned ints
763
787
  val = response.get_int
764
- if (attrs[a] & SPH_ATTR_MULTI) != 0
788
+ if attrs[a]==SPH_ATTR_MULTI
765
789
  r['attrs'][a] = []
766
790
  1.upto(val) do
767
791
  r['attrs'][a] << response.get_int
768
792
  end
793
+ elsif attrs[a]==SPH_ATTR_MULTI64
794
+ r['attrs'][a] = []
795
+ val = val/2
796
+ 1.upto(val) do
797
+ r['attrs'][a] << response.get_int64
798
+ end
769
799
  else
770
800
  r['attrs'][a] = val
771
801
  end
@@ -825,12 +855,18 @@ module Sphinx
825
855
  opts['before_match'] ||= '<b>';
826
856
  opts['after_match'] ||= '</b>';
827
857
  opts['chunk_separator'] ||= ' ... ';
858
+ opts['html_strip_mode'] ||= 'index';
828
859
  opts['limit'] ||= 256;
860
+ opts['limit_passages'] ||= 0;
861
+ opts['limit_words'] ||= 0;
829
862
  opts['around'] ||= 5;
863
+ opts['start_passage_id'] ||= 1;
830
864
  opts['exact_phrase'] ||= false
831
865
  opts['single_passage'] ||= false
832
866
  opts['use_boundaries'] ||= false
833
867
  opts['weight_order'] ||= false
868
+ opts['load_files'] ||= false
869
+ opts['allow_empty'] ||= false
834
870
 
835
871
  # build request
836
872
 
@@ -840,6 +876,10 @@ module Sphinx
840
876
  flags |= 4 if opts['single_passage']
841
877
  flags |= 8 if opts['use_boundaries']
842
878
  flags |= 16 if opts['weight_order']
879
+ flags |= 32 if opts['query_mode']
880
+ flags |= 64 if opts['force_all_words']
881
+ flags |= 128 if opts['load_files']
882
+ flags |= 256 if opts['allow_empty']
843
883
 
844
884
  request = Request.new
845
885
  request.put_int 0, flags # mode=0, flags=1 (remove spaces)
@@ -853,6 +893,12 @@ module Sphinx
853
893
  request.put_string opts['after_match']
854
894
  request.put_string opts['chunk_separator']
855
895
  request.put_int opts['limit'].to_i, opts['around'].to_i
896
+
897
+ # options v1.2
898
+ request.put_int opts['limit_passages'].to_i
899
+ request.put_int opts['limit_words'].to_i
900
+ request.put_int opts['start_passage_id'].to_i
901
+ request.put_string opts['html_strip_mode']
856
902
 
857
903
  # documents
858
904
  request.put_int docs.size
@@ -989,9 +1035,13 @@ module Sphinx
989
1035
  # Connect to searchd server.
990
1036
  def Connect
991
1037
  begin
992
- sock = TCPSocket.new(@host, @port)
993
- rescue
994
- @error = "connection to #{@host}:#{@port} failed"
1038
+ if @host[0,1]=='/'
1039
+ sock = UNIXSocket.new(@host)
1040
+ else
1041
+ sock = TCPSocket.new(@host, @port)
1042
+ end
1043
+ rescue => err
1044
+ @error = "connection to #{@host}:#{@port} failed (error=#{err})"
995
1045
  raise SphinxConnectError, @error
996
1046
  end
997
1047
 
@@ -1032,9 +1082,9 @@ module Sphinx
1032
1082
  # check response
1033
1083
  read = response.length
1034
1084
  if response.empty? or read != len.to_i
1035
- @error = len \
1036
- ? "failed to read searchd response (status=#{status}, ver=#{ver}, len=#{len}, read=#{read})" \
1037
- : 'received zero-sized searchd response'
1085
+ @error = response.empty? \
1086
+ ? 'received zero-sized searchd response' \
1087
+ : "failed to read searchd response (status=#{status}, ver=#{ver}, len=#{len}, read=#{read})"
1038
1088
  raise SphinxResponseError, @error
1039
1089
  end
1040
1090
 
@@ -1076,9 +1126,9 @@ module Sphinx
1076
1126
  command_ver = Sphinx::Client.const_get('VER_COMMAND_' + cmd)
1077
1127
 
1078
1128
  sock = self.Connect
1079
- len = request.to_s.length + (additional != nil ? 4 : 0)
1129
+ len = request.to_s.length + (additional != nil ? 8 : 0)
1080
1130
  header = [command_id, command_ver, len].pack('nnN')
1081
- header << [additional].pack('N') if additional != nil
1131
+ header << [0, additional].pack('NN') if additional != nil
1082
1132
  sock.send(header + request.to_s, 0)
1083
1133
  response = self.GetResponse(sock, command_ver)
1084
1134
  return Response.new(response)
@@ -1,69 +1,69 @@
1
- module Sphinx
2
- # Unpack internal Sphinx representation of ints, floats, strings, and arrays.
3
- # needed by Sphinx search engine.
4
- class Response
5
- # Initialize new request.
6
- def initialize(response)
7
- @response = response
8
- @position = 0
9
- @size = response.length
10
- end
11
-
12
- # Gets current stream position.
13
- def position
14
- @position
15
- end
16
-
17
- # Gets response size.
18
- def size
19
- @size
20
- end
21
-
22
- # Returns <tt>true</tt> when response stream is out.
23
- def eof?
24
- @position >= @size
25
- end
26
-
27
- # Get int from stream.
28
- def get_int
29
- raise EOFError if @position + 4 > @size
30
- value = @response[@position, 4].unpack('N*').first
31
- @position += 4
32
- return value
33
- end
34
-
35
- # Get 64-bit int from stream.
36
- def get_int64
37
- raise EOFError if @position + 8 > @size
38
- hi, lo = @response[@position, 8].unpack('N*N*')
39
- @position += 8
40
- return (hi << 32) + lo
41
- end
42
-
43
- # Get array of <tt>count</tt> ints from stream.
44
- def get_ints(count)
45
- length = 4 * count
46
- raise EOFError if @position + length > @size
47
- values = @response[@position, length].unpack('N*' * count)
48
- @position += length
49
- return values
50
- end
51
-
52
- # Get string from stream.
53
- def get_string
54
- length = get_int
55
- raise EOFError if @position + length > @size
56
- value = length > 0 ? @response[@position, length] : ''
57
- @position += length
58
- return value
59
- end
60
-
61
- # Get float from stream.
62
- def get_float
63
- raise EOFError if @position + 4 > @size
64
- uval = @response[@position, 4].unpack('N*').first;
65
- @position += 4
66
- return ([uval].pack('L')).unpack('f*').first
67
- end
68
- end
1
+ module Sphinx
2
+ # Unpack internal Sphinx representation of ints, floats, strings, and arrays.
3
+ # needed by Sphinx search engine.
4
+ class Response
5
+ # Initialize new request.
6
+ def initialize(response)
7
+ @response = response
8
+ @position = 0
9
+ @size = response.length
10
+ end
11
+
12
+ # Gets current stream position.
13
+ def position
14
+ @position
15
+ end
16
+
17
+ # Gets response size.
18
+ def size
19
+ @size
20
+ end
21
+
22
+ # Returns <tt>true</tt> when response stream is out.
23
+ def eof?
24
+ @position >= @size
25
+ end
26
+
27
+ # Get int from stream.
28
+ def get_int
29
+ raise EOFError if @position + 4 > @size
30
+ value = @response[@position, 4].unpack('N*').first
31
+ @position += 4
32
+ return value
33
+ end
34
+
35
+ # Get 64-bit int from stream.
36
+ def get_int64
37
+ raise EOFError if @position + 8 > @size
38
+ hi, lo = @response[@position, 8].unpack('N*N*')
39
+ @position += 8
40
+ return (hi << 32) + lo
41
+ end
42
+
43
+ # Get array of <tt>count</tt> ints from stream.
44
+ def get_ints(count)
45
+ length = 4 * count
46
+ raise EOFError if @position + length > @size
47
+ values = @response[@position, length].unpack('N*' * count)
48
+ @position += length
49
+ return values
50
+ end
51
+
52
+ # Get string from stream.
53
+ def get_string
54
+ length = get_int
55
+ raise EOFError if @position + length > @size
56
+ value = length > 0 ? @response[@position, length] : ''
57
+ @position += length
58
+ return value
59
+ end
60
+
61
+ # Get float from stream.
62
+ def get_float
63
+ raise EOFError if @position + 4 > @size
64
+ uval = @response[@position, 4].unpack('N*').first;
65
+ @position += 4
66
+ return ([uval].pack('L')).unpack('f*').first
67
+ end
68
+ end
69
69
  end
@@ -30,14 +30,14 @@ describe 'The Connect method of Sphinx::Client' do
30
30
  end
31
31
 
32
32
  it 'should establish TCP connection to the server and initialize session' do
33
- TCPSocket.should_receive(:new).with('localhost', 3312).and_return(@sock)
33
+ TCPSocket.should_receive(:new).with('localhost', 9312).and_return(@sock)
34
34
  @sock.should_receive(:recv).with(4).and_return([1].pack('N'))
35
35
  @sock.should_receive(:send).with([1].pack('N'), 0)
36
36
  @sphinx.send(:Connect).should be(@sock)
37
37
  end
38
38
 
39
39
  it 'should raise exception when searchd protocol is not 1+' do
40
- TCPSocket.should_receive(:new).with('localhost', 3312).and_return(@sock)
40
+ TCPSocket.should_receive(:new).with('localhost', 9312).and_return(@sock)
41
41
  @sock.should_receive(:recv).with(4).and_return([0].pack('N'))
42
42
  @sock.should_receive(:close)
43
43
  lambda { @sphinx.send(:Connect) }.should raise_error(Sphinx::SphinxConnectError)
@@ -45,9 +45,9 @@ describe 'The Connect method of Sphinx::Client' do
45
45
  end
46
46
 
47
47
  it 'should raise exception on connection error' do
48
- TCPSocket.should_receive(:new).with('localhost', 3312).and_raise(Errno::EBADF)
48
+ TCPSocket.should_receive(:new).with('localhost', 9312).and_raise(Errno::EBADF)
49
49
  lambda { @sphinx.send(:Connect) }.should raise_error(Sphinx::SphinxConnectError)
50
- @sphinx.GetLastError.should == 'connection to localhost:3312 failed'
50
+ @sphinx.GetLastError.should == 'connection to localhost:9312 failed'
51
51
  end
52
52
 
53
53
  it 'should use custom host and port' do
@@ -1,8 +1,8 @@
1
- <?php
2
-
3
- require ("sphinxapi.php");
4
-
5
- $cl = new SphinxClient();
6
- $cl->BuildKeywords('test', 'index', true);
7
-
1
+ <?php
2
+
3
+ require ("sphinxapi.php");
4
+
5
+ $cl = new SphinxClient();
6
+ $cl->BuildKeywords('test', 'index', true);
7
+
8
8
  ?>
@@ -5,7 +5,9 @@
5
5
  //
6
6
 
7
7
  //
8
- // Copyright (c) 2001-2008, Andrew Aksyonoff. All rights reserved.
8
+ // Copyright (c) 2001-2012, Andrew Aksyonoff
9
+ // Copyright (c) 2008-2012, Sphinx Technologies Inc
10
+ // All rights reserved
9
11
  //
10
12
  // This program is free software; you can redistribute it and/or modify
11
13
  // it under the terms of the GNU General Public License. You should have
@@ -177,7 +179,7 @@ function sphUnpack64 ( $v )
177
179
  class SphinxClient
178
180
  {
179
181
  var $_host; ///< searchd host (default is "localhost")
180
- var $_port; ///< searchd port (default is 3312)
182
+ var $_port; ///< searchd port (default is 9312)
181
183
  var $_offset; ///< how many records to seek from result-set start (default is 0)
182
184
  var $_limit; ///< how many records to return from result-set starting at offset (default is 20)
183
185
  var $_mode; ///< query matching mode (default is SPH_MATCH_ALL)
@@ -219,7 +221,7 @@ class SphinxClient
219
221
  {
220
222
  // per-client-object settings
221
223
  $this->_host = "localhost";
222
- $this->_port = 3312;
224
+ $this->_port = 9312;
223
225
 
224
226
  // per-query settings
225
227
  $this->_offset = 0;
@@ -57,7 +57,7 @@ indexer
57
57
 
58
58
  searchd
59
59
  {
60
- port = 3312
60
+ port = 9312
61
61
  log = /opt/sphinx-0.9.9-id64/var/log/searchd.log
62
62
  query_log = /opt/sphinx-0.9.9-id64/var/log/query.log
63
63
  read_timeout = 5
@@ -57,7 +57,7 @@ indexer
57
57
 
58
58
  searchd
59
59
  {
60
- port = 3312
60
+ port = 9312
61
61
  log = /opt/sphinx-0.9.9/var/log/searchd.log
62
62
  query_log = /opt/sphinx-0.9.9/var/log/query.log
63
63
  read_timeout = 5
@@ -0,0 +1,27 @@
1
+ #
2
+ # $Id$
3
+ #
4
+
5
+ require 'init.rb'
6
+
7
+ q = ARGV.join(' ')
8
+ @sphinx = Sphinx::Client.new
9
+ # @sphinx.SetSortMode(Sphinx::Client::SPH_SORT_ATTR_ASC, 'created_at')
10
+ results = @sphinx.Query(q)
11
+
12
+ puts "Query '#{q}' retrieved #{results['total']} of #{results['total_found']} matches in #{results['time']} sec.";
13
+ puts "Query stats:";
14
+ results['words'].each do |word, info|
15
+ puts " '#{word}' found #{info['hits']} times in #{info['docs']} documents\n"
16
+ end
17
+ puts
18
+
19
+ n = 1
20
+ results['matches'].each do |doc|
21
+ print "#{n}. doc_id=#{doc['id']}, weight=#{doc['weight']}"
22
+ doc['attrs'].each do |attr, value|
23
+ print ", #{attr}=#{value}"
24
+ end
25
+ puts
26
+ n = n+1
27
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: model_set
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
4
+ hash: 19
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
+ - 1
8
9
  - 0
9
- - 0
10
- version: 1.0.0
10
+ version: 1.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Justin Balthrop
@@ -15,13 +15,113 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-02 00:00:00 -07:00
18
+ date: 2013-06-03 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: ordered_set
22
+ name: shoulda
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - "="
28
+ - !ruby/object:Gem::Version
29
+ hash: 5
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 1
34
+ version: 3.0.1
35
+ type: :development
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: mocha
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
49
+ type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: rsolr
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ type: :development
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: json
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ type: :development
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: rake
81
+ prerelease: false
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ type: :development
92
+ version_requirements: *id005
93
+ - !ruby/object:Gem::Dependency
94
+ name: system_timer
95
+ prerelease: false
96
+ requirement: &id006 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ type: :development
106
+ version_requirements: *id006
107
+ - !ruby/object:Gem::Dependency
108
+ name: activerecord-postgresql-adapter
109
+ prerelease: false
110
+ requirement: &id007 !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ hash: 3
116
+ segments:
117
+ - 0
118
+ version: "0"
119
+ type: :development
120
+ version_requirements: *id007
121
+ - !ruby/object:Gem::Dependency
122
+ name: ordered_set
123
+ prerelease: false
124
+ requirement: &id008 !ruby/object:Gem::Requirement
25
125
  none: false
26
126
  requirements:
27
127
  - - ">="
@@ -33,11 +133,11 @@ dependencies:
33
133
  - 1
34
134
  version: 1.0.1
35
135
  type: :runtime
36
- version_requirements: *id001
136
+ version_requirements: *id008
37
137
  - !ruby/object:Gem::Dependency
38
138
  name: deep_clonable
39
139
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
140
+ requirement: &id009 !ruby/object:Gem::Requirement
41
141
  none: false
42
142
  requirements:
43
143
  - - ">="
@@ -49,33 +149,37 @@ dependencies:
49
149
  - 0
50
150
  version: 1.1.0
51
151
  type: :runtime
52
- version_requirements: *id002
152
+ version_requirements: *id009
53
153
  - !ruby/object:Gem::Dependency
54
154
  name: activerecord
55
155
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
156
+ requirement: &id010 !ruby/object:Gem::Requirement
57
157
  none: false
58
158
  requirements:
59
- - - ">="
159
+ - - ~>
60
160
  - !ruby/object:Gem::Version
61
- hash: 15
161
+ hash: 17
62
162
  segments:
63
163
  - 2
64
- - 0
65
- - 0
66
- version: 2.0.0
164
+ - 3
165
+ - 9
166
+ version: 2.3.9
67
167
  type: :runtime
68
- version_requirements: *id003
168
+ version_requirements: *id010
69
169
  description: Easy manipulation of sets of ActiveRecord models
70
- email: code@justinbalthrop.com
170
+ email:
171
+ - git@justinbalthrop.com
71
172
  executables: []
72
173
 
73
174
  extensions: []
74
175
 
75
- extra_rdoc_files:
76
- - LICENSE
77
- - README.rdoc
176
+ extra_rdoc_files: []
177
+
78
178
  files:
179
+ - .gitignore
180
+ - .rbenv-gemsets
181
+ - .rbenv-version
182
+ - Gemfile
79
183
  - LICENSE
80
184
  - README.rdoc
81
185
  - Rakefile
@@ -172,8 +276,9 @@ files:
172
276
  - vendor/sphinx_client/spec/sphinx/sphinx_test.sql
173
277
  - vendor/sphinx_client/sphinx.yml.tpl
174
278
  - vendor/sphinx_client/tasks/sphinx.rake
279
+ - vendor/sphinx_client/test.rb
175
280
  has_rdoc: true
176
- homepage: http://github.com/ninjudd/model_set
281
+ homepage: https://github.com/ninjudd/model_set
177
282
  licenses: []
178
283
 
179
284
  post_install_message:
@@ -202,9 +307,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
307
  requirements: []
203
308
 
204
309
  rubyforge_project:
205
- rubygems_version: 1.3.7
310
+ rubygems_version: 1.5.2
206
311
  signing_key:
207
312
  specification_version: 3
208
313
  summary: Easy manipulation of sets of ActiveRecord models
209
- test_files: []
210
-
314
+ test_files:
315
+ - test/model_set_test.rb
316
+ - test/multi_set_test.rb
317
+ - test/test_helper.rb