ladder 0.2.1 → 0.3.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -1
- data/README.md +133 -110
- data/ladder.gemspec +6 -5
- data/lib/ladder/file.rb +15 -17
- data/lib/ladder/resource.rb +32 -22
- data/lib/ladder/resource/dynamic.rb +43 -49
- data/lib/ladder/resource/serializable.rb +54 -0
- data/lib/ladder/searchable.rb +5 -4
- data/lib/ladder/searchable/background.rb +43 -0
- data/lib/ladder/searchable/resource.rb +5 -64
- data/lib/ladder/version.rb +1 -1
- data/spec/ladder/file_spec.rb +53 -6
- data/spec/ladder/resource/dynamic_spec.rb +117 -115
- data/spec/ladder/resource_spec.rb +273 -8
- data/spec/ladder/searchable/background_spec.rb +112 -0
- data/spec/ladder/{file/searchable_spec.rb → searchable/file_spec.rb} +6 -26
- data/spec/ladder/searchable/resource_spec.rb +83 -0
- data/spec/shared/file.rb +8 -52
- data/spec/shared/resource.rb +54 -272
- data/spec/shared/searchable/file.rb +50 -0
- data/spec/shared/searchable/resource.rb +223 -0
- data/spec/spec_helper.rb +1 -0
- metadata +55 -33
- data/spec/ladder/resource/searchable_spec.rb +0 -221
@@ -0,0 +1,50 @@
|
|
1
|
+
shared_context 'a Searchable File' do
|
2
|
+
|
3
|
+
describe '#save' do
|
4
|
+
before do
|
5
|
+
subject.save
|
6
|
+
Elasticsearch::Model.client.indices.flush
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should exist in the index' do
|
10
|
+
results = subject.class.search('*')
|
11
|
+
expect(results.count).to eq 1
|
12
|
+
expect(results.first.id).to eq subject.id.to_s
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should contain full-text content' do
|
16
|
+
results = subject.class.search 'Moomin*', fields: '*'
|
17
|
+
expect(results.count).to eq 1
|
18
|
+
expect(results.first.fields.file.first).to include 'Moomin'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#save with update' do
|
23
|
+
before do
|
24
|
+
subject.save
|
25
|
+
subject.file = StringIO.new('It was a more serious smell than any he had met before, and slightly frightening.')
|
26
|
+
subject.save
|
27
|
+
Elasticsearch::Model.client.indices.flush
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should have updated full-text content' do
|
31
|
+
results = subject.class.search 'frightening', fields: '*'
|
32
|
+
expect(results.count).to eq 1
|
33
|
+
expect(results.first.fields.file.first).to include 'frightening'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#destroy' do
|
38
|
+
before do
|
39
|
+
subject.save
|
40
|
+
subject.destroy
|
41
|
+
Elasticsearch::Model.client.indices.flush
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should not exist in the index' do
|
45
|
+
results = subject.class.search('*')
|
46
|
+
expect(results).to be_empty
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,223 @@
|
|
1
|
+
shared_examples 'a Searchable' do
|
2
|
+
|
3
|
+
describe '#index_for_search' do
|
4
|
+
|
5
|
+
context 'with default' do
|
6
|
+
before do
|
7
|
+
subject.save
|
8
|
+
Elasticsearch::Model.client.indices.flush
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should exist in the index' do
|
12
|
+
results = subject.class.search('title:moomin*')
|
13
|
+
expect(results.count).to eq 1
|
14
|
+
expect(results.first._source.to_hash).to eq JSON.parse(subject.as_indexed_json.to_json)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with as_qname' do
|
19
|
+
before do
|
20
|
+
subject.class.index_for_search { as_qname }
|
21
|
+
subject.save
|
22
|
+
Elasticsearch::Model.client.indices.flush
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should exist in the index' do
|
26
|
+
results = subject.class.search('dc.title.en:moomin*')
|
27
|
+
expect(results.count).to eq 1
|
28
|
+
expect(results.first._source.to_hash).to eq JSON.parse(subject.as_qname.to_json)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'with as_jsonld' do
|
33
|
+
before do
|
34
|
+
subject.class.index_for_search { as_jsonld }
|
35
|
+
subject.save
|
36
|
+
Elasticsearch::Model.client.indices.flush
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should exist in the index' do
|
40
|
+
results = subject.class.search('dc\:title.@value:moomin*')
|
41
|
+
expect(results.count).to eq 1
|
42
|
+
expect(results.first._source.to_hash).to eq subject.as_jsonld
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#save with update' do
|
49
|
+
before do
|
50
|
+
subject.save
|
51
|
+
subject.title = 'Kometen kommer'
|
52
|
+
subject.save
|
53
|
+
Elasticsearch::Model.client.indices.flush
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'should have updated values' do
|
57
|
+
results = subject.class.search('title:kometen*')
|
58
|
+
expect(results.count).to eq 1
|
59
|
+
expect(results.first._source.to_hash).to eq JSON.parse(subject.as_indexed_json.to_json)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#destroy' do
|
64
|
+
before do
|
65
|
+
subject.save
|
66
|
+
subject.destroy
|
67
|
+
Elasticsearch::Model.client.indices.flush
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should not exist in the index' do
|
71
|
+
results = subject.class.search('*')
|
72
|
+
expect(results).to be_empty
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
shared_examples 'a Searchable with related' do
|
79
|
+
|
80
|
+
describe '#index_for_search related' do
|
81
|
+
|
82
|
+
context 'with default' do
|
83
|
+
before do
|
84
|
+
subject.save
|
85
|
+
Elasticsearch::Model.client.indices.flush
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'should contain an ID for the related object' do
|
89
|
+
results = subject.class.search('person_ids.$oid:' + person.id)
|
90
|
+
expect(results.count).to eq 1
|
91
|
+
expect(results.first._source.to_hash).to eq JSON.parse(subject.as_indexed_json.to_json)
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'should include the related object in the index' do
|
95
|
+
results = person.class.search('foaf_name:tove')
|
96
|
+
expect(results.count).to eq 1
|
97
|
+
expect(results.first._source.to_hash).to eq JSON.parse(person.as_indexed_json.to_json)
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should contain an ID for the subject' do
|
101
|
+
results = person.class.search('thing_ids.$oid:' + subject.id)
|
102
|
+
expect(results.count).to eq 1
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
context 'with as qname' do
|
107
|
+
before do
|
108
|
+
person.class.index_for_search { as_qname }
|
109
|
+
subject.class.index_for_search { as_qname }
|
110
|
+
subject.save
|
111
|
+
Elasticsearch::Model.client.indices.flush
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'should contain an ID for the related object' do
|
115
|
+
results = subject.class.search('dc.creator:' + person.id)
|
116
|
+
expect(results.count).to eq 1
|
117
|
+
expect(results.first._source.to_hash).to eq JSON.parse(subject.as_qname.to_json)
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should include the related object in the index' do
|
121
|
+
results = person.class.search('foaf.name.en:tove')
|
122
|
+
expect(results.count).to eq 1
|
123
|
+
expect(results.first._source.to_hash).to eq JSON.parse(person.as_qname.to_json)
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'should contain an ID for the subject' do
|
127
|
+
results = person.class.search('dc.relation:' + subject.id)
|
128
|
+
expect(results.count).to eq 1
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
context 'with as_qname related' do
|
133
|
+
before do
|
134
|
+
person.class.index_for_search { as_qname related: true }
|
135
|
+
subject.class.index_for_search { as_qname related: true }
|
136
|
+
subject.save
|
137
|
+
Elasticsearch::Model.client.indices.flush
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'should contain a embedded related object' do
|
141
|
+
results = subject.class.search('dc.creator.foaf.name.en:tove')
|
142
|
+
expect(results.count).to eq 1
|
143
|
+
expect(results.first._source.to_hash).to eq JSON.parse(subject.as_qname(related: true).to_json)
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'should contain an embedded subject in the related object' do
|
147
|
+
results = person.class.search('dc.relation.dc.title.en:moomin*')
|
148
|
+
expect(results.count).to eq 1
|
149
|
+
expect(results.first._source.to_hash).to eq JSON.parse(person.as_qname(related: true).to_json)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
context 'with as_jsonld' do
|
154
|
+
before do
|
155
|
+
person.class.index_for_search { as_jsonld }
|
156
|
+
subject.class.index_for_search { as_jsonld }
|
157
|
+
subject.save
|
158
|
+
Elasticsearch::Model.client.indices.flush
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'should contain an ID for the related object' do
|
162
|
+
results = subject.class.search('dc\:creator.@id:' + person.id)
|
163
|
+
expect(results.count).to eq 1
|
164
|
+
expect(results.first._source.to_hash).to eq subject.as_jsonld
|
165
|
+
end
|
166
|
+
|
167
|
+
it 'should include the related object in the index' do
|
168
|
+
results = person.class.search('foaf\:name.@value:tove')
|
169
|
+
expect(results.count).to eq 1
|
170
|
+
expect(results.first._source.to_hash).to eq person.as_jsonld
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'should contain an ID for the subject' do
|
174
|
+
results = person.class.search('dc\:relation.@id:' + subject.id)
|
175
|
+
expect(results.count).to eq 1
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
context 'with as_jsonld related' do
|
180
|
+
before do
|
181
|
+
person.class.index_for_search { as_jsonld related: true }
|
182
|
+
subject.class.index_for_search { as_jsonld related: true }
|
183
|
+
subject.save
|
184
|
+
Elasticsearch::Model.client.indices.flush
|
185
|
+
end
|
186
|
+
|
187
|
+
it 'should contain a embedded related object' do
|
188
|
+
results = subject.class.search('@graph.foaf\:name.@value:tove')
|
189
|
+
expect(results.count).to eq 1
|
190
|
+
expect(results.first._source.to_hash).to eq JSON.parse(subject.as_jsonld(related: true).to_json)
|
191
|
+
end
|
192
|
+
|
193
|
+
it 'should contain an embedded subject in the related object' do
|
194
|
+
results = person.class.search('@graph.dc\:title.@value:moomin*')
|
195
|
+
expect(results.count).to eq 1
|
196
|
+
expect(results.first._source.to_hash).to eq JSON.parse(person.as_jsonld(related: true).to_json)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
context 'with as_framed_jsonld' do
|
201
|
+
before do
|
202
|
+
person.class.index_for_search { as_framed_jsonld }
|
203
|
+
subject.class.index_for_search { as_framed_jsonld }
|
204
|
+
subject.save
|
205
|
+
Elasticsearch::Model.client.indices.flush
|
206
|
+
end
|
207
|
+
|
208
|
+
it 'should contain a embedded related object' do
|
209
|
+
results = subject.class.search('dc\:creator.foaf\:name.@value:tove')
|
210
|
+
expect(results.count).to eq 1
|
211
|
+
expect(results.first._source.to_hash).to eq JSON.parse(subject.as_framed_jsonld.to_json)
|
212
|
+
end
|
213
|
+
|
214
|
+
it 'should contain an embedded subject in the related object' do
|
215
|
+
results = person.class.search('dc\:relation.dc\:title.@value:moomin*')
|
216
|
+
expect(results.count).to eq 1
|
217
|
+
expect(results.first._source.to_hash).to eq JSON.parse(person.as_framed_jsonld.to_json)
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
end
|
222
|
+
|
223
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,85 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ladder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MJ Suhonos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: active-triples
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0.6'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: activejob
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '2
|
33
|
+
version: '4.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2
|
40
|
+
version: '4.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: elasticsearch-model
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.1'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
54
|
+
version: '0.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: mongoid
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0
|
61
|
+
version: '4.0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0
|
68
|
+
version: '4.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: mongoid-grid_fs
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '2.1'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '2.1'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,33 +95,33 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.7'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: mimemagic
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0.
|
103
|
+
version: '0.2'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0.
|
110
|
+
version: '0.2'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: pry
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0.
|
117
|
+
version: '0.10'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0.
|
124
|
+
version: '0.10'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rspec
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,33 +151,47 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '10.4'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: simplecov
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: '0.
|
159
|
+
version: '0.9'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: '0.
|
166
|
+
version: '0.9'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: wirble
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: '0.
|
173
|
+
version: '0.1'
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: '0.
|
180
|
+
version: '0.1'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: yard
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0.8'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0.8'
|
181
195
|
description: Dynamic framework for Linked Data modelling, persistence, and full-text
|
182
196
|
indexing.
|
183
197
|
email: mj@suhonos.ca
|
@@ -198,20 +212,25 @@ files:
|
|
198
212
|
- lib/ladder/file.rb
|
199
213
|
- lib/ladder/resource.rb
|
200
214
|
- lib/ladder/resource/dynamic.rb
|
215
|
+
- lib/ladder/resource/serializable.rb
|
201
216
|
- lib/ladder/searchable.rb
|
217
|
+
- lib/ladder/searchable/background.rb
|
202
218
|
- lib/ladder/searchable/file.rb
|
203
219
|
- lib/ladder/searchable/resource.rb
|
204
220
|
- lib/ladder/version.rb
|
205
221
|
- logo.png
|
206
222
|
- mongoid.yml
|
207
|
-
- spec/ladder/file/searchable_spec.rb
|
208
223
|
- spec/ladder/file_spec.rb
|
209
224
|
- spec/ladder/resource/dynamic_spec.rb
|
210
|
-
- spec/ladder/resource/searchable_spec.rb
|
211
225
|
- spec/ladder/resource_spec.rb
|
226
|
+
- spec/ladder/searchable/background_spec.rb
|
227
|
+
- spec/ladder/searchable/file_spec.rb
|
228
|
+
- spec/ladder/searchable/resource_spec.rb
|
212
229
|
- spec/shared/file.rb
|
213
230
|
- spec/shared/moomin.pdf
|
214
231
|
- spec/shared/resource.rb
|
232
|
+
- spec/shared/searchable/file.rb
|
233
|
+
- spec/shared/searchable/resource.rb
|
215
234
|
- spec/spec_helper.rb
|
216
235
|
homepage: https://github.com/ladder/ladder
|
217
236
|
licenses:
|
@@ -238,13 +257,16 @@ signing_key:
|
|
238
257
|
specification_version: 4
|
239
258
|
summary: ActiveModel Linked Data framework.
|
240
259
|
test_files:
|
241
|
-
- spec/ladder/file/searchable_spec.rb
|
242
260
|
- spec/ladder/file_spec.rb
|
243
261
|
- spec/ladder/resource/dynamic_spec.rb
|
244
|
-
- spec/ladder/resource/searchable_spec.rb
|
245
262
|
- spec/ladder/resource_spec.rb
|
263
|
+
- spec/ladder/searchable/background_spec.rb
|
264
|
+
- spec/ladder/searchable/file_spec.rb
|
265
|
+
- spec/ladder/searchable/resource_spec.rb
|
246
266
|
- spec/shared/file.rb
|
247
267
|
- spec/shared/moomin.pdf
|
248
268
|
- spec/shared/resource.rb
|
269
|
+
- spec/shared/searchable/file.rb
|
270
|
+
- spec/shared/searchable/resource.rb
|
249
271
|
- spec/spec_helper.rb
|
250
272
|
has_rdoc:
|