hydra-head 3.1.0.pre1 → 3.1.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
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