gsolr_ext 0.12.3
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.
- data/.gitignore +3 -0
- data/LICENSE +13 -0
- data/README.rdoc +126 -0
- data/Rakefile +46 -0
- data/TODO.txt +1 -0
- data/VERSION +1 -0
- data/gsolr_ext.gemspec +32 -0
- data/gsolr_ext.tmproj +258 -0
- data/lib/gsolr_ext.rb +42 -0
- data/lib/gsolr_ext/client.rb +65 -0
- data/lib/gsolr_ext/doc.rb +44 -0
- data/lib/gsolr_ext/model.rb +111 -0
- data/lib/gsolr_ext/request.rb +110 -0
- data/lib/gsolr_ext/response.rb +65 -0
- data/lib/gsolr_ext/response/docs.rb +56 -0
- data/lib/gsolr_ext/response/facets.rb +58 -0
- data/lib/gsolr_ext/response/spelling.rb +92 -0
- data/lib/mash.rb +143 -0
- data/spec/gsolr_ext_spec.rb +276 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +32 -0
- metadata +111 -0
data/.gitignore
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright 2008-2009 Matt Mitchell
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
you may not use this file except in compliance with the License.
|
5
|
+
You may obtain a copy of the License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
See the License for the specific language governing permissions and
|
13
|
+
limitations under the License.
|
data/README.rdoc
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
=GSolr::Ext
|
2
|
+
A set of helper methods/modules to assist in building Solr queries and handling responses when using the GSolr library.
|
3
|
+
|
4
|
+
== Installation:
|
5
|
+
gem sources -a http://gemcutter.org
|
6
|
+
sudo gem install gsolr_ext
|
7
|
+
|
8
|
+
==Related Resources & Projects
|
9
|
+
* {GSolr}[http://github.com/mwmitchell/gsolr_ext]
|
10
|
+
|
11
|
+
==Requests
|
12
|
+
To use the GSolr::Ext connection instead of the normal GSolr connection just require 'gsolr_ext':
|
13
|
+
require 'gsolr_ext'
|
14
|
+
solr = GSolr.connect
|
15
|
+
|
16
|
+
GSolr::Ext adds a #find and a #luke method to the connection object.
|
17
|
+
|
18
|
+
===#luke
|
19
|
+
The #luke method returns a Hash/Mash result of a /admin/luke?numTerms=0 request:
|
20
|
+
luke_response = solr.luke
|
21
|
+
luke_response['index']
|
22
|
+
luke_response['fields']
|
23
|
+
luke_response['info']
|
24
|
+
|
25
|
+
|
26
|
+
===#find
|
27
|
+
The #find method listens for certain keys. All other keys are ignored, allowing the ability to mix-and-match special keys with normal Solr param keys. The recognized keys are describe below.
|
28
|
+
|
29
|
+
|
30
|
+
:page - This maps to the Solr "start" param. The current "page" in the results set. GSolr::Ext handles the page-to-rows math for you.
|
31
|
+
|
32
|
+
|
33
|
+
:per_page - This maps to the Solr "rows" param. How many "pages" in the result.
|
34
|
+
|
35
|
+
|
36
|
+
:queries - This key maps to the Solr "q" param. Accepts a string, array or hash. When an array is used, each value is joined by a space. When a hash is used, the keys are used as Solr fields.
|
37
|
+
|
38
|
+
* :queries => 'normal' BECOMES ?q=normal
|
39
|
+
* :queries => ['one', 'two'] BECOMES ?q=one two
|
40
|
+
* :queries => {:title=>'one'} BECOMES ?q=title:(one)
|
41
|
+
* :queries => ['red', {:title=>'one'}] BECOMES ?q=red title:(one)
|
42
|
+
|
43
|
+
|
44
|
+
:phrases - This value is mapped to the Solr "q" param. When this key is used, the value will become double-quoted, creating a Solr "phrase" based query.
|
45
|
+
|
46
|
+
* :phrases => 'normal' BECOMES ?q="normal"
|
47
|
+
* :phrases => ['one', 'two'] BECOMES ?q="one" "two"
|
48
|
+
* :phrases => {:title=>'one'} BECOMES ?q=title:("one")
|
49
|
+
* :phrases => ['red', {:title=>'one'}] BECOMES ?q="red" title:("one")
|
50
|
+
|
51
|
+
|
52
|
+
:filters - The :filters key maps to the Solr :fq param. This has the same behavior as the :queries key, except it's for the :fq param.
|
53
|
+
|
54
|
+
* :filters => 'normal' BECOMES ?fq=normal
|
55
|
+
* :filters => ['one', 'two'] BECOMES ?fq=one two
|
56
|
+
* :filters => {:title=>'one'} BECOMES ?fq=title:(one)
|
57
|
+
* :filters => ['red', {:title=>'one'}] BECOMES ?fq=red title:(one)
|
58
|
+
|
59
|
+
|
60
|
+
:phrase_filters - The :phrase_filters key maps to the Solr :fq param. This has the same behavior as the :phrases key, except it's for the :fq param.
|
61
|
+
|
62
|
+
* :phrase_filters => 'normal' BECOMES ?fq="normal"
|
63
|
+
* :phrase_filters => ['one', 'two'] BECOMES ?fq="one" "two"
|
64
|
+
* :phrase_filters => {:title=>'one'} BECOMES ?fq=title:("one")
|
65
|
+
* :phrase_filters => ['red', {:title=>'one'}] BECOMES ?fq="red" title:("one")
|
66
|
+
|
67
|
+
|
68
|
+
:facets - The :facets does a few different things. First, it sets the Solr param facet=true. It accepts a hash with a single key called :fields. This should be an array of field names to facet on.
|
69
|
+
|
70
|
+
* :facets=>{:fields=>['cat', 'blah']} BECOMES ?facet=true&facet.field=cat&facet.field=blah
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
==Request Example
|
75
|
+
require 'gsolr_ext'
|
76
|
+
solr = GSolr.connect
|
77
|
+
solr_params = {
|
78
|
+
:page=>2,
|
79
|
+
:per_page=>10,
|
80
|
+
:phrases=>{:name=>'This is a phrase'},
|
81
|
+
:filters=>['test', {:price=>(1..10)}],
|
82
|
+
:phrase_filters=>{:manu=>['Apple']},
|
83
|
+
:queries=>'ipod',
|
84
|
+
:facets=>{:fields=>['cat', 'blah']},
|
85
|
+
:echoParams => 'EXPLICIT'
|
86
|
+
}
|
87
|
+
response = gsolr_ext.find solr_params
|
88
|
+
|
89
|
+
==Responses
|
90
|
+
GSolr::Ext decorates the normal output hash from GSolr and adds some helpful methods.
|
91
|
+
|
92
|
+
require 'gsolr_ext'
|
93
|
+
solr = GSolr.connect
|
94
|
+
|
95
|
+
response = solr.find :q=>'*:*'
|
96
|
+
|
97
|
+
response.ok?
|
98
|
+
response.params
|
99
|
+
response.docs
|
100
|
+
response.docs.previous_page
|
101
|
+
response.docs.next_page
|
102
|
+
response.facets.each do |facet|
|
103
|
+
puts facet.name
|
104
|
+
facet.items.each do |item|
|
105
|
+
puts "#{facet.name}::#{item.value} (#{item.hits})"
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
You can access values in the response hash using symbols or strings.
|
110
|
+
|
111
|
+
===Documents/Pagination
|
112
|
+
If you wanna paginate, just throw the collection into the WillPaginate view helper.
|
113
|
+
<%= will_paginate response.docs %>
|
114
|
+
|
115
|
+
==The "Model" Module
|
116
|
+
You can create your own <read-only> "models" using GSolr::Ext::Model
|
117
|
+
|
118
|
+
class Book
|
119
|
+
include GSolr::Ext::Model
|
120
|
+
def self.find_by_author(author)
|
121
|
+
find(:fq=>'object_type:"book"', :rows=>10, :phrase_filters=>{:author=>author})
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
all_books = Book.find('*:*')
|
126
|
+
hawk_books = Book.find_by_author('hawk')
|
data/Rakefile
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
+
|
4
|
+
require 'bundler'
|
5
|
+
require 'rake'
|
6
|
+
require 'rake/testtask'
|
7
|
+
require 'rake/gempackagetask'
|
8
|
+
|
9
|
+
gemspec = eval File.read('gsolr_ext.gemspec')
|
10
|
+
|
11
|
+
# Gem packaging tasks
|
12
|
+
Rake::GemPackageTask.new(gemspec) do |pkg|
|
13
|
+
pkg.need_zip = false
|
14
|
+
pkg.need_tar = false
|
15
|
+
end
|
16
|
+
|
17
|
+
task :gem => :gemspec
|
18
|
+
|
19
|
+
desc %{Build the gemspec file.}
|
20
|
+
task :gemspec do
|
21
|
+
gemspec.validate
|
22
|
+
end
|
23
|
+
|
24
|
+
desc %{Release the gem to RubyGems.org}
|
25
|
+
task :release => :gem do
|
26
|
+
system "gem push pkg/#{gemspec.name}-#{gemspec.version}.gem"
|
27
|
+
end
|
28
|
+
|
29
|
+
require 'rspec'
|
30
|
+
require 'rspec/core'
|
31
|
+
require 'rspec/core/rake_task'
|
32
|
+
|
33
|
+
Rspec::Core::RakeTask.new(:spec) do |spec|
|
34
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
35
|
+
spec.verbose = true
|
36
|
+
spec.rspec_opts = ['--color']
|
37
|
+
end
|
38
|
+
|
39
|
+
Rspec::Core::RakeTask.new(:rcov) do |spec|
|
40
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
41
|
+
spec.verbose = true
|
42
|
+
spec.rcov = true
|
43
|
+
spec.rspec_opts = ['--color']
|
44
|
+
end
|
45
|
+
|
46
|
+
task :default => :spec
|
data/TODO.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
default_params for Model?
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.12.1
|
data/gsolr_ext.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
7
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
8
|
+
|
9
|
+
$:.push File.expand_path("../lib", __FILE__)
|
10
|
+
|
11
|
+
require 'date'
|
12
|
+
require 'gsolr_ext/version'
|
13
|
+
|
14
|
+
Gem::Specification.new do |s|
|
15
|
+
s.name = %q{gsolr_ext}
|
16
|
+
s.version = GSolr::Ext::VERSION
|
17
|
+
s.date = Date.today.to_s
|
18
|
+
s.authors = ["Scott Gonyea"] # "Matt Mitchell" authored RSolr + RSolr::Ext
|
19
|
+
s.email = %q{me@sgonyea.com}
|
20
|
+
s.homepage = %q{https://github.com/aitrus/gsolr_ext}
|
21
|
+
|
22
|
+
s.summary = %q{A query/response extension lib for GSolr}
|
23
|
+
s.description = %q{A query/response extension lib for the Generic Solr Gem (fork of RSolr)}
|
24
|
+
|
25
|
+
s.add_dependency 'gsolr'
|
26
|
+
s.add_development_dependency "rspec"
|
27
|
+
|
28
|
+
s.files = `git ls-files`.split("\n")
|
29
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
30
|
+
s.require_paths = ["lib"]
|
31
|
+
end
|
32
|
+
|
data/gsolr_ext.tmproj
ADDED
@@ -0,0 +1,258 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>currentDocument</key>
|
6
|
+
<string>lib/gsolr_ext.rb</string>
|
7
|
+
<key>documents</key>
|
8
|
+
<array>
|
9
|
+
<dict>
|
10
|
+
<key>expanded</key>
|
11
|
+
<true/>
|
12
|
+
<key>name</key>
|
13
|
+
<string>gsolr_ext</string>
|
14
|
+
<key>regexFolderFilter</key>
|
15
|
+
<string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
|
16
|
+
<key>sourceDirectory</key>
|
17
|
+
<string></string>
|
18
|
+
</dict>
|
19
|
+
</array>
|
20
|
+
<key>fileHierarchyDrawerWidth</key>
|
21
|
+
<integer>200</integer>
|
22
|
+
<key>metaData</key>
|
23
|
+
<dict>
|
24
|
+
<key>Gemfile</key>
|
25
|
+
<dict>
|
26
|
+
<key>caret</key>
|
27
|
+
<dict>
|
28
|
+
<key>column</key>
|
29
|
+
<integer>13</integer>
|
30
|
+
<key>line</key>
|
31
|
+
<integer>6</integer>
|
32
|
+
</dict>
|
33
|
+
<key>firstVisibleColumn</key>
|
34
|
+
<integer>0</integer>
|
35
|
+
<key>firstVisibleLine</key>
|
36
|
+
<integer>0</integer>
|
37
|
+
</dict>
|
38
|
+
<key>Rakefile</key>
|
39
|
+
<dict>
|
40
|
+
<key>caret</key>
|
41
|
+
<dict>
|
42
|
+
<key>column</key>
|
43
|
+
<integer>0</integer>
|
44
|
+
<key>line</key>
|
45
|
+
<integer>9</integer>
|
46
|
+
</dict>
|
47
|
+
<key>firstVisibleColumn</key>
|
48
|
+
<integer>0</integer>
|
49
|
+
<key>firstVisibleLine</key>
|
50
|
+
<integer>1</integer>
|
51
|
+
</dict>
|
52
|
+
<key>gsolr_ext.gemspec</key>
|
53
|
+
<dict>
|
54
|
+
<key>caret</key>
|
55
|
+
<dict>
|
56
|
+
<key>column</key>
|
57
|
+
<integer>0</integer>
|
58
|
+
<key>line</key>
|
59
|
+
<integer>25</integer>
|
60
|
+
</dict>
|
61
|
+
<key>firstVisibleColumn</key>
|
62
|
+
<integer>0</integer>
|
63
|
+
<key>firstVisibleLine</key>
|
64
|
+
<integer>0</integer>
|
65
|
+
</dict>
|
66
|
+
<key>lib/gsolr_ext.rb</key>
|
67
|
+
<dict>
|
68
|
+
<key>caret</key>
|
69
|
+
<dict>
|
70
|
+
<key>column</key>
|
71
|
+
<integer>19</integer>
|
72
|
+
<key>line</key>
|
73
|
+
<integer>16</integer>
|
74
|
+
</dict>
|
75
|
+
<key>firstVisibleColumn</key>
|
76
|
+
<integer>0</integer>
|
77
|
+
<key>firstVisibleLine</key>
|
78
|
+
<integer>0</integer>
|
79
|
+
</dict>
|
80
|
+
<key>lib/gsolr_ext/client.rb</key>
|
81
|
+
<dict>
|
82
|
+
<key>caret</key>
|
83
|
+
<dict>
|
84
|
+
<key>column</key>
|
85
|
+
<integer>17</integer>
|
86
|
+
<key>line</key>
|
87
|
+
<integer>2</integer>
|
88
|
+
</dict>
|
89
|
+
<key>firstVisibleColumn</key>
|
90
|
+
<integer>0</integer>
|
91
|
+
<key>firstVisibleLine</key>
|
92
|
+
<integer>0</integer>
|
93
|
+
</dict>
|
94
|
+
<key>lib/gsolr_ext/doc.rb</key>
|
95
|
+
<dict>
|
96
|
+
<key>caret</key>
|
97
|
+
<dict>
|
98
|
+
<key>column</key>
|
99
|
+
<integer>0</integer>
|
100
|
+
<key>line</key>
|
101
|
+
<integer>0</integer>
|
102
|
+
</dict>
|
103
|
+
<key>firstVisibleColumn</key>
|
104
|
+
<integer>0</integer>
|
105
|
+
<key>firstVisibleLine</key>
|
106
|
+
<integer>0</integer>
|
107
|
+
</dict>
|
108
|
+
<key>lib/gsolr_ext/model.rb</key>
|
109
|
+
<dict>
|
110
|
+
<key>caret</key>
|
111
|
+
<dict>
|
112
|
+
<key>column</key>
|
113
|
+
<integer>0</integer>
|
114
|
+
<key>line</key>
|
115
|
+
<integer>99</integer>
|
116
|
+
</dict>
|
117
|
+
<key>firstVisibleColumn</key>
|
118
|
+
<integer>0</integer>
|
119
|
+
<key>firstVisibleLine</key>
|
120
|
+
<integer>70</integer>
|
121
|
+
</dict>
|
122
|
+
<key>lib/gsolr_ext/request.rb</key>
|
123
|
+
<dict>
|
124
|
+
<key>caret</key>
|
125
|
+
<dict>
|
126
|
+
<key>column</key>
|
127
|
+
<integer>0</integer>
|
128
|
+
<key>line</key>
|
129
|
+
<integer>0</integer>
|
130
|
+
</dict>
|
131
|
+
<key>firstVisibleColumn</key>
|
132
|
+
<integer>0</integer>
|
133
|
+
<key>firstVisibleLine</key>
|
134
|
+
<integer>0</integer>
|
135
|
+
</dict>
|
136
|
+
<key>lib/gsolr_ext/response.rb</key>
|
137
|
+
<dict>
|
138
|
+
<key>caret</key>
|
139
|
+
<dict>
|
140
|
+
<key>column</key>
|
141
|
+
<integer>0</integer>
|
142
|
+
<key>line</key>
|
143
|
+
<integer>38</integer>
|
144
|
+
</dict>
|
145
|
+
<key>firstVisibleColumn</key>
|
146
|
+
<integer>0</integer>
|
147
|
+
<key>firstVisibleLine</key>
|
148
|
+
<integer>0</integer>
|
149
|
+
</dict>
|
150
|
+
<key>lib/gsolr_ext/response/docs.rb</key>
|
151
|
+
<dict>
|
152
|
+
<key>caret</key>
|
153
|
+
<dict>
|
154
|
+
<key>column</key>
|
155
|
+
<integer>0</integer>
|
156
|
+
<key>line</key>
|
157
|
+
<integer>0</integer>
|
158
|
+
</dict>
|
159
|
+
<key>firstVisibleColumn</key>
|
160
|
+
<integer>0</integer>
|
161
|
+
<key>firstVisibleLine</key>
|
162
|
+
<integer>0</integer>
|
163
|
+
</dict>
|
164
|
+
<key>lib/gsolr_ext/response/facets.rb</key>
|
165
|
+
<dict>
|
166
|
+
<key>caret</key>
|
167
|
+
<dict>
|
168
|
+
<key>column</key>
|
169
|
+
<integer>0</integer>
|
170
|
+
<key>line</key>
|
171
|
+
<integer>0</integer>
|
172
|
+
</dict>
|
173
|
+
<key>firstVisibleColumn</key>
|
174
|
+
<integer>0</integer>
|
175
|
+
<key>firstVisibleLine</key>
|
176
|
+
<integer>0</integer>
|
177
|
+
</dict>
|
178
|
+
<key>lib/gsolr_ext/response/spelling.rb</key>
|
179
|
+
<dict>
|
180
|
+
<key>caret</key>
|
181
|
+
<dict>
|
182
|
+
<key>column</key>
|
183
|
+
<integer>0</integer>
|
184
|
+
<key>line</key>
|
185
|
+
<integer>0</integer>
|
186
|
+
</dict>
|
187
|
+
<key>firstVisibleColumn</key>
|
188
|
+
<integer>0</integer>
|
189
|
+
<key>firstVisibleLine</key>
|
190
|
+
<integer>0</integer>
|
191
|
+
</dict>
|
192
|
+
<key>lib/gsolr_ext/version.rb</key>
|
193
|
+
<dict>
|
194
|
+
<key>caret</key>
|
195
|
+
<dict>
|
196
|
+
<key>column</key>
|
197
|
+
<integer>0</integer>
|
198
|
+
<key>line</key>
|
199
|
+
<integer>5</integer>
|
200
|
+
</dict>
|
201
|
+
<key>firstVisibleColumn</key>
|
202
|
+
<integer>0</integer>
|
203
|
+
<key>firstVisibleLine</key>
|
204
|
+
<integer>0</integer>
|
205
|
+
</dict>
|
206
|
+
<key>lib/mash.rb</key>
|
207
|
+
<dict>
|
208
|
+
<key>caret</key>
|
209
|
+
<dict>
|
210
|
+
<key>column</key>
|
211
|
+
<integer>0</integer>
|
212
|
+
<key>line</key>
|
213
|
+
<integer>0</integer>
|
214
|
+
</dict>
|
215
|
+
<key>firstVisibleColumn</key>
|
216
|
+
<integer>0</integer>
|
217
|
+
<key>firstVisibleLine</key>
|
218
|
+
<integer>0</integer>
|
219
|
+
</dict>
|
220
|
+
<key>spec/spec_helper.rb</key>
|
221
|
+
<dict>
|
222
|
+
<key>caret</key>
|
223
|
+
<dict>
|
224
|
+
<key>column</key>
|
225
|
+
<integer>10</integer>
|
226
|
+
<key>line</key>
|
227
|
+
<integer>4</integer>
|
228
|
+
</dict>
|
229
|
+
<key>firstVisibleColumn</key>
|
230
|
+
<integer>0</integer>
|
231
|
+
<key>firstVisibleLine</key>
|
232
|
+
<integer>0</integer>
|
233
|
+
</dict>
|
234
|
+
</dict>
|
235
|
+
<key>openDocuments</key>
|
236
|
+
<array>
|
237
|
+
<string>lib/gsolr_ext/client.rb</string>
|
238
|
+
<string>lib/gsolr_ext/doc.rb</string>
|
239
|
+
<string>lib/gsolr_ext/model.rb</string>
|
240
|
+
<string>lib/gsolr_ext/request.rb</string>
|
241
|
+
<string>lib/gsolr_ext/response/docs.rb</string>
|
242
|
+
<string>lib/gsolr_ext/response/facets.rb</string>
|
243
|
+
<string>lib/gsolr_ext/response/spelling.rb</string>
|
244
|
+
<string>lib/gsolr_ext/response.rb</string>
|
245
|
+
<string>lib/gsolr_ext.rb</string>
|
246
|
+
<string>Rakefile</string>
|
247
|
+
<string>gsolr_ext.gemspec</string>
|
248
|
+
<string>Gemfile</string>
|
249
|
+
<string>lib/gsolr_ext/version.rb</string>
|
250
|
+
<string>lib/mash.rb</string>
|
251
|
+
<string>spec/spec_helper.rb</string>
|
252
|
+
</array>
|
253
|
+
<key>showFileHierarchyDrawer</key>
|
254
|
+
<true/>
|
255
|
+
<key>windowFrame</key>
|
256
|
+
<string>{{221, 173}, {944, 776}}</string>
|
257
|
+
</dict>
|
258
|
+
</plist>
|