active-fedora 11.1.1 → 11.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/History.txt +11 -0
- data/lib/active_fedora.rb +16 -1
- data/lib/active_fedora/aggregation/base_extension.rb +3 -1
- data/lib/active_fedora/associations/collection_association.rb +1 -1
- data/lib/active_fedora/associations/contained_finder.rb +2 -1
- data/lib/active_fedora/associations/rdf.rb +1 -1
- data/lib/active_fedora/null_logger.rb +5 -0
- data/lib/active_fedora/railtie.rb +1 -0
- data/lib/active_fedora/solr_service.rb +3 -0
- data/lib/active_fedora/version.rb +1 -1
- data/spec/integration/indexing_spec.rb +1 -1
- data/spec/integration/query_result_builder_spec.rb +2 -2
- data/spec/lib/active_fedora/null_logger_spec.rb +10 -0
- data/spec/unit/solr_service_spec.rb +12 -4
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b27e9aa8b8f46d2a0e3207ba20da3aa25d553bac
|
4
|
+
data.tar.gz: 8aac94771d8015432aa789bf807e514c6211be15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bc2ac85b840d7a5c8085a3d80d6407a6e3f315bf51fe7bd804b29818e375a939c9baf71560e6c1459f149d6cc6835af14e71128229d3255d87edaf818d3851e
|
7
|
+
data.tar.gz: d0c5f0849a3de8577174e28feda066fa61c53f5a8d30b6d27b6ffc1c2f4eb45c4c353a8ff6a188afb36eec98ebcac5f3111da7cbe0c51c9bd875b719b55420e7
|
data/.travis.yml
CHANGED
data/History.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
v11.1.2
|
2
|
+
2017-01-25: Eager load all the code in eager_load blocks [Justin Coyne]
|
3
|
+
|
4
|
+
2017-01-25: Eager load ActiveFedora [Justin Coyne]
|
5
|
+
|
6
|
+
2017-01-24: Ensuring up to date system gems [Jeremy Friesen]
|
7
|
+
|
8
|
+
2017-01-18: Warn if you don't pass :rows to SolrService.query [Justin Coyne]
|
9
|
+
|
10
|
+
2017-01-13: Ensuring NullLogger responds to logging questions [Jeremy Friesen]
|
11
|
+
|
1
12
|
v11.1.1
|
2
13
|
2017-01-13: Don't modify passed in attributes [Justin Coyne]
|
3
14
|
|
data/lib/active_fedora.rb
CHANGED
@@ -72,7 +72,6 @@ module ActiveFedora #:nodoc:
|
|
72
72
|
autoload :FilePersistence
|
73
73
|
autoload :FileRelation
|
74
74
|
autoload :FilesHash
|
75
|
-
autoload :Filter
|
76
75
|
autoload :FixityService
|
77
76
|
autoload :Identifiable
|
78
77
|
autoload :Indexers
|
@@ -263,6 +262,22 @@ module ActiveFedora #:nodoc:
|
|
263
262
|
true
|
264
263
|
end
|
265
264
|
end
|
265
|
+
|
266
|
+
# ActiveSupport::Autoload automatically defines
|
267
|
+
# an eager_load! method. In this case, we are
|
268
|
+
# extending the method to also eager load the
|
269
|
+
# components inside ActiveFedora.
|
270
|
+
def eager_load!
|
271
|
+
super
|
272
|
+
ActiveFedora::Scoping.eager_load!
|
273
|
+
ActiveFedora::Aggregation.eager_load!
|
274
|
+
ActiveFedora::Associations.eager_load!
|
275
|
+
ActiveFedora::Attributes.eager_load!
|
276
|
+
ActiveFedora::AttributeMethods.eager_load!
|
277
|
+
ActiveFedora::Indexers.eager_load!
|
278
|
+
ActiveFedora::Indexing.eager_load!
|
279
|
+
ActiveFedora::Orders.eager_load!
|
280
|
+
end
|
266
281
|
end
|
267
282
|
|
268
283
|
self.configurator ||= ActiveFedora::FileConfigurator.new
|
@@ -8,7 +8,9 @@ module ActiveFedora::Aggregation
|
|
8
8
|
|
9
9
|
def ordered_by_ids
|
10
10
|
if id.present?
|
11
|
-
|
11
|
+
query = "{!join from=proxy_in_ssi to=id}ordered_targets_ssim:#{id}"
|
12
|
+
rows = ActiveFedora::SolrService::MAX_ROWS
|
13
|
+
ActiveFedora::SolrService.query(query, rows: rows).map { |x| x["id"] }
|
12
14
|
else
|
13
15
|
[]
|
14
16
|
end
|
@@ -301,7 +301,7 @@ module ActiveFedora
|
|
301
301
|
def find_target
|
302
302
|
# TODO: don't reify, just store the solr results and lazily reify.
|
303
303
|
# For now, we set a hard limit of 1000 results.
|
304
|
-
records = ActiveFedora::QueryResultBuilder.reify_solr_results(load_from_solr(rows:
|
304
|
+
records = ActiveFedora::QueryResultBuilder.reify_solr_results(load_from_solr(rows: SolrService::MAX_ROWS))
|
305
305
|
records.each { |record| set_inverse_instance(record) }
|
306
306
|
records
|
307
307
|
rescue ObjectNotFoundError, Ldp::Gone => e
|
@@ -42,7 +42,8 @@ module ActiveFedora::Associations
|
|
42
42
|
query = ActiveFedora::SolrQueryBuilder.construct_query_for_rel(
|
43
43
|
[[:has_model, proxy_class.to_rdf_representation], [:proxyFor, record.id]]
|
44
44
|
)
|
45
|
-
ActiveFedora::SolrService
|
45
|
+
rows = ActiveFedora::SolrService::MAX_ROWS
|
46
|
+
ActiveFedora::SolrService.query(query, fl: 'id', rows: rows).map(&:rdf_uri)
|
46
47
|
end
|
47
48
|
end
|
48
49
|
end
|
@@ -61,7 +61,7 @@ module ActiveFedora
|
|
61
61
|
def filter_by_class(candidate_uris)
|
62
62
|
return [] if candidate_uris.empty?
|
63
63
|
ids = candidate_uris.map { |uri| ActiveFedora::Base.uri_to_id(uri) }
|
64
|
-
results = ActiveFedora::SolrService.query(ActiveFedora::SolrQueryBuilder.construct_query_for_ids(ids), rows:
|
64
|
+
results = ActiveFedora::SolrService.query(ActiveFedora::SolrQueryBuilder.construct_query_for_ids(ids), rows: SolrService::MAX_ROWS)
|
65
65
|
|
66
66
|
results.select { |result| result.model? reflection.klass }.map(&:rdf_uri)
|
67
67
|
end
|
@@ -6,5 +6,10 @@ module ActiveFedora
|
|
6
6
|
# allows all the usual logger method calls (warn, info, error, etc.)
|
7
7
|
def add(*)
|
8
8
|
end
|
9
|
+
|
10
|
+
# In the NullLogger there are no levels, so none of these should be true.
|
11
|
+
[:debug?, :info?, :warn?, :error?, :fatal?].each do |method_name|
|
12
|
+
define_method(method_name) { false }
|
13
|
+
end
|
9
14
|
end
|
10
15
|
end
|
@@ -2,6 +2,7 @@ module ActiveFedora
|
|
2
2
|
class Railtie < Rails::Railtie
|
3
3
|
config.app_middleware.insert_after ::ActionDispatch::Callbacks,
|
4
4
|
ActiveFedora::LdpCache
|
5
|
+
config.eager_load_namespaces << ActiveFedora
|
5
6
|
|
6
7
|
initializer 'active_fedora.autoload', before: :set_autoload_paths do |app|
|
7
8
|
app.config.autoload_paths << 'app/models/datastreams'
|
@@ -4,6 +4,8 @@ module ActiveFedora
|
|
4
4
|
class SolrService
|
5
5
|
attr_writer :conn
|
6
6
|
|
7
|
+
MAX_ROWS = 10_000
|
8
|
+
|
7
9
|
def initialize(options = {})
|
8
10
|
@options = { read_timeout: 120, open_timeout: 120, url: 'http://localhost:8080/solr' }.merge(options)
|
9
11
|
end
|
@@ -42,6 +44,7 @@ module ActiveFedora
|
|
42
44
|
end
|
43
45
|
|
44
46
|
def query(query, args = {})
|
47
|
+
Base.logger.warn "Calling ActiveFedora::SolrService.get without passing an explicit value for ':rows' is not recommended. You will end up with Solr's default (usually set to 10)\nCalled by #{caller[0]}" unless args.key?(:rows)
|
45
48
|
result = get(query, args)
|
46
49
|
result['response']['docs'].map do |doc|
|
47
50
|
ActiveFedora::SolrHit.new(doc)
|
@@ -83,7 +83,7 @@ describe ActiveFedora::Base do
|
|
83
83
|
before { gf.update(permissions_attributes: [{ id: p1.id, _destroy: 'true' }]) }
|
84
84
|
|
85
85
|
it "saves to solr correctly" do
|
86
|
-
result = ActiveFedora::SolrService.query("id:#{gf.id}").first['permissions_ssim']
|
86
|
+
result = ActiveFedora::SolrService.query("id:#{gf.id}", rows: 10).first['permissions_ssim']
|
87
87
|
expect(result).to eq [p2.id]
|
88
88
|
end
|
89
89
|
end
|
@@ -19,7 +19,7 @@ describe ActiveFedora::QueryResultBuilder do
|
|
19
19
|
|
20
20
|
it "returns an array of objects that are of the class stored in active_fedora_model_s" do
|
21
21
|
query = ActiveFedora::SolrQueryBuilder.construct_query_for_ids([test_object.id, foo_object.id])
|
22
|
-
solr_result = ActiveFedora::SolrService.query(query)
|
22
|
+
solr_result = ActiveFedora::SolrService.query(query, rows: 10)
|
23
23
|
result = described_class.reify_solr_results(solr_result)
|
24
24
|
expect(result.length).to eq 2
|
25
25
|
result.each do |r|
|
@@ -29,7 +29,7 @@ describe ActiveFedora::QueryResultBuilder do
|
|
29
29
|
|
30
30
|
it '#reifies a lightweight object as a new instance' do
|
31
31
|
query = ActiveFedora::SolrQueryBuilder.construct_query_for_ids([foo_object.id])
|
32
|
-
solr_result = ActiveFedora::SolrService.query(query)
|
32
|
+
solr_result = ActiveFedora::SolrService.query(query, rows: 10)
|
33
33
|
result = described_class.reify_solr_results(solr_result, load_from_solr: true)
|
34
34
|
expect(result.first).to be_instance_of FooObject
|
35
35
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe ActiveFedora::NullLogger do
|
4
|
+
[:debug?, :info?, :warn?, :error?, :fatal?].each do |method_name|
|
5
|
+
describe "##{method_name}" do
|
6
|
+
subject { described_class.new.public_send(method_name) }
|
7
|
+
it { is_expected.to be_falsey }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -62,15 +62,23 @@ describe ActiveFedora::SolrService do
|
|
62
62
|
describe "#query" do
|
63
63
|
let(:doc) { { 'id' => 'x' } }
|
64
64
|
let(:docs) { [doc] }
|
65
|
+
let(:stub_result) { { 'response' => { 'docs' => docs } } }
|
66
|
+
before do
|
67
|
+
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
68
|
+
end
|
65
69
|
|
66
70
|
it "wraps the solr response documents in Solr hits" do
|
67
|
-
|
68
|
-
|
69
|
-
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
70
|
-
result = described_class.query('querytext')
|
71
|
+
expect(mock_conn).to receive(:get).with('select', params: { rows: 2, q: 'querytext', qt: 'standard' }).and_return(stub_result)
|
72
|
+
result = described_class.query('querytext', rows: 2)
|
71
73
|
expect(result.size).to eq 1
|
72
74
|
expect(result.first.id).to eq 'x'
|
73
75
|
end
|
76
|
+
|
77
|
+
it "warns about not passing rows" do
|
78
|
+
allow(mock_conn).to receive(:get).and_return(stub_result)
|
79
|
+
expect(ActiveFedora::Base.logger).to receive(:warn).with(/^Calling ActiveFedora::SolrService\.get without passing an explicit value for ':rows' is not recommended/)
|
80
|
+
described_class.query('querytext')
|
81
|
+
end
|
74
82
|
end
|
75
83
|
|
76
84
|
describe ".count" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 11.1.
|
4
|
+
version: 11.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-01-
|
13
|
+
date: 2017-01-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rsolr
|
@@ -582,6 +582,7 @@ files:
|
|
582
582
|
- spec/integration/solr_hit_spec.rb
|
583
583
|
- spec/integration/versionable_spec.rb
|
584
584
|
- spec/integration/with_metadata_spec.rb
|
585
|
+
- spec/lib/active_fedora/null_logger_spec.rb
|
585
586
|
- spec/rcov.opts
|
586
587
|
- spec/spec.opts
|
587
588
|
- spec/spec_helper.rb
|