rubydora 0.5.9 → 0.5.10
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/VERSION +1 -1
- data/lib/rubydora/datastream.rb +5 -3
- data/spec/lib/datastream_spec.rb +43 -0
- metadata +179 -173
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.5.
|
|
1
|
+
0.5.10
|
data/lib/rubydora/datastream.rb
CHANGED
|
@@ -7,9 +7,11 @@ module Rubydora
|
|
|
7
7
|
define_model_callbacks :save, :create, :destroy
|
|
8
8
|
define_model_callbacks :initialize, :only => :after
|
|
9
9
|
|
|
10
|
-
|
|
11
10
|
include ActiveModel::Dirty
|
|
12
11
|
|
|
12
|
+
class_attribute :eager_load_datastream_content
|
|
13
|
+
self.eager_load_datastream_content = false
|
|
14
|
+
|
|
13
15
|
include Rubydora::ExtensionParameters
|
|
14
16
|
|
|
15
17
|
attr_reader :digital_object, :dsid
|
|
@@ -135,7 +137,7 @@ module Rubydora
|
|
|
135
137
|
# @param [String or IO]
|
|
136
138
|
# @return [String or IO]
|
|
137
139
|
def content= new_content
|
|
138
|
-
content_will_change!
|
|
140
|
+
content_will_change! if (self.eager_load_datastream_content and content != new_content) or (@content.nil? or @content != new_content)
|
|
139
141
|
@content = new_content
|
|
140
142
|
end
|
|
141
143
|
|
|
@@ -143,7 +145,7 @@ module Rubydora
|
|
|
143
145
|
# We don't want to do that.
|
|
144
146
|
def content_will_change!
|
|
145
147
|
raise "Can't change values on older versions" if @asOfDateTime
|
|
146
|
-
changed_attributes[
|
|
148
|
+
changed_attributes['content'] = nil
|
|
147
149
|
end
|
|
148
150
|
|
|
149
151
|
# Retrieve the datastream profile as a hash (and cache it)
|
data/spec/lib/datastream_spec.rb
CHANGED
|
@@ -155,6 +155,49 @@ describe Rubydora::Datastream do
|
|
|
155
155
|
|
|
156
156
|
end
|
|
157
157
|
|
|
158
|
+
describe "content changed behavior" do
|
|
159
|
+
before(:each) do
|
|
160
|
+
@datastream = Rubydora::Datastream.new @mock_object, 'dsid'
|
|
161
|
+
@mock_repository.should_receive(:datastream).any_number_of_times.and_return <<-XML
|
|
162
|
+
<datastreamProfile>
|
|
163
|
+
<dsLocation>some:uri</dsLocation>
|
|
164
|
+
<dsLabel>label</dsLabel>
|
|
165
|
+
</datastreamProfile>
|
|
166
|
+
XML
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it "should not be changed after a read-only access" do
|
|
170
|
+
@mock_repository.stub(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('asdf')
|
|
171
|
+
@datastream.content
|
|
172
|
+
@datastream.content_changed?.should == false
|
|
173
|
+
end
|
|
174
|
+
it "should be changed in the new content is different than the old content" do
|
|
175
|
+
@mock_repository.stub(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('asdf')
|
|
176
|
+
@datastream.content = "test"
|
|
177
|
+
@datastream.content_changed?.should == true
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
it "should not be changed in the new content is the same as the existing content (when eager-loading is enabled)" do
|
|
181
|
+
@mock_repository.stub(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('test')
|
|
182
|
+
@datastream.eager_load_datastream_content = true
|
|
183
|
+
@datastream.content = "test"
|
|
184
|
+
@datastream.content_changed?.should == false
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
it "should be changed in the new content is the same as the existing content (without eager loading, the default)" do
|
|
188
|
+
@mock_repository.stub(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('test')
|
|
189
|
+
@datastream.content = "test"
|
|
190
|
+
@datastream.content_changed?.should == true
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
it "should not be changed in the new content is the same as the existing content (and we have accessed #content previously)" do
|
|
194
|
+
@mock_repository.stub(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('test')
|
|
195
|
+
@datastream.content
|
|
196
|
+
@datastream.content = "test"
|
|
197
|
+
@datastream.content_changed?.should == false
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
158
201
|
describe "update" do
|
|
159
202
|
|
|
160
203
|
before(:each) do
|
metadata
CHANGED
|
@@ -1,216 +1,231 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rubydora
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.5.10
|
|
5
5
|
prerelease:
|
|
6
|
-
segments:
|
|
7
|
-
- 0
|
|
8
|
-
- 5
|
|
9
|
-
- 9
|
|
10
|
-
version: 0.5.9
|
|
11
6
|
platform: ruby
|
|
12
|
-
authors:
|
|
7
|
+
authors:
|
|
13
8
|
- Chris Beer
|
|
14
9
|
autorequire:
|
|
15
10
|
bindir: bin
|
|
16
11
|
cert_chain: []
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- !ruby/object:Gem::Dependency
|
|
21
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
|
22
|
-
none: false
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
hash: 3
|
|
27
|
-
segments:
|
|
28
|
-
- 0
|
|
29
|
-
version: "0"
|
|
30
|
-
version_requirements: *id001
|
|
12
|
+
date: 2012-06-25 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
31
15
|
name: fastercsv
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
32
22
|
type: :runtime
|
|
33
23
|
prerelease: false
|
|
34
|
-
|
|
35
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
25
|
none: false
|
|
37
|
-
requirements:
|
|
38
|
-
- -
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- 0
|
|
43
|
-
version: "0"
|
|
44
|
-
version_requirements: *id002
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
45
31
|
name: rest-client
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - ! '>='
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: '0'
|
|
46
38
|
type: :runtime
|
|
47
39
|
prerelease: false
|
|
48
|
-
|
|
49
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
41
|
none: false
|
|
51
|
-
requirements:
|
|
52
|
-
- -
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- 0
|
|
57
|
-
version: "0"
|
|
58
|
-
version_requirements: *id003
|
|
42
|
+
requirements:
|
|
43
|
+
- - ! '>='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0'
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
59
47
|
name: nokogiri
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
50
|
+
requirements:
|
|
51
|
+
- - ! '>='
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
60
54
|
type: :runtime
|
|
61
55
|
prerelease: false
|
|
62
|
-
|
|
63
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
57
|
none: false
|
|
65
|
-
requirements:
|
|
66
|
-
- -
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
- 0
|
|
71
|
-
version: "0"
|
|
72
|
-
version_requirements: *id004
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
- !ruby/object:Gem::Dependency
|
|
73
63
|
name: mime-types
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
65
|
+
none: false
|
|
66
|
+
requirements:
|
|
67
|
+
- - ! '>='
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '0'
|
|
74
70
|
type: :runtime
|
|
75
71
|
prerelease: false
|
|
76
|
-
|
|
77
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
73
|
none: false
|
|
79
|
-
requirements:
|
|
80
|
-
- -
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- 0
|
|
85
|
-
version: "0"
|
|
86
|
-
version_requirements: *id005
|
|
74
|
+
requirements:
|
|
75
|
+
- - ! '>='
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '0'
|
|
78
|
+
- !ruby/object:Gem::Dependency
|
|
87
79
|
name: activesupport
|
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
|
81
|
+
none: false
|
|
82
|
+
requirements:
|
|
83
|
+
- - ! '>='
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: '0'
|
|
88
86
|
type: :runtime
|
|
89
87
|
prerelease: false
|
|
90
|
-
|
|
91
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
89
|
none: false
|
|
93
|
-
requirements:
|
|
94
|
-
- -
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
- 0
|
|
99
|
-
version: "0"
|
|
100
|
-
version_requirements: *id006
|
|
90
|
+
requirements:
|
|
91
|
+
- - ! '>='
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: '0'
|
|
94
|
+
- !ruby/object:Gem::Dependency
|
|
101
95
|
name: activemodel
|
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
|
97
|
+
none: false
|
|
98
|
+
requirements:
|
|
99
|
+
- - ! '>='
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '0'
|
|
102
102
|
type: :runtime
|
|
103
103
|
prerelease: false
|
|
104
|
-
|
|
105
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
106
105
|
none: false
|
|
107
|
-
requirements:
|
|
108
|
-
- -
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
- 0
|
|
113
|
-
version: "0"
|
|
114
|
-
version_requirements: *id007
|
|
106
|
+
requirements:
|
|
107
|
+
- - ! '>='
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '0'
|
|
110
|
+
- !ruby/object:Gem::Dependency
|
|
115
111
|
name: savon
|
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
|
113
|
+
none: false
|
|
114
|
+
requirements:
|
|
115
|
+
- - ! '>='
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
116
118
|
type: :runtime
|
|
117
119
|
prerelease: false
|
|
118
|
-
|
|
119
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
120
121
|
none: false
|
|
121
|
-
requirements:
|
|
122
|
-
- -
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
- 0
|
|
127
|
-
version: "0"
|
|
128
|
-
version_requirements: *id008
|
|
122
|
+
requirements:
|
|
123
|
+
- - ! '>='
|
|
124
|
+
- !ruby/object:Gem::Version
|
|
125
|
+
version: '0'
|
|
126
|
+
- !ruby/object:Gem::Dependency
|
|
129
127
|
name: rake
|
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
|
129
|
+
none: false
|
|
130
|
+
requirements:
|
|
131
|
+
- - ! '>='
|
|
132
|
+
- !ruby/object:Gem::Version
|
|
133
|
+
version: '0'
|
|
130
134
|
type: :development
|
|
131
135
|
prerelease: false
|
|
132
|
-
|
|
133
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
134
137
|
none: false
|
|
135
|
-
requirements:
|
|
136
|
-
- -
|
|
137
|
-
- !ruby/object:Gem::Version
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
- 0
|
|
141
|
-
version: "0"
|
|
142
|
-
version_requirements: *id009
|
|
138
|
+
requirements:
|
|
139
|
+
- - ! '>='
|
|
140
|
+
- !ruby/object:Gem::Version
|
|
141
|
+
version: '0'
|
|
142
|
+
- !ruby/object:Gem::Dependency
|
|
143
143
|
name: shoulda
|
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
|
145
|
+
none: false
|
|
146
|
+
requirements:
|
|
147
|
+
- - ! '>='
|
|
148
|
+
- !ruby/object:Gem::Version
|
|
149
|
+
version: '0'
|
|
144
150
|
type: :development
|
|
145
151
|
prerelease: false
|
|
146
|
-
|
|
147
|
-
requirement: &id010 !ruby/object:Gem::Requirement
|
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
148
153
|
none: false
|
|
149
|
-
requirements:
|
|
150
|
-
- -
|
|
151
|
-
- !ruby/object:Gem::Version
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
- 1
|
|
155
|
-
- 0
|
|
156
|
-
- 14
|
|
157
|
-
version: 1.0.14
|
|
158
|
-
version_requirements: *id010
|
|
154
|
+
requirements:
|
|
155
|
+
- - ! '>='
|
|
156
|
+
- !ruby/object:Gem::Version
|
|
157
|
+
version: '0'
|
|
158
|
+
- !ruby/object:Gem::Dependency
|
|
159
159
|
name: bundler
|
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
|
161
|
+
none: false
|
|
162
|
+
requirements:
|
|
163
|
+
- - ! '>='
|
|
164
|
+
- !ruby/object:Gem::Version
|
|
165
|
+
version: 1.0.14
|
|
160
166
|
type: :development
|
|
161
167
|
prerelease: false
|
|
162
|
-
|
|
163
|
-
requirement: &id011 !ruby/object:Gem::Requirement
|
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
164
169
|
none: false
|
|
165
|
-
requirements:
|
|
166
|
-
- -
|
|
167
|
-
- !ruby/object:Gem::Version
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
- 0
|
|
171
|
-
version: "0"
|
|
172
|
-
version_requirements: *id011
|
|
170
|
+
requirements:
|
|
171
|
+
- - ! '>='
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: 1.0.14
|
|
174
|
+
- !ruby/object:Gem::Dependency
|
|
173
175
|
name: rspec
|
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
|
177
|
+
none: false
|
|
178
|
+
requirements:
|
|
179
|
+
- - ! '>='
|
|
180
|
+
- !ruby/object:Gem::Version
|
|
181
|
+
version: '0'
|
|
174
182
|
type: :development
|
|
175
183
|
prerelease: false
|
|
176
|
-
|
|
177
|
-
requirement: &id012 !ruby/object:Gem::Requirement
|
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
178
185
|
none: false
|
|
179
|
-
requirements:
|
|
180
|
-
- -
|
|
181
|
-
- !ruby/object:Gem::Version
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
- 0
|
|
185
|
-
version: "0"
|
|
186
|
-
version_requirements: *id012
|
|
186
|
+
requirements:
|
|
187
|
+
- - ! '>='
|
|
188
|
+
- !ruby/object:Gem::Version
|
|
189
|
+
version: '0'
|
|
190
|
+
- !ruby/object:Gem::Dependency
|
|
187
191
|
name: yard
|
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
|
193
|
+
none: false
|
|
194
|
+
requirements:
|
|
195
|
+
- - ! '>='
|
|
196
|
+
- !ruby/object:Gem::Version
|
|
197
|
+
version: '0'
|
|
188
198
|
type: :development
|
|
189
199
|
prerelease: false
|
|
190
|
-
|
|
191
|
-
requirement: &id013 !ruby/object:Gem::Requirement
|
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
192
201
|
none: false
|
|
193
|
-
requirements:
|
|
194
|
-
- -
|
|
195
|
-
- !ruby/object:Gem::Version
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
- 0
|
|
199
|
-
version: "0"
|
|
200
|
-
version_requirements: *id013
|
|
202
|
+
requirements:
|
|
203
|
+
- - ! '>='
|
|
204
|
+
- !ruby/object:Gem::Version
|
|
205
|
+
version: '0'
|
|
206
|
+
- !ruby/object:Gem::Dependency
|
|
201
207
|
name: jettywrapper
|
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
|
209
|
+
none: false
|
|
210
|
+
requirements:
|
|
211
|
+
- - ! '>='
|
|
212
|
+
- !ruby/object:Gem::Version
|
|
213
|
+
version: '0'
|
|
202
214
|
type: :development
|
|
203
215
|
prerelease: false
|
|
204
|
-
|
|
205
|
-
|
|
216
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
217
|
+
none: false
|
|
218
|
+
requirements:
|
|
219
|
+
- - ! '>='
|
|
220
|
+
- !ruby/object:Gem::Version
|
|
221
|
+
version: '0'
|
|
222
|
+
description: ! 'Fedora Commons REST API ruby library : REQUIRES FCREPO 3.4+'
|
|
223
|
+
email:
|
|
206
224
|
- chris@cbeer.info
|
|
207
225
|
executables: []
|
|
208
|
-
|
|
209
226
|
extensions: []
|
|
210
|
-
|
|
211
227
|
extra_rdoc_files: []
|
|
212
|
-
|
|
213
|
-
files:
|
|
228
|
+
files:
|
|
214
229
|
- .gitignore
|
|
215
230
|
- .gitmodules
|
|
216
231
|
- Gemfile
|
|
@@ -251,38 +266,29 @@ files:
|
|
|
251
266
|
- spec/spec_helper.rb
|
|
252
267
|
homepage: http://github.com/cbeer/rubydora
|
|
253
268
|
licenses: []
|
|
254
|
-
|
|
255
269
|
post_install_message:
|
|
256
270
|
rdoc_options: []
|
|
257
|
-
|
|
258
|
-
require_paths:
|
|
271
|
+
require_paths:
|
|
259
272
|
- lib
|
|
260
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
273
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
261
274
|
none: false
|
|
262
|
-
requirements:
|
|
263
|
-
- -
|
|
264
|
-
- !ruby/object:Gem::Version
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
- 0
|
|
268
|
-
version: "0"
|
|
269
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
275
|
+
requirements:
|
|
276
|
+
- - ! '>='
|
|
277
|
+
- !ruby/object:Gem::Version
|
|
278
|
+
version: '0'
|
|
279
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
270
280
|
none: false
|
|
271
|
-
requirements:
|
|
272
|
-
- -
|
|
273
|
-
- !ruby/object:Gem::Version
|
|
274
|
-
|
|
275
|
-
segments:
|
|
276
|
-
- 0
|
|
277
|
-
version: "0"
|
|
281
|
+
requirements:
|
|
282
|
+
- - ! '>='
|
|
283
|
+
- !ruby/object:Gem::Version
|
|
284
|
+
version: '0'
|
|
278
285
|
requirements: []
|
|
279
|
-
|
|
280
286
|
rubyforge_project:
|
|
281
|
-
rubygems_version: 1.8.
|
|
287
|
+
rubygems_version: 1.8.24
|
|
282
288
|
signing_key:
|
|
283
289
|
specification_version: 3
|
|
284
290
|
summary: Fedora Commons REST API ruby library
|
|
285
|
-
test_files:
|
|
291
|
+
test_files:
|
|
286
292
|
- spec/lib/datastream_spec.rb
|
|
287
293
|
- spec/lib/digital_object_spec.rb
|
|
288
294
|
- spec/lib/ext_model_loader_spec.rb
|