hydra-head 3.1.0.pre1 → 3.1.0.pre2

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.
Files changed (47) hide show
  1. data/Gemfile.lock +22 -22
  2. data/RELEASE_NOTES.textile +8 -0
  3. data/app/controllers/assets_controller.rb +6 -5
  4. data/hydra-head.gemspec +1 -1
  5. data/lib/generators/hydra/head_generator.rb +3 -1
  6. data/lib/generators/hydra/templates/config/initializers/blacklight_config.rb +7 -0
  7. data/lib/generators/hydra/templates/solr_conf/conf/schema.xml +7 -1
  8. data/lib/generators/hydra/templates/solr_conf/conf/solrconfig.xml +117 -55
  9. data/lib/hydra-head/version.rb +1 -1
  10. data/lib/hydra/access_controls_enforcement.rb +47 -5
  11. data/lib/railties/hydra-fixtures.rake +1 -1
  12. data/solr_conf/conf/schema.xml +2 -0
  13. data/solr_conf/conf/solrconfig.xml +116 -29
  14. data/test_support/features/absent_model_search_result.feature +2 -8
  15. data/test_support/spec/controllers/catalog_controller_spec.rb +6 -3
  16. data/test_support/spec/helpers/access_controls_enforcement_spec.rb +77 -0
  17. data/test_support/spec/models/hydra_rights_metadata_spec.rb +2 -1
  18. data/vendor/cache/{active-fedora-3.1.0.rc1.gem → active-fedora-3.1.1.gem} +0 -0
  19. data/vendor/cache/curb-0.7.16.gem +0 -0
  20. data/vendor/cache/factory_girl-2.1.2.gem +0 -0
  21. data/vendor/cache/ffi-1.0.9.gem +0 -0
  22. data/vendor/cache/gherkin-2.5.2.gem +0 -0
  23. data/vendor/cache/jettywrapper-1.0.2.gem +0 -0
  24. data/vendor/cache/polyglot-0.3.3.gem +0 -0
  25. data/vendor/cache/rdoc-3.10.gem +0 -0
  26. data/vendor/cache/rspec-2.6.0.gem +0 -0
  27. data/vendor/cache/rspec-core-2.6.4.gem +0 -0
  28. data/vendor/cache/rspec-expectations-2.6.0.gem +0 -0
  29. data/vendor/cache/rspec-mocks-2.6.0.gem +0 -0
  30. data/vendor/cache/rspec-rails-2.6.1.gem +0 -0
  31. data/vendor/cache/rubydora-0.2.3.gem +0 -0
  32. data/vendor/cache/stomp-1.1.10.gem +0 -0
  33. metadata +22 -23
  34. data/vendor/cache/curb-0.7.15.gem +0 -0
  35. data/vendor/cache/factory_girl-2.2.0.gem +0 -0
  36. data/vendor/cache/ffi-1.0.10.gem +0 -0
  37. data/vendor/cache/gherkin-2.5.4.gem +0 -0
  38. data/vendor/cache/jettywrapper-1.0.1.gem +0 -0
  39. data/vendor/cache/polyglot-0.3.2.gem +0 -0
  40. data/vendor/cache/rdoc-3.11.gem +0 -0
  41. data/vendor/cache/rspec-2.7.0.gem +0 -0
  42. data/vendor/cache/rspec-core-2.7.1.gem +0 -0
  43. data/vendor/cache/rspec-expectations-2.7.0.gem +0 -0
  44. data/vendor/cache/rspec-mocks-2.7.0.gem +0 -0
  45. data/vendor/cache/rspec-rails-2.7.0.gem +0 -0
  46. data/vendor/cache/rubydora-0.1.9.gem +0 -0
  47. data/vendor/cache/stomp-1.1.9.gem +0 -0
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hydra-head (3.0.0.rc2)
4
+ hydra-head (3.1.0.pre2)
5
5
  RedCloth (= 4.2.3)
6
- active-fedora (~> 3.1.0.rc1)
6
+ active-fedora (~> 3.1.1)
7
7
  blacklight (= 3.0.0)
8
8
  block_helpers
9
9
  builder
@@ -55,7 +55,7 @@ GEM
55
55
  rack-mount (~> 0.6.14)
56
56
  rack-test (~> 0.5.7)
57
57
  tzinfo (~> 0.3.23)
58
- active-fedora (3.1.0.rc1)
58
+ active-fedora (3.1.1)
59
59
  activeresource (~> 3.0.0)
60
60
  activesupport (~> 3.0.0)
61
61
  equivalent-xml
@@ -67,7 +67,7 @@ GEM
67
67
  om (>= 1.4.3)
68
68
  rdf
69
69
  rdf-rdfxml
70
- rubydora (~> 0.1.9)
70
+ rubydora (= 0.2.3)
71
71
  solr-ruby (>= 0.0.6)
72
72
  solrizer (> 1.0.0)
73
73
  xml-simple (>= 1.0.12)
@@ -120,7 +120,7 @@ GEM
120
120
  capybara (>= 1.1.1)
121
121
  cucumber (>= 1.1.0)
122
122
  nokogiri (>= 1.5.0)
123
- curb (0.7.15)
123
+ curb (0.7.16)
124
124
  daemons (1.1.4)
125
125
  database_cleaner (0.6.7)
126
126
  diff-lcs (1.1.3)
@@ -129,11 +129,11 @@ GEM
129
129
  erubis (2.6.6)
130
130
  abstract (>= 1.0.0)
131
131
  facets (2.8.4)
132
- factory_girl (2.2.0)
132
+ factory_girl (2.1.2)
133
133
  activesupport
134
134
  fastercsv (1.5.4)
135
- ffi (1.0.10)
136
- gherkin (2.5.4)
135
+ ffi (1.0.9)
136
+ gherkin (2.5.2)
137
137
  json (>= 1.4.6)
138
138
  gyoku (0.4.4)
139
139
  builder (>= 2.1.2)
@@ -144,7 +144,7 @@ GEM
144
144
  httpi (0.9.5)
145
145
  rack
146
146
  i18n (0.5.0)
147
- jettywrapper (1.0.1)
147
+ jettywrapper (1.0.2)
148
148
  activesupport (>= 3.0.0)
149
149
  childprocess
150
150
  i18n
@@ -178,7 +178,7 @@ GEM
178
178
  om (1.4.3)
179
179
  mediashelf-loggable
180
180
  nokogiri (>= 1.4.2)
181
- polyglot (0.3.2)
181
+ polyglot (0.3.3)
182
182
  rack (1.2.4)
183
183
  rack-mount (0.6.14)
184
184
  rack (>= 1.0.0)
@@ -205,7 +205,7 @@ GEM
205
205
  rdf-rdfxml (0.3.5)
206
206
  nokogiri (>= 1.4.4)
207
207
  rdf (>= 0.3.4)
208
- rdoc (3.11)
208
+ rdoc (3.10)
209
209
  json (~> 1.4)
210
210
  rest-client (1.6.7)
211
211
  mime-types (>= 1.16)
@@ -213,25 +213,25 @@ GEM
213
213
  builder (>= 2.1.2)
214
214
  rsolr-ext (1.0.3)
215
215
  rsolr (>= 1.0.2)
216
- rspec (2.7.0)
217
- rspec-core (~> 2.7.0)
218
- rspec-expectations (~> 2.7.0)
219
- rspec-mocks (~> 2.7.0)
220
- rspec-core (2.7.1)
221
- rspec-expectations (2.7.0)
216
+ rspec (2.6.0)
217
+ rspec-core (~> 2.6.0)
218
+ rspec-expectations (~> 2.6.0)
219
+ rspec-mocks (~> 2.6.0)
220
+ rspec-core (2.6.4)
221
+ rspec-expectations (2.6.0)
222
222
  diff-lcs (~> 1.1.2)
223
- rspec-mocks (2.7.0)
224
- rspec-rails (2.7.0)
223
+ rspec-mocks (2.6.0)
224
+ rspec-rails (2.6.1)
225
225
  actionpack (~> 3.0)
226
226
  activesupport (~> 3.0)
227
227
  railties (~> 3.0)
228
- rspec (~> 2.7.0)
228
+ rspec (~> 2.6.0)
229
229
  ruby-debug (0.10.4)
230
230
  columnize (>= 0.1)
231
231
  ruby-debug-base (~> 0.10.4.0)
232
232
  ruby-debug-base (0.10.4)
233
233
  linecache (>= 0.3)
234
- rubydora (0.1.9)
234
+ rubydora (0.2.3)
235
235
  activemodel
236
236
  activesupport
237
237
  fastercsv
@@ -269,7 +269,7 @@ GEM
269
269
  rsolr
270
270
  solr-ruby (>= 0.0.6)
271
271
  solrizer (>= 1.0.0)
272
- stomp (1.1.9)
272
+ stomp (1.1.10)
273
273
  term-ansicolor (1.0.7)
274
274
  thor (0.14.6)
275
275
  treetop (1.4.10)
@@ -0,0 +1,8 @@
1
+ h2. 3.0.0
2
+
3
+ If you have been testing out the Release Candidates, you need to add this line to your CatalogController:
4
+
5
+ <pre>
6
+ # This filters out objects that you want to exclude from search results. By default, it filters out FileAssets
7
+ CatalogController.solr_search_params_logic << :exclude_unwanted_models
8
+ </pre>
@@ -12,6 +12,7 @@ class AssetsController < ApplicationController
12
12
  helper :hydra
13
13
 
14
14
  before_filter :search_session, :history_session
15
+ before_filter :load_document, :only => :update # allows other filters to operate on the document before the update method is called
15
16
  before_filter :require_solr
16
17
 
17
18
  # need to include this after the :require_solr/fedora before filters because of the before filter that the workflow provides.
@@ -54,8 +55,6 @@ class AssetsController < ApplicationController
54
55
  # @example Sets the 1st and 2nd "medium" values on the descMetadata datastream in the _PID_ document, overwriting any existing values.
55
56
  # put :update, :id=>"_PID_", "asset"=>{"descMetadata"=>{"medium"=>{"0"=>"Paper Document", "1"=>"Image"}}
56
57
  def update
57
- @document = load_document_from_params
58
-
59
58
  logger.debug("attributes submitted: #{@sanitized_params.inspect}")
60
59
 
61
60
  @response = update_document(@document, @sanitized_params)
@@ -114,10 +113,12 @@ class AssetsController < ApplicationController
114
113
  # This is a method to simply remove the item from SOLR but keep the object in fedora.
115
114
  alias_method :withdraw, :destroy
116
115
 
117
- #def withdraw
118
- #
119
- #end
120
116
  protected
117
+
118
+ def load_document
119
+ @document = load_document_from_params
120
+ end
121
+
121
122
 
122
123
  def mods_assets_update_validation
123
124
  desc_metadata = params[:asset][:descMetadata]
data/hydra-head.gemspec CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.add_dependency "rails", '~> 3.0.10'
16
16
  s.add_dependency "blacklight", '3.0.0'
17
- s.add_dependency "active-fedora", '~>3.1.0.rc1'
17
+ s.add_dependency "active-fedora", '~>3.1.1'
18
18
  s.add_dependency 'builder'
19
19
  s.add_dependency 'columnize'
20
20
  s.add_dependency 'crack'
@@ -119,7 +119,9 @@ EOF
119
119
  "\n before_filter :enforce_access_controls" +
120
120
  "\n before_filter :enforce_viewing_context_for_show_requests, :only=>:show" +
121
121
  "\n # This applies appropriate access controls to all solr queries" +
122
- "\n CatalogController.solr_search_params_logic << :add_access_controls_to_solr_params"
122
+ "\n CatalogController.solr_search_params_logic << :add_access_controls_to_solr_params" +
123
+ "\n # This filters out objects that you want to exclude from search results, like FileAssets" +
124
+ "\n CatalogController.solr_search_params_logic << :exclude_unwanted_models"
123
125
  end
124
126
  else
125
127
  puts " \e[31mFailure\e[0m Could not find #{model_name.underscore}.rb. To add Hydra behaviors to your Blacklight::Catalog Controllers, you must include the Hydra::Controller module in the Controller class definition. See the Hydra::Controller section in the Hydra API Docs for more info."
@@ -42,6 +42,13 @@ Blacklight.configure(:shared) do |config|
42
42
  # TODO: Reorganize facet data structures supplied in config to make simpler
43
43
  # for human reading/writing, kind of like search_fields. Eg,
44
44
  # config[:facet] << {:field_name => "format", :label => "Format", :limit => 10}
45
+ #
46
+ # Hydra uses active_fedora_model_s by default for displaying Format because that field is automatically
47
+ # populated by active-fedora from your RELS-EXT. You can change this to anything you want to use though.
48
+ # for example, the sample Hydra::ModsAsset Datastream Class adds object_type_facet = "Article" in its to_solr method.\
49
+ # You could use that as the format field instead of active_fedora_model_s to have a more nicer value displayed.
50
+ #
51
+ #
45
52
  config[:facet] = {
46
53
  :field_names => (facet_fields = [
47
54
  "object_type_facet",
@@ -1,4 +1,8 @@
1
1
  <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!--
3
+ IMPORTANT
4
+ This copy of the solr schema is only used in the context of testing hydra-head. If you want to make changes available to individual hydra heads, you must apply them to the template in lib/generators/hydra/templates/solr_config
5
+ -->
2
6
  <schema name="Hydra" version="1.1">
3
7
  <!-- For complete comments from the Solr project example schema.xml:
4
8
  http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/schema.xml?view=markup
@@ -91,7 +95,7 @@
91
95
  <field name="format" type="string" indexed="true" stored="true"/>
92
96
  <!-- pub_date is assumed by Blacklight's default configuration, so we must define it here to avoid errors -->
93
97
  <field name="pub_date" type="string" indexed="true" stored="true" multiValued="true"/>
94
-
98
+
95
99
  <dynamicField name="*_i" type="sint" indexed="true" stored="true"/>
96
100
  <dynamicField name="*_s" type="string" indexed="true" stored="true" multiValued="true"/>
97
101
  <dynamicField name="*_l" type="slong" indexed="true" stored="true"/>
@@ -114,5 +118,7 @@
114
118
  <defaultSearchField>text</defaultSearchField>
115
119
  <solrQueryParser defaultOperator="AND" />
116
120
  <copyField source="*_facet" dest="text" />
121
+ <copyField source="*_t" dest="text" />
122
+ <copyField source="*_s" dest="text" />
117
123
 
118
124
  </schema>
@@ -82,51 +82,121 @@
82
82
  </lst>
83
83
  </requestHandler>
84
84
 
85
- <!-- For complete comments from the Solr project example solrconfig.xml:
86
- http://svn.apache.org/repos/asf/lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml
87
- See also:
88
- http://wiki.apache.org/solr/SolrConfigXml
89
- -->
85
+ <!-- Searching ("All Fields") -->
86
+ <requestHandler name="search" class="solr.SearchHandler" default="true">
87
+ <lst name="defaults">
88
+ <str name="defType">dismax</str>
89
+ <str name="echoParams">explicit</str>
90
+ <str name="q.alt">*:*</str>
91
+ <str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>
92
+ <!-- this qf and pf are used by default, if not otherwise specified by
93
+ client. The default blacklight_config will use these for the
94
+ "keywords" search. See the author_qf/author_pf, title_qf, etc
95
+ below, which the default blacklight_config will specify for
96
+ those searches. You may also be interested in:
97
+ http://wiki.apache.org/solr/LocalParams
98
+ -->
99
+ <str name="qf">
100
+ id
101
+ title_t^25000
102
+ text
103
+ active_fedora_model_s
104
+ object_type_facet
105
+ </str>
106
+ <str name="pf">
107
+ id
108
+ title_t^250000
109
+ text^10
110
+ active_fedora_model_s
111
+ object_type_facet
112
+ </str>
113
+ <str name="author_qf">
114
+ author_unstem_search^200
115
+ author_addl_unstem_search^50
116
+ author_t^20
117
+ author_addl_t
118
+ </str>
119
+ <str name="author_pf">
120
+ author_unstem_search^2000
121
+ author_addl_unstem_search^500
122
+ author_t^200
123
+ author_addl_t^10
124
+ </str>
125
+ <str name="title_qf">
126
+ title_unstem_search^50000
127
+ subtitle_unstem_search^25000
128
+ title_addl_unstem_search^10000
129
+ title_t^5000
130
+ subtitle_t^2500
131
+ title_addl_t^100
132
+ title_added_entry_unstem_search^50
133
+ title_added_entry_t^10
134
+ title_series_unstem_search^5
135
+ title_series_t
136
+ </str>
137
+ <str name="title_pf">
138
+ title_unstem_search^500000
139
+ subtitle_unstem_search^250000
140
+ title_addl_unstem_search^100000
141
+ title_t^50000
142
+ subtitle_t^25000
143
+ title_addl_t^1000
144
+ title_added_entry_unstem_search^500
145
+ title_added_entry_t^100
146
+ title_series_t^50
147
+ title_series_unstem_search^10
148
+ </str>
149
+ <str name="subject_qf">
150
+ subject_topic_unstem_search^200
151
+ subject_unstem_search^125
152
+ subject_topic_facet^100
153
+ subject_t^50
154
+ subject_addl_unstem_search^10
155
+ subject_addl_t
156
+ </str>
157
+ <str name="subject_pf">
158
+ subject_topic_unstem_search^2000
159
+ subject_unstem_search^1250
160
+ subject_t^1000
161
+ subject_topic_facet^500
162
+ subject_addl_unstem_search^100
163
+ subject_addl_t^10
164
+ </str>
90
165
 
91
- <requestHandler name="search" class="solr.SearchHandler" default="true">
92
- <lst name="defaults">
93
- <!-- Making defType lucene to exclude file assets -->
94
- <str name="defType">lucene</str>
95
- <!-- lucene params -->
96
- <str name="df">has_model_s</str>
97
- <str name="q.op">AND</str>
98
- <!-- dismax params -->
99
- <str name="mm"> 2&lt;-1 5&lt;-2 6&lt;90% </str>
100
- <str name="q.alt">*:*</str>
101
- <str name="qf_dismax">id^0.8 id_t^0.8 title_t^0.3 mods_t^0.2</str>
102
- <str name="pf_dismax">id^0.9 id_t^0.9 title_t^0.5 mods_t^0.2</str>
103
- <int name="ps">100</int>
104
- <float name="tie">0.01</float>
105
- <!-- general -->
106
- <str name="facet">on</str>
107
- <str name="facet.mincount">1</str>
108
- <str name="echoParams">explicit</str>
109
- <str name="fl">
110
- id,title_t,date_t,year_facet,month_facet,has_model_s,has_collection_member_s,is_part_of_s,system_create_dt,
111
- person_0_role_t,person_1_role_t,person_2_role_t,person_3_role_t,person_4_role_t,person_5_role_t,person_6_role_t,
112
- person_7_role_t,person_8_role_t,person_9_role_t,
113
- person_0_first_name_t,person_1_first_name_t,person_2_first_name_t,person_3_first_name_t,person_4_first_name_t,
114
- person_5_first_name_t,person_6_first_name_t,person_7_first_name_t,person_8_first_name_t,person_9_first_name_t,
115
- person_0_last_name_t,person_1_last_name_t,person_2_last_name_t,person_3_last_name_t,person_4_last_name_t,
116
- person_5_last_name_t,person_6_last_name_t,person_7_last_name_t,person_8_last_name_t,person_9_last_name_t,
117
- status_t,subject_t,depositor_t,
118
- journal_title_info_t,journal_issue_publication_date_t,
119
- journal_issue_pages_end_t,journal_issue_volume_t,journal_title_info_main_title_t,journal_issue_pages_start_t,
120
- journal_issue_start_page_t, journal_issue_end_page_t, abstract_t,
121
- person_0_institution_t,person_1_institution_t,person_2_institution_t,person_3_institution_t,person_4_institution_t,person_5_institution_t,person_institution_role_t,
122
- person_7_institution_t,person_8_institution_t,person_9_institution_t,
123
- mods_gps_t, mods_region_t, mods_site_t, mods_ecosystem_t,
124
- mods_timespan_start_t, mods_timespan_end_t, description_t, mods_title_info_main_title_t, mods_0_title_info_0_main_title_t, embargo_release_date_dt, note_t,
125
- object_type_facet, department_facet, peer_reviewed_facet
126
- </str>
127
- </lst>
128
- </requestHandler>
129
-
166
+
167
+ <int name="ps">3</int>
168
+ <float name="tie">0.01</float>
169
+
170
+ <!-- NOT using marc_display because it is large and will slow things down for search results -->
171
+ <str name="fl">
172
+ *,score
173
+ </str>
174
+
175
+ <str name="facet">true</str>
176
+ <str name="facet.mincount">1</str>
177
+ <str name="facet.limit">10</str>
178
+ <str name="facet.field">format</str>
179
+ <str name="facet.field">lc_1letter_facet</str>
180
+ <str name="facet.field">lc_alpha_facet</str>
181
+ <str name="facet.field">lc_b4cutter_facet</str>
182
+ <str name="facet.field">language_facet</str>
183
+ <str name="facet.field">pub_date</str>
184
+ <str name="facet.field">subject_era_facet</str>
185
+ <str name="facet.field">subject_geo_facet</str>
186
+ <str name="facet.field">subject_topic_facet</str>
187
+
188
+ <str name="spellcheck">true</str>
189
+ <str name="spellcheck.dictionary">default</str>
190
+ <str name="spellcheck.onlyMorePopular">true</str>
191
+ <str name="spellcheck.extendedResults">true</str>
192
+ <str name="spellcheck.collate">false</str>
193
+ <str name="spellcheck.count">5</str>
194
+ </lst>
195
+ <arr name="last-components">
196
+ <str>spellcheck</str>
197
+ </arr>
198
+ </requestHandler>
199
+
130
200
  <requestHandler name="public_search" class="solr.SearchHandler" >
131
201
  <lst name="defaults">
132
202
  <!-- Making defType lucene to exclude file assets -->
@@ -137,6 +207,8 @@
137
207
  <!-- dismax params -->
138
208
  <str name="mm"> 2&lt;-1 5&lt;-2 6&lt;90% </str>
139
209
  <str name="q.alt">*:*</str>
210
+ <str name="qf">id^0.8 id_t^0.8 format text^0.3 journal_issn_t</str>
211
+ <str name="pf">id^0.9 id_t^0.9 text^0.5 journal_issn_t</str>
140
212
  <str name="qf_dismax">id^0.8 id_t^0.8 format text^0.3</str>
141
213
  <str name="pf_dismax">id^0.9 id_t^0.9 text^0.5</str>
142
214
  <int name="ps">100</int>
@@ -146,17 +218,7 @@
146
218
  <str name="facet.mincount">1</str>
147
219
  <str name="echoParams">explicit</str>
148
220
  <str name="fl">
149
- id,text,title_t,date_t,year_facet,month_facet,medium_t,series_facet,box_facet,folder_facet,has_model_s,has_collection_member_s,system_create_dt,
150
- person_0_role_t,person_1_role_t,person_2_role_t,person_3_role_t,person_4_role_t,person_5_role_t,person_6_role_t,person_7_role_t,person_8_role_t,person_9_role_t,
151
- person_0_first_name_t,person_1_first_name_t,person_2_first_name_t,person_3_first_name_t,person_4_first_name_t,person_5_first_name_t,person_6_first_name_t,person_7_first_name_t,person_8_first_name_t,person_9_first_name_t,
152
- person_0_last_name_t,person_1_last_name_t,person_2_last_name_t,person_3_last_name_t,person_4_last_name_t,person_5_last_name_t,person_6_last_name_t,person_7_last_name_t,person_8_last_name_t,person_9_last_name_t,depositor_t,
153
-
154
- journal_title_info_t, journal_title_info_main_title_t, journal_issue_publication_date_t, journal_issue_pages_start_t, journal_issue_pages_end_t, journal_issue_volume_t, journal_issue_start_page_t, journal_issue_end_page_t, abstract_t,
155
- person_0_institution_t,person_1_institution_t,person_2_institution_t,person_3_institution_t,person_4_institution_t,person_5_institution_t,person_institution_role_t,
156
- person_7_institution_t,person_8_institution_t,person_9_institution_t,
157
- mods_gps_t, mods_region_t, mods_site_t, mods_ecosystem_t,
158
- mods_timespan_start_t, mods_timespan_end_t, description_t, mods_title_info_t,mods_0_title_info_0_main_title_t, embargo_release_date_dt, note_t,
159
- object_type_facet, department_facet, peer_reviewed_facet
221
+ *,score
160
222
  </str>
161
223
  </lst>
162
224
  </requestHandler>
@@ -1,4 +1,4 @@
1
1
  module HydraHead
2
- VERSION = "3.1.0.pre1"
2
+ VERSION = "3.1.0.pre2"
3
3
  end
4
4
 
@@ -172,13 +172,46 @@ module Hydra::AccessControlsEnforcement
172
172
  # @param solr_parameters the current solr parameters
173
173
  # @param user_parameters the current user-subitted parameters
174
174
  def apply_gated_discovery(solr_parameters, user_parameters)
175
- # solr_parameters[:q] ||= []
176
- solr_parameters[:q] = build_lucene_query(params[:q])
177
- # @extra_controller_params ||= {}
178
- # @extra_controller_params.merge!(:q=>build_lucene_query(params[:q]))
179
- logger.debug("Solr query: #{ solr_parameters[:q] }")
175
+ solr_parameters[:fq] ||= []
176
+ # Grant access to public content
177
+ permission_types = ["edit","discover","read"]
178
+ user_access_filters = []
179
+
180
+ permission_types.each do |type|
181
+ user_access_filters << "#{type}_access_group_t:public"
182
+ end
183
+
184
+ # Grant access based on user id & role
185
+ unless current_user.nil?
186
+ # for roles
187
+ RoleMapper.roles(current_user.login).each_with_index do |role, i|
188
+ permission_types.each do |type|
189
+ user_access_filters << "#{type}_access_group_t:#{role}"
190
+ end
191
+ end
192
+ # for individual person access
193
+ permission_types.each do |type|
194
+ user_access_filters << "#{type}_access_person_t:#{current_user.login}"
195
+ end
196
+ if current_user.is_being_superuser?(session)
197
+ permission_types.each do |type|
198
+ user_access_filters << "#{type}_access_person_t:[* TO *]"
199
+ end
200
+ end
201
+
202
+ # Enforcing Embargo at Query time has been disabled.
203
+ # If you want to do this, set up your own solr_search_params before_filter that injects the appropriate :fq constraints for a field that expresses your objects' embargo status.
204
+ #
205
+ # include docs in results if the embargo date is NOT in the future OR if the current user is depositor
206
+ # embargo_query = "(NOT embargo_release_date_dt:[NOW TO *]) OR depositor_t:#{current_user.login}"
207
+ # embargo_query = "(NOT embargo_release_date_dt:[NOW TO *]) OR (embargo_release_date_dt:[NOW TO *] AND depositor_t:#{current_user.login}) AND NOT (NOT depositor_t:#{current_user.login} AND embargo_release_date_dt:[NOW TO *])"
208
+ # solr_parameters[:fq] << embargo_query
209
+ end
210
+ solr_parameters[:fq] << user_access_filters.join(" OR ")
211
+ logger.debug("Solr parameters: #{ solr_parameters.inspect }")
180
212
  end
181
213
 
214
+
182
215
  # proxy for {enforce_index_permissions}
183
216
  def enforce_search_permissions
184
217
  enforce_index_permissions
@@ -188,10 +221,19 @@ module Hydra::AccessControlsEnforcement
188
221
  def enforce_read_permissions
189
222
  enforce_show_permissions
190
223
  end
224
+
225
+ # This filters out objects that you want to exclude from search results. By default it only excludes FileAssets
226
+ # @param solr_parameters the current solr parameters
227
+ # @param user_parameters the current user-subitted parameters
228
+ def exclude_unwanted_models(solr_parameters, user_parameters)
229
+ solr_parameters[:fq] ||= []
230
+ solr_parameters[:fq] << "-has_model_s:\"info:fedora/afmodel:FileAsset\""
231
+ end
191
232
 
192
233
  # Build the lucene query that performs gated discovery based on Hydra rightsMetadata information in Solr
193
234
  # @param [String] user_query the user's original query request that will be wrapped in access controls
194
235
  def build_lucene_query(user_query)
236
+ logger.warn("DEPRECATED: build_lucene_query has been deprecated. Recommended convention is to use blacklight's dismax search requestHandler (not lucene) and filter queries with :fq solr parameters. See Hydra::AccessControlsEnforcement#apply_gated_discovery and Hydra::AccessControlsEnforcement#exclude_unwanted_models")
195
237
  q = ""
196
238
  # start query of with user supplied query term
197
239
  q << "_query_:\"{!dismax qf=$qf_dismax pf=$pf_dismax}#{user_query}\" AND " if user_query
@@ -25,7 +25,7 @@ namespace :hydra do
25
25
  end
26
26
 
27
27
  desc "Delete the object identified by pid. Example: rake hydra:delete pid=demo:12"
28
- task :delete => :init do
28
+ task :delete => :environment do
29
29
  # If a destination url has been provided, attampt to export from the fedora repository there.
30
30
  if ENV["destination"]
31
31
  Fedora::Repository.register(ENV["destination"])
@@ -118,5 +118,7 @@ This copy of the solr schema is only used in the context of testing hydra-head.
118
118
  <defaultSearchField>text</defaultSearchField>
119
119
  <solrQueryParser defaultOperator="AND" />
120
120
  <copyField source="*_facet" dest="text" />
121
+ <copyField source="*_t" dest="text" />
122
+ <copyField source="*_s" dest="text" />
121
123
 
122
124
  </schema>
@@ -82,36 +82,121 @@
82
82
  </lst>
83
83
  </requestHandler>
84
84
 
85
- <!-- For complete comments from the Solr project example solrconfig.xml:
86
- http://svn.apache.org/repos/asf/lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml
87
- See also:
88
- http://wiki.apache.org/solr/SolrConfigXml
89
- -->
85
+ <!-- Searching ("All Fields") -->
86
+ <requestHandler name="search" class="solr.SearchHandler" default="true">
87
+ <lst name="defaults">
88
+ <str name="defType">dismax</str>
89
+ <str name="echoParams">explicit</str>
90
+ <str name="q.alt">*:*</str>
91
+ <str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>
92
+ <!-- this qf and pf are used by default, if not otherwise specified by
93
+ client. The default blacklight_config will use these for the
94
+ "keywords" search. See the author_qf/author_pf, title_qf, etc
95
+ below, which the default blacklight_config will specify for
96
+ those searches. You may also be interested in:
97
+ http://wiki.apache.org/solr/LocalParams
98
+ -->
99
+ <str name="qf">
100
+ id
101
+ title_t^25000
102
+ text
103
+ active_fedora_model_s
104
+ object_type_facet
105
+ </str>
106
+ <str name="pf">
107
+ id
108
+ title_t^250000
109
+ text^10
110
+ active_fedora_model_s
111
+ object_type_facet
112
+ </str>
113
+ <str name="author_qf">
114
+ author_unstem_search^200
115
+ author_addl_unstem_search^50
116
+ author_t^20
117
+ author_addl_t
118
+ </str>
119
+ <str name="author_pf">
120
+ author_unstem_search^2000
121
+ author_addl_unstem_search^500
122
+ author_t^200
123
+ author_addl_t^10
124
+ </str>
125
+ <str name="title_qf">
126
+ title_unstem_search^50000
127
+ subtitle_unstem_search^25000
128
+ title_addl_unstem_search^10000
129
+ title_t^5000
130
+ subtitle_t^2500
131
+ title_addl_t^100
132
+ title_added_entry_unstem_search^50
133
+ title_added_entry_t^10
134
+ title_series_unstem_search^5
135
+ title_series_t
136
+ </str>
137
+ <str name="title_pf">
138
+ title_unstem_search^500000
139
+ subtitle_unstem_search^250000
140
+ title_addl_unstem_search^100000
141
+ title_t^50000
142
+ subtitle_t^25000
143
+ title_addl_t^1000
144
+ title_added_entry_unstem_search^500
145
+ title_added_entry_t^100
146
+ title_series_t^50
147
+ title_series_unstem_search^10
148
+ </str>
149
+ <str name="subject_qf">
150
+ subject_topic_unstem_search^200
151
+ subject_unstem_search^125
152
+ subject_topic_facet^100
153
+ subject_t^50
154
+ subject_addl_unstem_search^10
155
+ subject_addl_t
156
+ </str>
157
+ <str name="subject_pf">
158
+ subject_topic_unstem_search^2000
159
+ subject_unstem_search^1250
160
+ subject_t^1000
161
+ subject_topic_facet^500
162
+ subject_addl_unstem_search^100
163
+ subject_addl_t^10
164
+ </str>
90
165
 
91
- <requestHandler name="search" class="solr.SearchHandler" default="true">
92
- <lst name="defaults">
93
- <!-- Making defType lucene to exclude file assets -->
94
- <str name="defType">lucene</str>
95
- <!-- lucene params -->
96
- <str name="df">has_model_s</str>
97
- <str name="q.op">AND</str>
98
- <!-- dismax params -->
99
- <str name="mm"> 2&lt;-1 5&lt;-2 6&lt;90% </str>
100
- <str name="q.alt">*:*</str>
101
- <str name="qf_dismax">id^0.8 id_t^0.8 title_t^0.3 mods_t^0.2</str>
102
- <str name="pf_dismax">id^0.9 id_t^0.9 title_t^0.5 mods_t^0.2</str>
103
- <int name="ps">100</int>
104
- <float name="tie">0.01</float>
105
- <!-- general -->
106
- <str name="facet">on</str>
107
- <str name="facet.mincount">1</str>
108
- <str name="echoParams">explicit</str>
109
- <str name="fl">
110
- *,score
111
- </str>
112
- </lst>
113
- </requestHandler>
114
-
166
+
167
+ <int name="ps">3</int>
168
+ <float name="tie">0.01</float>
169
+
170
+ <!-- NOT using marc_display because it is large and will slow things down for search results -->
171
+ <str name="fl">
172
+ *,score
173
+ </str>
174
+
175
+ <str name="facet">true</str>
176
+ <str name="facet.mincount">1</str>
177
+ <str name="facet.limit">10</str>
178
+ <str name="facet.field">format</str>
179
+ <str name="facet.field">lc_1letter_facet</str>
180
+ <str name="facet.field">lc_alpha_facet</str>
181
+ <str name="facet.field">lc_b4cutter_facet</str>
182
+ <str name="facet.field">language_facet</str>
183
+ <str name="facet.field">pub_date</str>
184
+ <str name="facet.field">subject_era_facet</str>
185
+ <str name="facet.field">subject_geo_facet</str>
186
+ <str name="facet.field">subject_topic_facet</str>
187
+
188
+ <str name="spellcheck">true</str>
189
+ <str name="spellcheck.dictionary">default</str>
190
+ <str name="spellcheck.onlyMorePopular">true</str>
191
+ <str name="spellcheck.extendedResults">true</str>
192
+ <str name="spellcheck.collate">false</str>
193
+ <str name="spellcheck.count">5</str>
194
+ </lst>
195
+ <arr name="last-components">
196
+ <str>spellcheck</str>
197
+ </arr>
198
+ </requestHandler>
199
+
115
200
  <requestHandler name="public_search" class="solr.SearchHandler" >
116
201
  <lst name="defaults">
117
202
  <!-- Making defType lucene to exclude file assets -->
@@ -122,6 +207,8 @@
122
207
  <!-- dismax params -->
123
208
  <str name="mm"> 2&lt;-1 5&lt;-2 6&lt;90% </str>
124
209
  <str name="q.alt">*:*</str>
210
+ <str name="qf">id^0.8 id_t^0.8 format text^0.3 journal_issn_t</str>
211
+ <str name="pf">id^0.9 id_t^0.9 text^0.5 journal_issn_t</str>
125
212
  <str name="qf_dismax">id^0.8 id_t^0.8 format text^0.3</str>
126
213
  <str name="pf_dismax">id^0.9 id_t^0.9 text^0.5</str>
127
214
  <int name="ps">100</int>
@@ -1,14 +1,8 @@
1
1
  Feature: Objects Without Models - Search Results
2
2
  I want to see appropriate information in search results for objects without an (active)fedora model
3
3
 
4
- Scenario: Have a Search Result that is an Object Without a Model
5
- Given I am logged in as "archivist1@example.com"
6
- And I am on the home page
7
- And I fill in "q" with "test"
8
- When I press "submit"
9
- Then I should see a link to "the show document page for hydra:test_no_model"
10
-
11
- # you can't see this object unless you are an editor
4
+ # Objects without a model, are not ever displayed because they don't have rightsMetadata
5
+
12
6
  Scenario: html5 valid - unauthenticated
13
7
  When I am on the home page
14
8
  And I fill in "q" with "test"
@@ -60,8 +60,10 @@ describe CatalogController do
60
60
 
61
61
  describe "access controls" do
62
62
  before(:all) do
63
- @public_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"public"}]
64
- @private_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"private"}]
63
+ @public_only_results = Blacklight.solr.find Hash[:fq=>"access_t:public"]
64
+ # @public_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"public"}]
65
+ # @private_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"private"}]
66
+ @private_only_results = Blacklight.solr.find Hash[:fq=>"access_t:private"]
65
67
  end
66
68
 
67
69
  it "should only return public documents if role does not have permissions" do
@@ -72,7 +74,8 @@ describe CatalogController do
72
74
  it "should return all documents if role does have permissions" do
73
75
  User.any_instance.stubs(:login).returns("BigWig")
74
76
  mock_user = User.new
75
- session[:superuser_mode] = true
77
+ # session[:superuser_mode] = true
78
+ mock_user.stubs(:is_being_superuser?).returns(true)
76
79
  controller.stubs(:current_user).returns(mock_user)
77
80
  get :index
78
81
  assigns(:document_list).count.should > @public_only_results.docs.count
@@ -2,6 +2,83 @@
2
2
  require File.expand_path( File.join( File.dirname(__FILE__),'..','spec_helper') )
3
3
 
4
4
  describe Hydra::AccessControlsEnforcement do
5
+
6
+ describe "apply_gated_discovery" do
7
+ before(:each) do
8
+ @stub_user = User.new :email=>'archivist1@example.com'
9
+ @stub_user.stubs(:is_being_superuser?).returns false
10
+ @stub_user.stubs(:login).returns "fred"
11
+ RoleMapper.stubs(:roles).with(@stub_user.login).returns(["archivist","researcher"])
12
+ helper.stubs(:current_user).returns(@stub_user)
13
+ @solr_parameters = {}
14
+ @user_parameters = {}
15
+ end
16
+ it "should set query fields for the user id checking against the discover, access, read fields" do
17
+ helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
18
+ ["discover","edit","read"].each do |type|
19
+ @solr_parameters[:fq].first.should match(/#{type}_access_person_t\:#{@stub_user.login}/)
20
+ end
21
+ end
22
+ it "should set query fields for all roles the user is a member of checking against the discover, access, read fields" do
23
+ helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
24
+ ["discover","edit","read"].each do |type|
25
+ @solr_parameters[:fq].first.should match(/#{type}_access_group_t\:archivist/)
26
+ @solr_parameters[:fq].first.should match(/#{type}_access_group_t\:researcher/)
27
+ end
28
+ end
29
+ # it "should filter out any content whose embargo date is in the future" do
30
+ # helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
31
+ # @solr_parameters[:fq].should include("-embargo_release_date_dt:[NOW TO *]")
32
+ # end
33
+ it "should allow content owners access to their embargoed content" do
34
+ pending
35
+ helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
36
+ @solr_parameters[:fq].should include("(NOT embargo_release_date_dt:[NOW TO *]) OR depositor_t:#{@stub_user.login}")
37
+
38
+ # @solr_parameters[:fq].should include("embargo_release_date_dt:[NOW TO *] AND depositor_t:#{current_user.login}) AND NOT (NOT depositor_t:#{current_user.login} AND embargo_release_date_dt:[NOW TO *]")
39
+ end
40
+
41
+ describe "for superusers" do
42
+ it "should return superuser access level" do
43
+ stub_user = User.new
44
+ stub_user.stubs(:login).returns "suzie"
45
+ stub_user.stubs(:is_being_superuser?).returns true
46
+ RoleMapper.stubs(:roles).with(stub_user.login).returns(["archivist","researcher"])
47
+ helper.stubs(:current_user).returns(stub_user)
48
+ helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
49
+ ["discover","edit","read"].each do |type|
50
+ @solr_parameters[:fq].first.should match(/#{type}_access_person_t\:\[\* TO \*\]/)
51
+ end
52
+ end
53
+ it "should not return superuser access to non-superusers" do
54
+ stub_user = User.new
55
+ stub_user.stubs(:login).returns "suzie"
56
+ stub_user.stubs(:is_being_superuser?).returns false
57
+ RoleMapper.stubs(:roles).with(stub_user.login).returns(["archivist","researcher"])
58
+ helper.stubs(:current_user).returns(stub_user)
59
+ helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
60
+ ["discover","edit","read"].each do |type|
61
+ @solr_parameters[:fq].should_not include("#{type}_access_person_t\:\[\* TO \*\]")
62
+ end
63
+ end
64
+ end
65
+
66
+ end
67
+
68
+ describe "exclude_unwanted_models" do
69
+ before(:each) do
70
+ stub_user = User.new :email=>'archivist1@example.com'
71
+ stub_user.stubs(:is_being_superuser?).returns false
72
+ helper.stubs(:current_user).returns(stub_user)
73
+ @solr_parameters = {}
74
+ @user_parameters = {}
75
+ end
76
+ it "should set solr query parameters to filter out FileAssets" do
77
+ helper.send(:exclude_unwanted_models, @solr_parameters, @user_parameters)
78
+ @solr_parameters[:fq].should include("-has_model_s:\"info:fedora/afmodel:FileAsset\"")
79
+ end
80
+ end
81
+
5
82
  describe "build_lucene_query" do
6
83
 
7
84
  it "should return fields for all roles the user is a member of checking against the discover, access, read fields" do
@@ -5,7 +5,8 @@ require "nokogiri"
5
5
  describe Hydra::RightsMetadata do
6
6
 
7
7
  before(:each) do
8
- ActiveFedora::RubydoraConnection.stubs(:instance).returns(stub_everything())
8
+ # The way RubyDora loads objects prevents us from stubbing the fedora connection :(
9
+ # ActiveFedora::RubydoraConnection.stubs(:instance).returns(stub_everything())
9
10
  obj = ActiveFedora::Base.new
10
11
  @sample = Hydra::RightsMetadata.new(obj.inner_object, nil)
11
12
  @sample.stubs(:content).returns('')
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-head
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1923832027
4
+ hash: 1923832029
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
9
  - 0
10
10
  - pre
11
- - 1
12
- version: 3.1.0.pre1
11
+ - 2
12
+ version: 3.1.0.pre2
13
13
  platform: ruby
14
14
  authors:
15
15
  - Matt Zumwalt, Bess Sadler, Julie Meloni, Naomi Dushay, Jessie Keck, John Scofield, Justin Coyne & many more. See https://github.com/projecthydra/hydra-head/contributors
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-10-27 00:00:00 -05:00
20
+ date: 2011-11-10 00:00:00 -08:00
21
21
  default_executable:
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
@@ -60,14 +60,12 @@ dependencies:
60
60
  requirements:
61
61
  - - ~>
62
62
  - !ruby/object:Gem::Version
63
- hash: 15424103
63
+ hash: 1
64
64
  segments:
65
65
  - 3
66
66
  - 1
67
- - 0
68
- - rc
69
67
  - 1
70
- version: 3.1.0.rc1
68
+ version: 3.1.1
71
69
  type: :runtime
72
70
  version_requirements: *id003
73
71
  - !ruby/object:Gem::Dependency
@@ -745,6 +743,7 @@ files:
745
743
  - README_RAKE_TASKS.textile
746
744
  - README_SUBTREE.textile
747
745
  - README_TERSE.textile
746
+ - RELEASE_NOTES.textile
748
747
  - Rakefile
749
748
  - TESTING.textile
750
749
  - TESTING_PLUGIN.textile
@@ -1166,7 +1165,7 @@ files:
1166
1165
  - vendor/cache/abstract-1.0.0.gem
1167
1166
  - vendor/cache/actionmailer-3.0.10.gem
1168
1167
  - vendor/cache/actionpack-3.0.10.gem
1169
- - vendor/cache/active-fedora-3.1.0.rc1.gem
1168
+ - vendor/cache/active-fedora-3.1.1.gem
1170
1169
  - vendor/cache/activemodel-3.0.10.gem
1171
1170
  - vendor/cache/activerecord-3.0.10.gem
1172
1171
  - vendor/cache/activeresource-3.0.10.gem
@@ -1183,23 +1182,23 @@ files:
1183
1182
  - vendor/cache/crack-0.3.1.gem
1184
1183
  - vendor/cache/cucumber-1.1.0.gem
1185
1184
  - vendor/cache/cucumber-rails-1.1.1.gem
1186
- - vendor/cache/curb-0.7.15.gem
1185
+ - vendor/cache/curb-0.7.16.gem
1187
1186
  - vendor/cache/daemons-1.1.4.gem
1188
1187
  - vendor/cache/database_cleaner-0.6.7.gem
1189
1188
  - vendor/cache/diff-lcs-1.1.3.gem
1190
1189
  - vendor/cache/equivalent-xml-0.2.8.gem
1191
1190
  - vendor/cache/erubis-2.6.6.gem
1192
1191
  - vendor/cache/facets-2.8.4.gem
1193
- - vendor/cache/factory_girl-2.2.0.gem
1192
+ - vendor/cache/factory_girl-2.1.2.gem
1194
1193
  - vendor/cache/fastercsv-1.5.4.gem
1195
- - vendor/cache/ffi-1.0.10.gem
1196
- - vendor/cache/gherkin-2.5.4.gem
1194
+ - vendor/cache/ffi-1.0.9.gem
1195
+ - vendor/cache/gherkin-2.5.2.gem
1197
1196
  - vendor/cache/gyoku-0.4.4.gem
1198
1197
  - vendor/cache/haml-3.1.3.gem
1199
1198
  - vendor/cache/httparty-0.8.1.gem
1200
1199
  - vendor/cache/httpi-0.9.5.gem
1201
1200
  - vendor/cache/i18n-0.5.0.gem
1202
- - vendor/cache/jettywrapper-1.0.1.gem
1201
+ - vendor/cache/jettywrapper-1.0.2.gem
1203
1202
  - vendor/cache/json-1.6.1.gem
1204
1203
  - vendor/cache/json_pure-1.6.1.gem
1205
1204
  - vendor/cache/kaminari-0.12.4.gem
@@ -1218,7 +1217,7 @@ files:
1218
1217
  - vendor/cache/nokogiri-1.5.0.gem
1219
1218
  - vendor/cache/nori-1.0.2.gem
1220
1219
  - vendor/cache/om-1.4.3.gem
1221
- - vendor/cache/polyglot-0.3.2.gem
1220
+ - vendor/cache/polyglot-0.3.3.gem
1222
1221
  - vendor/cache/rack-1.2.4.gem
1223
1222
  - vendor/cache/rack-mount-0.6.14.gem
1224
1223
  - vendor/cache/rack-test-0.5.7.gem
@@ -1228,18 +1227,18 @@ files:
1228
1227
  - vendor/cache/rbx-require-relative-0.0.5.gem
1229
1228
  - vendor/cache/rdf-0.3.4.1.gem
1230
1229
  - vendor/cache/rdf-rdfxml-0.3.5.gem
1231
- - vendor/cache/rdoc-3.11.gem
1230
+ - vendor/cache/rdoc-3.10.gem
1232
1231
  - vendor/cache/rest-client-1.6.7.gem
1233
1232
  - vendor/cache/rsolr-1.0.2.gem
1234
1233
  - vendor/cache/rsolr-ext-1.0.3.gem
1235
- - vendor/cache/rspec-2.7.0.gem
1236
- - vendor/cache/rspec-core-2.7.1.gem
1237
- - vendor/cache/rspec-expectations-2.7.0.gem
1238
- - vendor/cache/rspec-mocks-2.7.0.gem
1239
- - vendor/cache/rspec-rails-2.7.0.gem
1234
+ - vendor/cache/rspec-2.6.0.gem
1235
+ - vendor/cache/rspec-core-2.6.4.gem
1236
+ - vendor/cache/rspec-expectations-2.6.0.gem
1237
+ - vendor/cache/rspec-mocks-2.6.0.gem
1238
+ - vendor/cache/rspec-rails-2.6.1.gem
1240
1239
  - vendor/cache/ruby-debug-0.10.4.gem
1241
1240
  - vendor/cache/ruby-debug-base-0.10.4.gem
1242
- - vendor/cache/rubydora-0.1.9.gem
1241
+ - vendor/cache/rubydora-0.2.3.gem
1243
1242
  - vendor/cache/rubyzip-0.9.4.gem
1244
1243
  - vendor/cache/sanitize-2.0.3.gem
1245
1244
  - vendor/cache/savon-0.9.7.gem
@@ -1247,7 +1246,7 @@ files:
1247
1246
  - vendor/cache/solr-ruby-0.0.8.gem
1248
1247
  - vendor/cache/solrizer-1.1.2.gem
1249
1248
  - vendor/cache/solrizer-fedora-1.1.3.gem
1250
- - vendor/cache/stomp-1.1.9.gem
1249
+ - vendor/cache/stomp-1.1.10.gem
1251
1250
  - vendor/cache/term-ansicolor-1.0.7.gem
1252
1251
  - vendor/cache/thor-0.14.6.gem
1253
1252
  - vendor/cache/treetop-1.4.10.gem
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file