active-fedora 3.1.3 → 3.1.4
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/CONSOLE_GETTING_STARTED.textile +1 -1
- data/Gemfile.lock +6 -6
- data/History.txt +4 -0
- data/active-fedora.gemspec +2 -2
- data/lib/active_fedora/content_model.rb +3 -22
- data/lib/active_fedora/model.rb +24 -7
- data/lib/active_fedora/version.rb +1 -1
- data/spec/unit/content_model_spec.rb +6 -15
- metadata +11 -11
@@ -75,7 +75,7 @@ As you can see, ActiveFedora.init defaults to using the fedora.yml included in t
|
|
75
75
|
|
76
76
|
If you want to use a different yml file, put your info (pointing ActiveFedora to specific Fedora & Solr URLs) into the file and pass its path to ActiveFedora.init:
|
77
77
|
|
78
|
-
<pre>ActiveFedora.init("path/to/fedora.yml")</pre>
|
78
|
+
<pre>ActiveFedora.init(:fedora_config_path=>"path/to/fedora.yml")</pre>
|
79
79
|
|
80
80
|
h4. ActiveFedora within Rails
|
81
81
|
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
active-fedora (3.1.
|
4
|
+
active-fedora (3.1.4)
|
5
5
|
activeresource (~> 3.0.0)
|
6
6
|
activesupport (~> 3.0.0)
|
7
7
|
equivalent-xml
|
@@ -13,7 +13,7 @@ PATH
|
|
13
13
|
om (>= 1.4.3)
|
14
14
|
rdf
|
15
15
|
rdf-rdfxml
|
16
|
-
rubydora (
|
16
|
+
rubydora (~> 0.2.6)
|
17
17
|
solr-ruby (>= 0.0.6)
|
18
18
|
solrizer (> 1.0.0)
|
19
19
|
xml-simple (>= 1.0.12)
|
@@ -42,13 +42,13 @@ GEM
|
|
42
42
|
nokogiri (>= 1.4.3)
|
43
43
|
facets (2.9.2)
|
44
44
|
fastercsv (1.5.4)
|
45
|
-
ffi (1.0.
|
45
|
+
ffi (1.0.11)
|
46
46
|
gyoku (0.4.4)
|
47
47
|
builder (>= 2.1.2)
|
48
48
|
httpi (0.9.5)
|
49
49
|
rack
|
50
50
|
i18n (0.5.0)
|
51
|
-
jettywrapper (1.0
|
51
|
+
jettywrapper (1.1.0)
|
52
52
|
activesupport (>= 3.0.0)
|
53
53
|
childprocess
|
54
54
|
i18n
|
@@ -87,7 +87,7 @@ GEM
|
|
87
87
|
ruby-debug-base (~> 0.10.4.0)
|
88
88
|
ruby-debug-base (0.10.4)
|
89
89
|
linecache (>= 0.3)
|
90
|
-
rubydora (0.2.
|
90
|
+
rubydora (0.2.6)
|
91
91
|
activemodel
|
92
92
|
activesupport
|
93
93
|
fastercsv
|
@@ -129,7 +129,7 @@ PLATFORMS
|
|
129
129
|
DEPENDENCIES
|
130
130
|
RedCloth
|
131
131
|
active-fedora!
|
132
|
-
jettywrapper (>= 1.0
|
132
|
+
jettywrapper (>= 1.1.0)
|
133
133
|
mocha (>= 0.9.8)
|
134
134
|
rake
|
135
135
|
rcov
|
data/History.txt
CHANGED
data/active-fedora.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_dependency("mediashelf-loggable")
|
28
28
|
s.add_dependency("equivalent-xml")
|
29
29
|
s.add_dependency("facets")
|
30
|
-
s.add_dependency("rubydora", '0.2.
|
30
|
+
s.add_dependency("rubydora", '~>0.2.6')
|
31
31
|
s.add_dependency("rdf")
|
32
32
|
s.add_dependency("rdf-rdfxml")
|
33
33
|
s.add_development_dependency("yard")
|
@@ -35,7 +35,7 @@ Gem::Specification.new do |s|
|
|
35
35
|
s.add_development_dependency("rake")
|
36
36
|
s.add_development_dependency("rcov")
|
37
37
|
s.add_development_dependency("solrizer-fedora", ">=1.1.3") # used by the fixtures rake tasks
|
38
|
-
s.add_development_dependency("jettywrapper", ">=1.0
|
38
|
+
s.add_development_dependency("jettywrapper", ">=1.1.0")
|
39
39
|
s.add_development_dependency("rspec", "<2.0.0")
|
40
40
|
s.add_development_dependency("mocha", ">= 0.9.8")
|
41
41
|
s.add_development_dependency("ruby-debug")
|
@@ -12,6 +12,7 @@ module ActiveFedora
|
|
12
12
|
super
|
13
13
|
end
|
14
14
|
|
15
|
+
### TODO: Shouldn't this be the same as: klass.to_class_uri ? - Justin
|
15
16
|
def self.pid_from_ruby_class(klass,attrs={})
|
16
17
|
|
17
18
|
unless klass.respond_to? :pid_suffix
|
@@ -33,7 +34,7 @@ module ActiveFedora
|
|
33
34
|
end
|
34
35
|
|
35
36
|
def self.models_asserted_by(obj)
|
36
|
-
obj.
|
37
|
+
obj.relationships(:has_model)
|
37
38
|
end
|
38
39
|
|
39
40
|
def self.known_models_for(obj)
|
@@ -58,22 +59,11 @@ module ActiveFedora
|
|
58
59
|
ActiveFedora::Base
|
59
60
|
end
|
60
61
|
|
61
|
-
# Returns a ruby class corresponding to the given uri if one can be found.
|
62
|
-
# Returns false if no corresponding class can be found.
|
63
|
-
def self.uri_to_ruby_class( uri )
|
64
|
-
classname = uri.split(':')[-1].titlecase.gsub(' ','')
|
65
|
-
|
66
|
-
if class_exists?(classname)
|
67
|
-
Kernel.const_get(classname)
|
68
|
-
else
|
69
|
-
false
|
70
|
-
end
|
71
|
-
end
|
72
62
|
|
73
63
|
# Returns an ActiveFedora Model class corresponding to the given uri if one can be found.
|
74
64
|
# Returns false if no corresponding model can be found.
|
75
65
|
def self.uri_to_model_class( uri )
|
76
|
-
rc =
|
66
|
+
rc = Model.from_class_uri(uri)
|
77
67
|
if rc && rc.superclass == ActiveFedora::Base
|
78
68
|
rc
|
79
69
|
else
|
@@ -81,14 +71,5 @@ module ActiveFedora
|
|
81
71
|
end
|
82
72
|
end
|
83
73
|
|
84
|
-
private
|
85
|
-
|
86
|
-
def self.class_exists?(class_name)
|
87
|
-
klass = Module.const_get(class_name)
|
88
|
-
return klass.is_a?(Class)
|
89
|
-
rescue NameError
|
90
|
-
return false
|
91
|
-
end
|
92
|
-
|
93
74
|
end
|
94
75
|
end
|
data/lib/active_fedora/model.rb
CHANGED
@@ -14,16 +14,23 @@ module ActiveFedora
|
|
14
14
|
klass.extend(ClassMethods)
|
15
15
|
end
|
16
16
|
|
17
|
+
# Takes a Fedora URI for a cModel and returns classname, namespace
|
18
|
+
def self.classname_from_uri(uri)
|
19
|
+
local_path = uri.split('/')[1]
|
20
|
+
parts = local_path.split(':')
|
21
|
+
return parts[-1].gsub('_','/').classify, parts[0]
|
22
|
+
end
|
23
|
+
|
17
24
|
# Takes a Fedora URI for a cModel, and returns a
|
18
25
|
# corresponding Model if available
|
19
26
|
# This method should reverse ClassMethods#to_class_uri
|
20
27
|
def self.from_class_uri(uri)
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
28
|
+
model_value, pid_ns = classname_from_uri(uri)
|
29
|
+
raise "model URI incorrectly formatted: #{uri}" unless model_value
|
30
|
+
|
31
|
+
unless class_exists?(model_value)
|
32
|
+
logger.warn "#{model_value} is not a real class"
|
33
|
+
return false
|
27
34
|
end
|
28
35
|
if model_value.include?("::")
|
29
36
|
result = eval(model_value)
|
@@ -33,7 +40,7 @@ module ActiveFedora
|
|
33
40
|
unless result.nil?
|
34
41
|
model_ns = (result.respond_to? :pid_namespace) ? result.pid_namespace : DEFAULT_NS
|
35
42
|
if model_ns != pid_ns
|
36
|
-
logger.warn "Model class namespace
|
43
|
+
logger.warn "Model class namespace '#{model_ns}' does not match uri: '#{uri}'"
|
37
44
|
end
|
38
45
|
end
|
39
46
|
result
|
@@ -80,6 +87,7 @@ module ActiveFedora
|
|
80
87
|
|
81
88
|
# Returns a suitable uri object for :has_model
|
82
89
|
# Should reverse Model#from_class_uri
|
90
|
+
### TODO: shouldn't this reverse ContentModel.pid_from_ruby_class
|
83
91
|
def to_class_uri
|
84
92
|
ns = (self.respond_to? :pid_namespace) ? self.pid_namespace : Model::DEFAULT_NS
|
85
93
|
pid = self.name.gsub(/::/,'_')
|
@@ -274,5 +282,14 @@ module ActiveFedora
|
|
274
282
|
END
|
275
283
|
end
|
276
284
|
|
285
|
+
private
|
286
|
+
|
287
|
+
def self.class_exists?(class_name)
|
288
|
+
klass = class_name.constantize
|
289
|
+
return klass.is_a?(Class)
|
290
|
+
rescue NameError
|
291
|
+
return false
|
292
|
+
end
|
293
|
+
|
277
294
|
end
|
278
295
|
end
|
@@ -73,12 +73,12 @@ describe ActiveFedora::ContentModel do
|
|
73
73
|
describe "models_asserted_by" do
|
74
74
|
it "should return an array of all of the content models asserted by the given object" do
|
75
75
|
mock_object = mock("ActiveFedora Object")
|
76
|
-
mock_object.expects(:
|
76
|
+
mock_object.expects(:relationships).with(:has_model).returns(["info:fedora/fedora-system:ServiceDefinition-3.0", "info:fedora/afmodel:SampleModel", "info:fedora/afmodel:NonDefinedModel"])
|
77
77
|
ActiveFedora::ContentModel.models_asserted_by(mock_object).should == ["info:fedora/fedora-system:ServiceDefinition-3.0", "info:fedora/afmodel:SampleModel", "info:fedora/afmodel:NonDefinedModel"]
|
78
78
|
end
|
79
79
|
it "should return an empty array if the object doesn't have a RELS-EXT datastream" do
|
80
80
|
mock_object = mock("ActiveFedora Object")
|
81
|
-
mock_object.expects(:
|
81
|
+
mock_object.expects(:relationships).with(:has_model).returns([])
|
82
82
|
ActiveFedora::ContentModel.models_asserted_by(mock_object).should == []
|
83
83
|
end
|
84
84
|
end
|
@@ -86,36 +86,27 @@ describe ActiveFedora::ContentModel do
|
|
86
86
|
describe "known_models_asserted_by" do
|
87
87
|
it "should figure out the applicable models to load" do
|
88
88
|
mock_object = mock("ActiveFedora Object")
|
89
|
-
mock_object.expects(:
|
89
|
+
mock_object.expects(:relationships).with(:has_model).returns(["info:fedora/fedora-system:ServiceDefinition-3.0", "info:fedora/afmodel:SampleModel", "info:fedora/afmodel:NonDefinedModel"])
|
90
90
|
ActiveFedora::ContentModel.known_models_for(mock_object).should == [SampleModel]
|
91
91
|
end
|
92
92
|
it "should support namespaced models" do
|
93
93
|
pending "This is harder than it looks."
|
94
94
|
mock_object = mock("ActiveFedora Object")
|
95
|
-
mock_object.expects(:
|
95
|
+
mock_object.expects(:relationships).with(:has_model).returns(["info:fedora/afmodel:Sample_NamespacedModel"])
|
96
96
|
ActiveFedora::ContentModel.known_models_for(mock_object).should == [Sample::NamespacedModel]
|
97
97
|
end
|
98
98
|
it "should default to using ActiveFedora::Base as the model" do
|
99
99
|
mock_object = mock("ActiveFedora Object")
|
100
|
-
mock_object.expects(:
|
100
|
+
mock_object.expects(:relationships).with(:has_model).returns(["info:fedora/afmodel:NonDefinedModel"])
|
101
101
|
ActiveFedora::ContentModel.known_models_for(mock_object).should == [ActiveFedora::Base]
|
102
102
|
end
|
103
103
|
it "should still work even if the object doesn't have a RELS-EXT datastream" do
|
104
104
|
mock_object = mock("ActiveFedora Object")
|
105
|
-
mock_object.expects(:
|
105
|
+
mock_object.expects(:relationships).with(:has_model).returns([])
|
106
106
|
ActiveFedora::ContentModel.known_models_for(mock_object).should == [ActiveFedora::Base]
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
-
describe "uri_to_ruby_class" do
|
111
|
-
it "should return ruby class corresponding to the given uri if a valid class can be found" do
|
112
|
-
ActiveFedora::ContentModel.uri_to_ruby_class("info:fedora/afmodel:SampleModel").should == SampleModel
|
113
|
-
ActiveFedora::ContentModel.uri_to_ruby_class("info:fedora/afmodel:NonDefinedModel").should == false
|
114
|
-
ActiveFedora::ContentModel.uri_to_ruby_class("info:fedora/afmodel:String").should == String
|
115
|
-
ActiveFedora::ContentModel.uri_to_ruby_class("info:fedora/hydra-cModel:genericContent").should == GenericContent
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
110
|
describe "uri_to_model_class" do
|
120
111
|
it "should return an ActiveFedora Model class corresponding to the given uri if a valid model can be found" do
|
121
112
|
ActiveFedora::ContentModel.uri_to_model_class("info:fedora/afmodel:SampleModel").should == SampleModel
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 3.1.
|
9
|
+
- 4
|
10
|
+
version: 3.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matt Zumwalt
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-11-
|
19
|
+
date: 2011-11-28 00:00:00 -06:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -209,14 +209,14 @@ dependencies:
|
|
209
209
|
version_requirements: &id013 !ruby/object:Gem::Requirement
|
210
210
|
none: false
|
211
211
|
requirements:
|
212
|
-
- -
|
212
|
+
- - ~>
|
213
213
|
- !ruby/object:Gem::Version
|
214
|
-
hash:
|
214
|
+
hash: 27
|
215
215
|
segments:
|
216
216
|
- 0
|
217
217
|
- 2
|
218
|
-
-
|
219
|
-
version: 0.2.
|
218
|
+
- 6
|
219
|
+
version: 0.2.6
|
220
220
|
requirement: *id013
|
221
221
|
- !ruby/object:Gem::Dependency
|
222
222
|
name: rdf
|
@@ -327,12 +327,12 @@ dependencies:
|
|
327
327
|
requirements:
|
328
328
|
- - ">="
|
329
329
|
- !ruby/object:Gem::Version
|
330
|
-
hash:
|
330
|
+
hash: 19
|
331
331
|
segments:
|
332
332
|
- 1
|
333
|
-
- 0
|
334
333
|
- 1
|
335
|
-
|
334
|
+
- 0
|
335
|
+
version: 1.1.0
|
336
336
|
requirement: *id021
|
337
337
|
- !ruby/object:Gem::Dependency
|
338
338
|
name: rspec
|