umlaut 3.0.0beta3 → 3.0.0beta4
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/store_controller.rb +1 -2
- data/app/controllers/umlaut_controller.rb +5 -0
- data/app/helpers/resolve_helper.rb +14 -2
- data/app/helpers/umlaut/footer_helper.rb +4 -0
- data/app/models/service_response.rb +7 -1
- data/app/views/resolve/_standard_response_item.html.erb +2 -2
- data/db/migrate/01_umlaut_init.rb +1 -10
- data/lib/service_adaptors/amazon.rb +5 -5
- data/lib/tasks/umlaut.rake +62 -43
- data/lib/umlaut/version.rb +1 -1
- data/lib/umlaut_configurable.rb +10 -17
- data/test/dummy/db/migrate/{20120229192032_umlaut_init.umlaut.rb → 20120402191628_umlaut_init.umlaut.rb} +1 -10
- data/test/dummy/db/schema.rb +1 -10
- data/test/dummy/tmp/cache/assets/C45/A30/sprockets%2F39494895e462697b478d3d0c79298a26 +0 -0
- data/test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80 +0 -0
- data/test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41 +0 -0
- data/test/dummy/tmp/cache/assets/CBD/730/sprockets%2F034c1086748b981c36672d5a56e7fed6 +0 -0
- data/test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f +0 -0
- data/test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d +0 -0
- data/test/dummy/tmp/cache/assets/CD1/F20/sprockets%2F385e5fb31cf27e262480d1174be1d500 +0 -0
- data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46 +0 -0
- data/test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398 +0 -0
- data/test/dummy/tmp/cache/assets/D16/F90/sprockets%2F5fe3c021048c6f9a6086bed7736d87b1 +0 -0
- data/test/dummy/tmp/cache/assets/D24/360/sprockets%2F6987b047a96dc685ba3cf39b31477f6d +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D37/2B0/sprockets%2F40834fb07d7318c1fddd5003bd9e04f6 +0 -0
- data/test/dummy/tmp/cache/assets/D43/0D0/sprockets%2F682843a8d0795a5fbcfeb2f0c81727d0 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/D6C/7D0/sprockets%2F8a05d6981ec0d38c51739bef0b3a9c2b +0 -0
- data/test/dummy/tmp/cache/assets/D94/FF0/sprockets%2F3b56a1aa77de0d570c38a4a9d5f4b1d6 +0 -0
- data/test/dummy/tmp/cache/assets/D97/6B0/sprockets%2Fb070e8c799d1a4ad5e62e0a1ae3b83e6 +0 -0
- data/test/dummy/tmp/cache/assets/DC0/D20/sprockets%2F1ccf7405cd252dcec4bf23af82e2563a +0 -0
- data/test/dummy/tmp/cache/assets/DCF/7B0/sprockets%2Ffaa6a4d1af3261fca7b6ddc987386b90 +0 -0
- data/test/dummy/tmp/cache/assets/DD2/D80/sprockets%2Fc66d103807d0f971fbbcf9aa8b8b27ee +0 -0
- data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8 +0 -0
- data/test/dummy/tmp/cache/assets/DF7/960/sprockets%2F99ac6db10b44a64fbba4ee847b35ba8b +0 -0
- data/test/dummy/tmp/cache/assets/DFC/040/sprockets%2F15ea81cf915c0cb1dfc9cc04c9fef364 +0 -0
- data/test/dummy/tmp/cache/assets/DFD/300/sprockets%2Fabac9489cf7f1db8ef00d72a1571ee1e +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6 +0 -0
- metadata +95 -35
@@ -16,9 +16,8 @@ class StoreController < UmlautController
|
|
16
16
|
referent = perm.referent
|
17
17
|
elsif (perm && perm.context_obj_serialized)
|
18
18
|
stored_co = perm.restore_context_object
|
19
|
-
|
20
19
|
# And a referrent, no referrer for now, we'll restore it later.
|
21
|
-
referent = Referent.create_by_context_object( stored_co,
|
20
|
+
referent = Referent.create_by_context_object( stored_co, :permalink => false )
|
22
21
|
perm.referent = referent
|
23
22
|
end
|
24
23
|
|
@@ -30,6 +30,11 @@ class UmlautController < ApplicationController
|
|
30
30
|
# OR name of image asset in local app.
|
31
31
|
#link_img_url "http//something"
|
32
32
|
|
33
|
+
# string used in standard layout footer to identify your app.
|
34
|
+
# mark it html_safe if it includes html
|
35
|
+
# footer_credit "Find It service provided by <a href='http://www.university.edu/'>My University</a>".html_safe
|
36
|
+
|
37
|
+
|
33
38
|
# Sometimes Umlaut sends out email, what email addr should it be from?
|
34
39
|
# from_email_addr 'no_reply@umlaut.example.com'
|
35
40
|
|
@@ -118,6 +118,19 @@ module ResolveHelper
|
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
+
# If response has a :content key returns it -- and marks it html_safe
|
122
|
+
# if response has a :content_html_safe == true key.
|
123
|
+
# returns false if no :content.
|
124
|
+
def response_content(service_response)
|
125
|
+
content = service_response[:content]
|
126
|
+
return false unless content
|
127
|
+
|
128
|
+
content = content.html_safe if service_response[:content_html_safe] == true
|
129
|
+
|
130
|
+
return content
|
131
|
+
end
|
132
|
+
|
133
|
+
|
121
134
|
|
122
135
|
|
123
136
|
# Code-generating helper to add a "More" link to a list, with a maximum
|
@@ -157,9 +170,8 @@ module ResolveHelper
|
|
157
170
|
|
158
171
|
|
159
172
|
content = "".html_safe
|
160
|
-
|
161
173
|
content <<
|
162
|
-
content_tag(:ul, :class =>
|
174
|
+
content_tag(:ul, :class => options[:ul_class]) do
|
163
175
|
list.enum_for(:each_with_index).collect do |item, index|
|
164
176
|
capture(item, index, &block) unless list.length > options[:limit] && index >= options[:limit]-2
|
165
177
|
end.join(" \n ").html_safe
|
@@ -11,6 +11,10 @@ module Umlaut::FooterHelper
|
|
11
11
|
if @collection
|
12
12
|
content = "".html_safe
|
13
13
|
|
14
|
+
if umlaut_config.footer_credit
|
15
|
+
content << umlaut_config.footer_credit + " | "
|
16
|
+
end
|
17
|
+
|
14
18
|
content << "Powered by ".html_safe + link_to("Umlaut", "http://github.com/team_umlaut/umlaut") + ". ".html_safe
|
15
19
|
|
16
20
|
credit_segments = []
|
@@ -70,7 +70,13 @@ These are applicable only when the incoming OpenURL is an article-level citation
|
|
70
70
|
== Abstracts/Tocs:
|
71
71
|
Can be a link to, or actual content. Either way, should be set
|
72
72
|
up to link to source of content if possible. Basic set, plus:
|
73
|
-
[:content] actual content, if available.
|
73
|
+
[:content] actual content, if available.
|
74
|
+
[:content_html_safe] Set to true if content includes html which should be
|
75
|
+
passed through un-escaped. Service is responsible
|
76
|
+
for making sure the HTML is safe from injection
|
77
|
+
attacks (injection attacks from vendor API's? Why not?).
|
78
|
+
ActionView::Helpers::SanitizeHelper's #sanitize
|
79
|
+
method can convenient.
|
74
80
|
|
75
81
|
=end
|
76
82
|
class ServiceResponse < ActiveRecord::Base
|
@@ -26,12 +26,12 @@
|
|
26
26
|
{:id => "svctype_link_#{service_response.id}",
|
27
27
|
:target => "_blank",
|
28
28
|
:class => "ajax_window"}) %>
|
29
|
-
<% elsif (
|
29
|
+
<% elsif (content = response_content(view_data ))
|
30
30
|
#collapsible content on page
|
31
31
|
%>
|
32
32
|
<%= expand_contract_section(view_data[:display_text], "svc_id_#{service_response.id}") do %>
|
33
33
|
<div class="section_content_indent">
|
34
|
-
<%=
|
34
|
+
<%= content %>
|
35
35
|
</div>
|
36
36
|
<% end %>
|
37
37
|
|
@@ -94,16 +94,7 @@ class UmlautInit < ActiveRecord::Migration
|
|
94
94
|
end
|
95
95
|
|
96
96
|
add_index "service_responses", ["service_id", "response_key", "value_string", "value_alt_string"], :name => "svc_resp_service_id"
|
97
|
-
|
98
|
-
create_table "sessions" do |t|
|
99
|
-
t.string "session_id"
|
100
|
-
t.text "data"
|
101
|
-
t.datetime "updated_at"
|
102
|
-
end
|
103
|
-
|
104
|
-
add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
|
105
|
-
add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
|
106
|
-
|
97
|
+
|
107
98
|
create_table "sfx_urls" do |t|
|
108
99
|
t.string "url"
|
109
100
|
end
|
@@ -39,6 +39,7 @@ class Amazon < Service
|
|
39
39
|
|
40
40
|
|
41
41
|
include MetadataHelper
|
42
|
+
include ActionView::Helpers::SanitizeHelper
|
42
43
|
|
43
44
|
required_config_params :url, :api_key, :associate_tag
|
44
45
|
attr_reader :url
|
@@ -181,7 +182,6 @@ class Amazon < Service
|
|
181
182
|
err = (aws.at("ItemLookupResponse/Items/Request/Errors/Error"))
|
182
183
|
err = (aws.at("ItemLookupErrorResponse")) if err.blank?
|
183
184
|
|
184
|
-
debugger
|
185
185
|
unless (err.blank?)
|
186
186
|
if (err.at('Code').text == 'AWS.InvalidParameterValue')
|
187
187
|
# Indicates an ISBN that Amazon doesn't know about, or that
|
@@ -227,9 +227,8 @@ class Amazon < Service
|
|
227
227
|
if ( @service_types.include?("abstract") &&
|
228
228
|
desc =
|
229
229
|
(aws.at("ItemLookupResponse/Items/Item/EditorialReviews/EditorialReview/Content")))
|
230
|
-
|
231
|
-
|
232
|
-
desc_text = CGI.unescapeHTML( desc.inner_text )
|
230
|
+
|
231
|
+
desc_text = desc.inner_text
|
233
232
|
|
234
233
|
unless ( desc_text.blank? )
|
235
234
|
request.add_service_response(
|
@@ -238,7 +237,8 @@ class Amazon < Service
|
|
238
237
|
:url => item_url,
|
239
238
|
:key=>'abstract',
|
240
239
|
:value_string=>asin,
|
241
|
-
:content=>desc_text ,
|
240
|
+
:content=> sanitize(desc_text) ,
|
241
|
+
:content_html_safe => true,
|
242
242
|
:service_type_value => 'abstract')
|
243
243
|
end
|
244
244
|
end
|
data/lib/tasks/umlaut.rake
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
namespace :umlaut do
|
2
2
|
desc "Perform nightly maintenance. Set up in cron."
|
3
|
-
task :nightly_maintenance => [:load_sfx_urls, :
|
3
|
+
task :nightly_maintenance => [:load_sfx_urls, :expire_old_data]
|
4
4
|
|
5
5
|
|
6
6
|
|
@@ -47,44 +47,38 @@ namespace :umlaut do
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
desc "Expire sessions older than config.app_config.session_expire_seconds"
|
51
|
-
task :expire_sessions => :environment do
|
52
|
-
# Assume sessions are in db.
|
53
|
-
# Don't know good way to get the connection associated with sessions,
|
54
|
-
# since there is no model. Assume Request is in the same db.
|
55
|
-
expire_seconds = UmlautController.umlaut_config.lookup!("session_expire_seconds", 1.day)
|
56
|
-
puts "Expiring sessions older than #{expire_seconds} seconds (set with config session_expire_seconds)."
|
57
|
-
Request.connection.execute("delete from sessions where now() - updated_at > #{expire_seconds}")
|
58
|
-
end
|
59
50
|
|
60
51
|
|
61
52
|
desc "Cleanup of database for old data associated with expired sessions etc."
|
62
53
|
task :expire_old_data => :environment do
|
63
54
|
# There are requests, responses, and dispatched_service entries
|
64
55
|
# hanging around for things that may be way old and no longer
|
65
|
-
# need to hang around.
|
66
|
-
# If they are no longer associated with any session, mainly.
|
56
|
+
# need to hang around.
|
67
57
|
|
68
58
|
# Deleting things as aggressively as we're doing here doesn't leave
|
69
59
|
# us much for statistics, but we aren't currently gathering any
|
70
60
|
# statistics anyway. If statistics are needed, more exploration
|
71
61
|
# is needed of performance vs. leaving things around for statistics.
|
72
62
|
|
73
|
-
#
|
74
|
-
#
|
75
|
-
#
|
76
|
-
#
|
77
|
-
|
78
|
-
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
63
|
+
# Current Umlaut never re-uses a request different between sessions,
|
64
|
+
# and never uses Referents between requests.
|
65
|
+
# Permalink architecture has been fixed to not rely on requests or
|
66
|
+
# referents, permalinks (post new architecture) store their own context
|
67
|
+
# object.
|
68
|
+
|
69
|
+
# To make efficient SQL queries to delete 'orphaned' records whose
|
70
|
+
# foreign keys are neccesary... is tricky, with or without AR, and
|
71
|
+
# may vary in different dbs -- this works for MySQL, it's possible
|
72
|
+
# it will have a problem with Postgres, hasn't been tested.
|
82
73
|
|
83
|
-
puts "Deleting Requests no longer associated with a session."
|
84
74
|
begin_time = Time.now
|
85
|
-
|
86
|
-
|
87
|
-
|
75
|
+
|
76
|
+
rdelete_time = Time.now - UmlautController.umlaut_config.lookup!("nightly_maintenance.request_expire_seconds", 1.day)
|
77
|
+
puts "Deleting Requests older than #{rdelete_time}"
|
78
|
+
rdelete = Request.where("created_at < ?", rdelete_time)
|
79
|
+
|
80
|
+
count = rdelete.count
|
81
|
+
rdelete.delete_all
|
88
82
|
puts " Deleted #{count} Requests in #{Time.now - begin_time}"
|
89
83
|
|
90
84
|
|
@@ -96,38 +90,63 @@ namespace :umlaut do
|
|
96
90
|
|
97
91
|
puts "Deleting orphaned ServiceResponses...."
|
98
92
|
begin_time = Time.now
|
99
|
-
|
100
|
-
|
101
|
-
|
93
|
+
# DELETE FROM `service_responses` WHERE (NOT (EXISTS (SELECT `requests`.* FROM `requests` WHERE (service_responses.request_id = requests.id))))
|
94
|
+
sr_delete = ServiceResponse.where(
|
95
|
+
Request.where("#{ServiceResponse.arel_table.name}.request_id = requests.id").exists.not
|
96
|
+
)
|
97
|
+
|
98
|
+
count = sr_delete.count
|
99
|
+
sr_delete.delete_all
|
102
100
|
puts " Deleted #{count} ServiceResponses in #{Time.now - begin_time}"
|
103
101
|
|
104
102
|
|
105
103
|
# And get rid of DispatchedServices for 'dead' requests too. Don't
|
106
104
|
# need em.
|
107
105
|
puts "Deleting DispatchedServices for dead Requests..."
|
106
|
+
keep_failed = UmlautController.umlaut_config.lookup!("nightly_maintenance.failed_dispatch_expire_seconds", 4.weeks)
|
108
107
|
begin_time = Time.now
|
109
|
-
#
|
110
|
-
|
111
|
-
|
112
|
-
|
108
|
+
# DELETE FROM `dispatched_services` WHERE (NOT (EXISTS (SELECT `requests`.* FROM `requests` WHERE (dispatched_services.request_id = requests.id))))
|
109
|
+
ds_delete = DispatchedService.where("status NOT IN (?) OR updated_at < ?",
|
110
|
+
[DispatchedService::FailedFatal, DispatchedService::FailedTemporary], Time.now - keep_failed
|
111
|
+
).where(
|
112
|
+
Request.where("dispatched_services.request_id = requests.id").exists.not
|
113
|
+
)
|
114
|
+
count = ds_delete.count
|
115
|
+
ds_delete.delete_all
|
113
116
|
puts " Deleted #{count} DispatchedServices in #{Time.now - begin_time}"
|
114
117
|
|
115
118
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
referent_expire = Time.now - UmlautController.umlaut_config.lookup!("referent_expire_seconds", 20.days)
|
120
|
-
puts "Deleting Referents/ReferentValues older than #{referent_expire.inspect}"
|
119
|
+
|
120
|
+
|
121
|
+
puts "Deleting orphaned Referents"
|
121
122
|
begin_time = Time.now
|
122
|
-
#
|
123
|
-
|
124
|
-
|
123
|
+
# DELETE FROM `referents` WHERE (NOT (EXISTS (SELECT `requests`.* FROM `requests` WHERE (referents.id = requests.referent_id))))
|
124
|
+
ref_delete = Referent.where(
|
125
|
+
Request.where("referents.id = requests.referent_id").exists.not
|
126
|
+
)
|
127
|
+
count = ref_delete.count
|
128
|
+
ref_delete.delete_all
|
129
|
+
puts " Deleted #{count} Referents in #{Time.now - begin_time}"
|
130
|
+
|
131
|
+
|
132
|
+
puts "Deleting orphaned ReferentValues"
|
133
|
+
begin_time = Time.now
|
134
|
+
# DELETE FROM `referent_values` WHERE (NOT (EXISTS (SELECT `referents`.* FROM `referents` WHERE (referents.id = referent_values.referent_id))))
|
135
|
+
rv_delete = ReferentValue.where(
|
136
|
+
Referent.where("referents.id = referent_values.referent_id").exists.not
|
137
|
+
)
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
count = rv_delete.count
|
142
|
+
rv_delete.delete_all
|
143
|
+
puts " Deleted #{count} ReferentValues in #{Time.now - begin_time}"
|
144
|
+
|
125
145
|
|
126
146
|
# And turns out we have all Clickthroughs being stored for no apparent
|
127
147
|
# reason, let's just delete any older than 3 months ago.
|
128
|
-
Clickthrough.
|
129
|
-
puts "Deleted Clickthroughs older than 3 months"
|
130
|
-
|
148
|
+
Clickthrough.delete_all(['created_at < ?', 3.months.ago])
|
149
|
+
puts "Deleted Clickthroughs older than 3 months"
|
131
150
|
end
|
132
151
|
|
133
152
|
end
|
data/lib/umlaut/version.rb
CHANGED
data/lib/umlaut_configurable.rb
CHANGED
@@ -29,6 +29,10 @@ module UmlautConfigurable
|
|
29
29
|
# URL to image to use for link resolver, OR name of image asset in local app.
|
30
30
|
#link_img_url "http//something"
|
31
31
|
|
32
|
+
# string used in standard layout footer to identify your app.
|
33
|
+
# mark it html_safe if it includes html
|
34
|
+
# footer_credit "Find It service provided by <a href='http://www.university.edu/'>My University</a>".html_safe
|
35
|
+
|
32
36
|
# Sometimes Umlaut sends out email, what email addr should it be from?
|
33
37
|
from_email_addr 'no_reply@umlaut.example.com'
|
34
38
|
|
@@ -134,24 +138,13 @@ module UmlautConfigurable
|
|
134
138
|
entry_not_in_kb_warning true
|
135
139
|
|
136
140
|
nightly_maintenance do
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
referent_expire_seconds deferred! {|c| c.session_expire_seconds }
|
142
|
-
|
141
|
+
# How old does a request have to be to be deleted by nightly_maintenance?
|
142
|
+
# requests are only re-used within a session. Probably no reason to
|
143
|
+
# change this.
|
144
|
+
request_expire_seconds 1.day
|
143
145
|
|
144
|
-
#
|
145
|
-
|
146
|
-
# want to expire them eventually, say every 24 hours.
|
147
|
-
# You can do this in two ways.
|
148
|
-
#
|
149
|
-
# A Number of seconds in an interval, eg:
|
150
|
-
response_expire_interval 1.day
|
151
|
-
#
|
152
|
-
# Or, sometimes it's convenient to synchronize this with some other
|
153
|
-
# process that runs on crontab. Say, expire at midnight every night:
|
154
|
-
# response_expire_crontab_format "00 00 * * *"
|
146
|
+
# How long to keep FAILED DispatchServices, for viewing problems/troubleshooting
|
147
|
+
failed_dispatch_expire_seconds 4.weeks
|
155
148
|
|
156
149
|
end
|
157
150
|
|
@@ -95,16 +95,7 @@ class UmlautInit < ActiveRecord::Migration
|
|
95
95
|
end
|
96
96
|
|
97
97
|
add_index "service_responses", ["service_id", "response_key", "value_string", "value_alt_string"], :name => "svc_resp_service_id"
|
98
|
-
|
99
|
-
create_table "sessions" do |t|
|
100
|
-
t.string "session_id"
|
101
|
-
t.text "data"
|
102
|
-
t.datetime "updated_at"
|
103
|
-
end
|
104
|
-
|
105
|
-
add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
|
106
|
-
add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
|
107
|
-
|
98
|
+
|
108
99
|
create_table "sfx_urls" do |t|
|
109
100
|
t.string "url"
|
110
101
|
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended to check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(:version =>
|
14
|
+
ActiveRecord::Schema.define(:version => 20120402191628) do
|
15
15
|
|
16
16
|
create_table "clickthroughs", :force => true do |t|
|
17
17
|
t.integer "request_id", :default => 0, :null => false
|
@@ -108,15 +108,6 @@ ActiveRecord::Schema.define(:version => 20120229192032) do
|
|
108
108
|
|
109
109
|
add_index "service_responses", ["service_id", "response_key", "value_string", "value_alt_string"], :name => "svc_resp_service_id"
|
110
110
|
|
111
|
-
create_table "sessions", :force => true do |t|
|
112
|
-
t.string "session_id"
|
113
|
-
t.text "data"
|
114
|
-
t.datetime "updated_at"
|
115
|
-
end
|
116
|
-
|
117
|
-
add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
|
118
|
-
add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
|
119
|
-
|
120
111
|
create_table "sfx_urls", :force => true do |t|
|
121
112
|
t.string "url"
|
122
113
|
end
|
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
|
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
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: umlaut
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.0beta4
|
5
5
|
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &223216140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.2.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *223216140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: jquery-rails
|
27
|
-
requirement: &
|
27
|
+
requirement: &223215720 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *223215720
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: nokogiri
|
38
|
-
requirement: &
|
38
|
+
requirement: &224032220 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - =
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.5.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *224032220
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: openurl
|
49
|
-
requirement: &
|
49
|
+
requirement: &224031720 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.3.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *224031720
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: marc
|
60
|
-
requirement: &
|
60
|
+
requirement: &224031240 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.4.3
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *224031240
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: isbn
|
71
|
-
requirement: &
|
71
|
+
requirement: &224030800 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *224030800
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: htmlentities
|
82
|
-
requirement: &
|
82
|
+
requirement: &224030200 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *224030200
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: multi_json
|
93
|
-
requirement: &
|
93
|
+
requirement: &224029580 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *224029580
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: confstruct
|
104
|
-
requirement: &
|
104
|
+
requirement: &224028780 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,21 +109,21 @@ dependencies:
|
|
109
109
|
version: '0.2'
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *224028780
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: exlibris-primo
|
115
|
-
requirement: &
|
115
|
+
requirement: &224028280 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
|
-
- -
|
118
|
+
- - ~>
|
119
119
|
- !ruby/object:Gem::Version
|
120
|
-
version:
|
120
|
+
version: 0.1.0
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *224028280
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: single_test
|
126
|
-
requirement: &
|
126
|
+
requirement: &224027780 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: 0.5.1
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *224027780
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: uglifier
|
137
|
-
requirement: &
|
137
|
+
requirement: &224027200 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *224027200
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: therubyracer
|
148
|
-
requirement: &
|
148
|
+
requirement: &224026480 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ! '>='
|
@@ -153,10 +153,10 @@ dependencies:
|
|
153
153
|
version: '0'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *224026480
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: ruby-prof
|
159
|
-
requirement: &
|
159
|
+
requirement: &224025900 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ! '>='
|
@@ -164,7 +164,7 @@ dependencies:
|
|
164
164
|
version: '0'
|
165
165
|
type: :development
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *224025900
|
168
168
|
description:
|
169
169
|
email:
|
170
170
|
- umlaut-general@rubyforge.org
|
@@ -375,6 +375,36 @@ files:
|
|
375
375
|
- ./test/integration/request_test.rb
|
376
376
|
- ./test/integration/request_reuse_test.rb
|
377
377
|
- ./test/integration/permalinks_test.rb
|
378
|
+
- ./test/dummy/tmp/cache/assets/D16/F90/sprockets%2F5fe3c021048c6f9a6086bed7736d87b1
|
379
|
+
- ./test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8
|
380
|
+
- ./test/dummy/tmp/cache/assets/CD1/F20/sprockets%2F385e5fb31cf27e262480d1174be1d500
|
381
|
+
- ./test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
|
382
|
+
- ./test/dummy/tmp/cache/assets/D94/FF0/sprockets%2F3b56a1aa77de0d570c38a4a9d5f4b1d6
|
383
|
+
- ./test/dummy/tmp/cache/assets/CBD/730/sprockets%2F034c1086748b981c36672d5a56e7fed6
|
384
|
+
- ./test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
|
385
|
+
- ./test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6
|
386
|
+
- ./test/dummy/tmp/cache/assets/D24/360/sprockets%2F6987b047a96dc685ba3cf39b31477f6d
|
387
|
+
- ./test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
|
388
|
+
- ./test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398
|
389
|
+
- ./test/dummy/tmp/cache/assets/DFD/300/sprockets%2Fabac9489cf7f1db8ef00d72a1571ee1e
|
390
|
+
- ./test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46
|
391
|
+
- ./test/dummy/tmp/cache/assets/D43/0D0/sprockets%2F682843a8d0795a5fbcfeb2f0c81727d0
|
392
|
+
- ./test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41
|
393
|
+
- ./test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
|
394
|
+
- ./test/dummy/tmp/cache/assets/D6C/7D0/sprockets%2F8a05d6981ec0d38c51739bef0b3a9c2b
|
395
|
+
- ./test/dummy/tmp/cache/assets/D37/2B0/sprockets%2F40834fb07d7318c1fddd5003bd9e04f6
|
396
|
+
- ./test/dummy/tmp/cache/assets/DFC/040/sprockets%2F15ea81cf915c0cb1dfc9cc04c9fef364
|
397
|
+
- ./test/dummy/tmp/cache/assets/DF7/960/sprockets%2F99ac6db10b44a64fbba4ee847b35ba8b
|
398
|
+
- ./test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f
|
399
|
+
- ./test/dummy/tmp/cache/assets/D97/6B0/sprockets%2Fb070e8c799d1a4ad5e62e0a1ae3b83e6
|
400
|
+
- ./test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d
|
401
|
+
- ./test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80
|
402
|
+
- ./test/dummy/tmp/cache/assets/DCF/7B0/sprockets%2Ffaa6a4d1af3261fca7b6ddc987386b90
|
403
|
+
- ./test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
|
404
|
+
- ./test/dummy/tmp/cache/assets/C45/A30/sprockets%2F39494895e462697b478d3d0c79298a26
|
405
|
+
- ./test/dummy/tmp/cache/assets/DC0/D20/sprockets%2F1ccf7405cd252dcec4bf23af82e2563a
|
406
|
+
- ./test/dummy/tmp/cache/assets/DD2/D80/sprockets%2Fc66d103807d0f971fbbcf9aa8b8b27ee
|
407
|
+
- ./test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
|
378
408
|
- ./test/dummy/tmp/performance/ProfilerTest#test_puts_foo_process_time_graph.html
|
379
409
|
- ./test/dummy/tmp/performance/BenchmarkerTest#test_puts_foo_gc_time.csv
|
380
410
|
- ./test/dummy/tmp/performance/minus.png
|
@@ -419,7 +449,7 @@ files:
|
|
419
449
|
- ./test/dummy/script/rails
|
420
450
|
- ./test/dummy/config.ru
|
421
451
|
- ./test/dummy/db/schema.rb
|
422
|
-
- ./test/dummy/db/migrate/
|
452
|
+
- ./test/dummy/db/migrate/20120402191628_umlaut_init.umlaut.rb
|
423
453
|
- ./test/performance/browsing_test.rb
|
424
454
|
- ./test/unit/aws_product_sign_test.rb
|
425
455
|
- ./test/unit/service_test.rb
|
@@ -451,7 +481,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
451
481
|
version: '0'
|
452
482
|
segments:
|
453
483
|
- 0
|
454
|
-
hash:
|
484
|
+
hash: -556718949677620916
|
455
485
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
456
486
|
none: false
|
457
487
|
requirements:
|
@@ -469,6 +499,36 @@ test_files:
|
|
469
499
|
- ./test/integration/request_test.rb
|
470
500
|
- ./test/integration/request_reuse_test.rb
|
471
501
|
- ./test/integration/permalinks_test.rb
|
502
|
+
- ./test/dummy/tmp/cache/assets/D16/F90/sprockets%2F5fe3c021048c6f9a6086bed7736d87b1
|
503
|
+
- ./test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8
|
504
|
+
- ./test/dummy/tmp/cache/assets/CD1/F20/sprockets%2F385e5fb31cf27e262480d1174be1d500
|
505
|
+
- ./test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
|
506
|
+
- ./test/dummy/tmp/cache/assets/D94/FF0/sprockets%2F3b56a1aa77de0d570c38a4a9d5f4b1d6
|
507
|
+
- ./test/dummy/tmp/cache/assets/CBD/730/sprockets%2F034c1086748b981c36672d5a56e7fed6
|
508
|
+
- ./test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
|
509
|
+
- ./test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6
|
510
|
+
- ./test/dummy/tmp/cache/assets/D24/360/sprockets%2F6987b047a96dc685ba3cf39b31477f6d
|
511
|
+
- ./test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
|
512
|
+
- ./test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398
|
513
|
+
- ./test/dummy/tmp/cache/assets/DFD/300/sprockets%2Fabac9489cf7f1db8ef00d72a1571ee1e
|
514
|
+
- ./test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46
|
515
|
+
- ./test/dummy/tmp/cache/assets/D43/0D0/sprockets%2F682843a8d0795a5fbcfeb2f0c81727d0
|
516
|
+
- ./test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41
|
517
|
+
- ./test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
|
518
|
+
- ./test/dummy/tmp/cache/assets/D6C/7D0/sprockets%2F8a05d6981ec0d38c51739bef0b3a9c2b
|
519
|
+
- ./test/dummy/tmp/cache/assets/D37/2B0/sprockets%2F40834fb07d7318c1fddd5003bd9e04f6
|
520
|
+
- ./test/dummy/tmp/cache/assets/DFC/040/sprockets%2F15ea81cf915c0cb1dfc9cc04c9fef364
|
521
|
+
- ./test/dummy/tmp/cache/assets/DF7/960/sprockets%2F99ac6db10b44a64fbba4ee847b35ba8b
|
522
|
+
- ./test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f
|
523
|
+
- ./test/dummy/tmp/cache/assets/D97/6B0/sprockets%2Fb070e8c799d1a4ad5e62e0a1ae3b83e6
|
524
|
+
- ./test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d
|
525
|
+
- ./test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80
|
526
|
+
- ./test/dummy/tmp/cache/assets/DCF/7B0/sprockets%2Ffaa6a4d1af3261fca7b6ddc987386b90
|
527
|
+
- ./test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
|
528
|
+
- ./test/dummy/tmp/cache/assets/C45/A30/sprockets%2F39494895e462697b478d3d0c79298a26
|
529
|
+
- ./test/dummy/tmp/cache/assets/DC0/D20/sprockets%2F1ccf7405cd252dcec4bf23af82e2563a
|
530
|
+
- ./test/dummy/tmp/cache/assets/DD2/D80/sprockets%2Fc66d103807d0f971fbbcf9aa8b8b27ee
|
531
|
+
- ./test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
|
472
532
|
- ./test/dummy/tmp/performance/ProfilerTest#test_puts_foo_process_time_graph.html
|
473
533
|
- ./test/dummy/tmp/performance/BenchmarkerTest#test_puts_foo_gc_time.csv
|
474
534
|
- ./test/dummy/tmp/performance/minus.png
|
@@ -513,7 +573,7 @@ test_files:
|
|
513
573
|
- ./test/dummy/script/rails
|
514
574
|
- ./test/dummy/config.ru
|
515
575
|
- ./test/dummy/db/schema.rb
|
516
|
-
- ./test/dummy/db/migrate/
|
576
|
+
- ./test/dummy/db/migrate/20120402191628_umlaut_init.umlaut.rb
|
517
577
|
- ./test/performance/browsing_test.rb
|
518
578
|
- ./test/unit/aws_product_sign_test.rb
|
519
579
|
- ./test/unit/service_test.rb
|