Skip to content

Instantly share code, notes, and snippets.

@jendiamond
Last active November 9, 2021 20:28
Show Gist options
  • Save jendiamond/b76dceaa7afd7eb99996b7b0f3a55d03 to your computer and use it in GitHub Desktop.
Save jendiamond/b76dceaa7afd7eb99996b7b0f3a55d03 to your computer and use it in GitHub Desktop.
Amalgamated Samvera backup

Amalgamated Samvera backup

Welcome to the amalgamated-samvera wiki!

Setting up a Dev workspace

Prefered Setup


  • Native-style - Use this if you are comfortable setting-up your own rails environment; this is the standard within the community and expected if you attend the advanced Samvera camp.

  • VM-Style - Use this if you'd like a more automated process of setting-up your rails environment that you don't need configure yourself.

  • There is also a Vagrant Embark environment for replicating a production-like set-up; Do not use this for development purposes.


Fedora - http://localhost:8984/fcrepo/rest
Solr - http://localhost:8983/solr/#/
Hyrax/Apache - http://localhost:3000/
Sidekiq - http://localhost:3000/sidekiq


Developer Resources

RUBY RAILS TESTING RELEASE MANAGER
Learning Ruby Learning Rails Testing Frameworks Release Manager

amalgamated-samvera

Tracking repository for project team issues and version controlled documentation

Add a collapsible Text Block in Markdown

The code...

## collapsible markdown?

<details><summary>CLICK ME</summary>

### Add the markdown you want to hide here.

Purr for no reason i like fish. Poop in a handbag look delicious and drink 
the soapy mopping up water then puke giant foamy fur-balls chase ball of string. 
Headbutt owner's knee push your water glass on the floor, i will ruin the couch 
with my claws, or fart in owners food . Run at 3am scream for no reason at 4 am 
dream about hunting birds stare at guinea pigs who's the baby, and why must they 
do that, but please stop looking at your phone and pet me. Small kitty warm kitty 
little balls of fur. 

</details>

What the code looks like...

CLICK ME

Add the markdown you want to hide here.

Purr for no reason i like fish. Poop in a handbag look delicious and drink the soapy mopping up water then puke giant foamy fur-balls chase ball of string. Headbutt owner's knee push your water glass on the floor, i will ruin the couch with my claws, or fart in owners food . Run at 3am scream for no reason at 4 am dream about hunting birds stare at guinea pigs who's the baby, and why must they do that, but please stop looking at your phone and pet me. Small kitty warm kitty little balls of fur.

Accessibility Testing with pa11y

https://bitsofco.de/pa11y/

pa11y

pa11y, pronounced pally, is a set of free and open source tools that aims to make designing and developing accessibility easier. They have a number of different projects to help with this, for example a web dashboard interface, but I will be focusing on 2 of their projects: pa11y and pa11y-ci.

Getting Started with pa11y

Install the core package, pa11y.

$ npm install -g pa11y

This gives us access to the command pa11y, which we can use to run a simple accessibility audit on a particular url.

$ pa11y https://ursus.library.ucla.edu/

Californica Gems WIP

~> - pessimistic version constraint Limits versions to a subset of the possible versions. So ~> 2.0.0 means ">= 2.0.0 and < 2.1.0" in version numbers.


These Gems come with a new installation of Rails out of the box

development & test only gems

group :development, :test do

development only gems


We included these gems

Californica's Routes

Be sure to scroll to the right to view the Controller Action.
This is a bit more viewable here: https://gist.github.com/jendiamond/5eabed110d864a74b3be7228b6939619

Prefix Verb URI Pattern Controller#Action
importer_documentation_guide GET /importer_documentation/guide(.:format) importer_documentation#guide
importer_documentation_csv GET /importer_documentation/csv(.:format) importer_documentation#csv
csv_imports GET /csv_imports(.:format) csv_imports#index
- POST /csv_imports(.:format) csv_imports#create
new_csv_import GET /csv_imports/new(.:format) csv_imports#new
csv_import GET /csv_imports/:id(.:format) csv_imports#show
preview_csv_import POST /csv_imports/preview(.:format) csv_imports#preview
csv_imports_preview GET /csv_imports/preview(.:format) redirect(301, csv_imports/new)
- GET /csv_imports(.:format) csv_imports#index
- POST /csv_imports(.:format) csv_imports#create
- GET /csv_imports/new(.:format) csv_imports#new
- GET /csv_imports/:id(.:format) csv_imports#show
- GET /csv_imports/:id/log(.:format) csv_imports#log
branding_info GET /branding_info/:id(.:format) branding_info#show
root GET / catalog#index
riiif - /images Riiif::Engine
blacklight - / Blacklight::Engine
search_catalog GET POST /catalog(.:format)
track_catalog POST /catalog/:id/track(.:format) catalog#track
opensearch_catalog GET /catalog/opensearch(.:format) catalog#opensearch
facet_catalog GET /catalog/facet/:id(.:format) catalog#facet
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session GET /users/sign_out(.:format) devise/sessions#destroy
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
user_password PATCH /users/password(.:format) devise/passwords#update
- PUT /users/password(.:format) devise/passwords#update
- POST /users/password(.:format) devise/passwords#create
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
user_registration PATCH /users(.:format) devise/registrations#update
- PUT /users(.:format) devise/registrations#update
- DELETE /users(.:format) devise/registrations#destroy
- POST /users(.:format) devise/registrations#create
role_management - / Hydra::RoleManagement::Engine
qa - /authorities Qa::Engine
hyrax - / Hyrax::Engine
welcome_index GET /welcome(.:format) welcome#index
edit_upload_set GET /upload_sets/:id/edit(.:format) upload_sets#edit
upload_set PATCH /upload_sets/:id(.:format) upload_sets#update
PUT /upload_sets/:id(.:format) upload_sets#update
hyrax_workflow_action PATCH /concern/workflow_actions/:id(.:format) hyrax/workflow_actions#update
- PUT /concern/workflow_actions/:id(.:format) hyrax/workflow_actions#update
hyrax_works POST /concern/works(.:format) hyrax/works#create
new_hyrax_work GET /concern/works/new(.:format) hyrax/works#new
edit_hyrax_work GET /concern/works/:id/edit(.:format) hyrax/works#edit
hyrax_work GET /concern/works/:id(.:format) hyrax/works#show
- PATCH /concern/works/:id(.:format) hyrax/works#update
- PUT /concern/works/:id(.:format) hyrax/works#update
- DELETE /concern/works/:id(.:format) hyrax/works#destroy
manifest_hyrax_work GET /concern/works/:id/manifest(.:format) hyrax/works#manifest
file_manager_hyrax_work GET /concern/works/:id/file_manager(.:format) hyrax/works#file_manager
inspect_work_hyrax_work GET /concern/works/:id/inspect_work(.:format) hyrax/works#inspect_work
hyrax_child_works POST /concern/child_works(.:format) hyrax/child_works#create
new_hyrax_child_work GET /concern/child_works/new(.:format) hyrax/child_works#new
edit_hyrax_child_work GET /concern/child_works/:id/edit(.:format) hyrax/child_works#edit
hyrax_child_work GET /concern/child_works/:id(.:format) hyrax/child_works#show
- PATCH /concern/child_works/:id(.:format) hyrax/child_works#update
- PUT /concern/child_works/:id(.:format) hyrax/child_works#update
- DELETE /concern/child_works/:id(.:format) hyrax/child_works#destroy
manifest_hyrax_child_work GET /concern/child_works/:id/manifest(.:format) hyrax/child_works#manifest
file_manager_hyrax_child_work GET /concern/child_works/:id/file_manager(.:format) hyrax/child_works#file_manager
inspect_work_hyrax_child_work GET /concern/child_works/:id/inspect_work(.:format) hyrax/child_works#inspect_work
hyrax_parent_works POST /concern/parent/:parent_id/works(.:format) hyrax/works#create
new_hyrax_parent_work GET /concern/parent/:parent_id/works/new(.:format) hyrax/works#new
edit_hyrax_parent_work GET /concern/parent/:parent_id/works/:id/edit(.:format) hyrax/works#edit
hyrax_parent_work GET /concern/parent/:parent_id/works/:id(.:format) hyrax/works#show
- PATCH /concern/parent/:parent_id/works/:id(.:format) hyrax/works#update
- PUT /concern/parent/:parent_id/works/:id(.:format) hyrax/works#update
- DELETE /concern/parent/:parent_id/works/:id(.:format) hyrax/works#destroy
hyrax_parent_child_works POST /concern/parent/:parent_id/child_works(.:format) hyrax/child_works#create
new_hyrax_parent_child_work GET /concern/parent/:parent_id/child_works/new(.:format) hyrax/child_works#new
edit_hyrax_parent_child_work GET /concern/parent/:parent_id/child_works/:id/edit(.:format) hyrax/child_works#edit
hyrax_parent_child_work GET /concern/parent/:parent_id/child_works/:id(.:format) hyrax/child_works#show
- PATCH /concern/parent/:parent_id/child_works/:id(.:format) hyrax/child_works#update
- PUT /concern/parent/:parent_id/child_works/:id(.:format) hyrax/child_works#update
- DELETE /concern/parent/:parent_id/child_works/:id(.:format) hyrax/child_works#destroy
hyrax_parent_file_set GET /concern/parent/:parent_id/file_sets/:id(.:format) hyrax/file_sets#show
confirm_hyrax_permission GET /concern/permissions/:id/confirm(.:format) hyrax/permissions#confirm
copy_hyrax_permission POST /concern/permissions/:id/copy(.:format) hyrax/permissions#copy
versions_hyrax_file_set GET /concern/file_sets/:id/versions(.:format) hyrax/file_sets#versions
rollback_hyrax_file_set PUT /concern/file_sets/:id/rollback(.:format) hyrax/file_sets#rollback
edit_hyrax_file_set GET /concern/file_sets/:id/edit(.:format) hyrax/file_sets#edit
hyrax_file_set GET /concern/file_sets/:id(.:format) hyrax/file_sets#show
- PATCH /concern/file_sets/:id(.:format) hyrax/file_sets#update
- PUT /concern/file_sets/:id(.:format) hyrax/file_sets#update
- DELETE /concern/file_sets/:id(.:format) hyrax/file_sets#destroy
email_solr_document GET POST /catalog/:id/email(.:format)
sms_solr_document GET POST /catalog/:id/sms(.:format)
citation_solr_document GET /catalog/:id/citation(.:format) catalog#citation
email_solr_documents GET POST /catalog/email(.:format)
sms_solr_documents GET POST /catalog/sms(.:format)
citation_solr_documents GET /catalog/citation(.:format) catalog#citation
solr_document GET /catalog/:id(.:format) catalog#show
email_bookmark GET POST /bookmarks/:id/email(.:format)
sms_bookmark GET POST /bookmarks/:id/sms(.:format)
citation_bookmark GET /bookmarks/:id/citation(.:format) bookmarks#citation
email_bookmarks GET POST /bookmarks/email(.:format)
sms_bookmarks GET POST /bookmarks/sms(.:format)
citation_bookmarks GET /bookmarks/citation(.:format) bookmarks#citation
clear_bookmarks DELETE /bookmarks/clear(.:format) bookmarks#clear
bookmarks GET /bookmarks(.:format) bookmarks#index
POST /bookmarks(.:format) bookmarks#create
new_bookmark GET /bookmarks/new(.:format) bookmarks#new
edit_bookmark GET /bookmarks/:id/edit(.:format) bookmarks#edit
bookmark GET /bookmarks/:id(.:format) bookmarks#show
- PATCH /bookmarks/:id(.:format) bookmarks#update
- PUT /bookmarks/:id(.:format) bookmarks#update
- DELETE /bookmarks/:id(.:format) bookmarks#destroy
sidekiq_web - /sidekiq Sidekiq::Web

Routes for Riiif::Engine

Prefix Verb URI Pattern Controller#Action
image GET /:id/:region/:size/:rotation/:quality.:format riiif/images#show {:format=>"jpg", :rotation=>/[\w.]+/, :region=>"full", :quality=>"default", :model=>"riiif/image", :size=>/(!
info GET /:id/info.json(.:format) riiif/images#info {:format=>"json", :model=>"riiif/image"}
base GET /:id(.:format) riiif/images#redirect

Routes for Blacklight::Engine

Prefix Verb URI Pattern Controller#Action
search_history GET /search_history(.:format) search_history#index
clear_search_history DELETE /search_history/clear(.:format) search_history#clear
clear_saved_searches DELETE /saved_searches/clear(.:format) saved_searches#clear
saved_searches GET /saved_searches(.:format) saved_searches#index
save_search PUT /saved_searches/save/:id(.:format) saved_searches#save
forget_search DELETE /saved_searches/forget/:id(.:format) saved_searches#forget
- POST /saved_searches/forget/:id(.:format) saved_searches#forget
track_search_context POST /catalog/:id/track(.:format) catalog#track {:id=>/[\w-]+/}
suggest_index GET /suggest(.:format) suggest#index {:format=>"json"}

Routes for Hydra::RoleManagement::Engine

Prefix Verb URI Pattern Controller#Action
role_users POST /roles/:role_id/users(.:format) user_roles#create
role_user DELETE /roles/:role_id/users/:id(.:format) user_roles#destroy
roles GET /roles(.:format) roles#index
- POST /roles(.:format) roles#create
new_role GET /roles/new(.:format) roles#new
edit_role GET /roles/:id/edit(.:format) roles#edit
role GET /roles/:id(.:format) roles#show
- PATCH /roles/:id(.:format) roles#update
- PUT /roles/:id(.:format) roles#update
- DELETE /roles/:id(.:format) roles#destroy

Routes for Qa::Engine

Prefix Verb URI Pattern Controller#Action
list_linked_data_authorities GET /list/linked_data/authorities(.:format) qa/linked_data_terms#list
reload_linked_data_authorities GET /reload/linked_data/authorities(.:format) qa/linked_data_terms#reload
- GET /search/linked_data/:vocab(/:subauthority)(.:format) qa/linked_data_terms#search
- GET /fetch/linked_data/:vocab(.:format) qa/linked_data_terms#fetch
- GET /show/linked_data/:vocab/:id(.:format) qa/linked_data_terms#show
- GET /show/linked_data/:vocab/:subauthority/:id(.:format) qa/linked_data_terms#show
- GET /terms/:vocab(/:subauthority)(.:format) qa/terms#index
- GET /search/:vocab(/:subauthority)(.:format) qa/terms#search
- GET /show/:vocab/:id(.:format) qa/terms#show
- GET /show/:vocab/:subauthority/:id(.:format) qa/terms#show
- OPTIONS /search/linked_data/:vocab(/:subauthority)(.:format) qa/application#options
- OPTIONS /show/linked_data/:vocab/:id(.:format) qa/application#options
- OPTIONS /show/linked_data/:vocab/:subauthority/:id(.:format) qa/application#options
- OPTIONS /terms/:vocab(/:subauthority)(.:format) qa/application#options
- OPTIONS /search/:vocab(/:subauthority)(.:format) qa/application#options
- OPTIONS /show/:vocab/:id(.:format) qa/application#options
- OPTIONS /show/:vocab/:subauthority/:id(.:format) qa/application#options

Routes for Hyrax::Engine

Prefix Verb URI Pattern Controller#Action
homepage_index GET /homepage(.:format) hyrax/homepage#index
root GET / hyrax/homepage#index
- GET /files/:id(.:format) redirect(301, /concern/generic_works/%{id})
download GET /downloads/:id(.:format) hyrax/downloads#show
source_description GET /.well-known/resourcesync(.:format) hyrax/resource_sync#source_description
capability_list GET /capabilitylist(.:format) hyrax/resource_sync#capability_list
resource_list GET /resourcelist(.:format) hyrax/resource_sync#resource_list
change_list GET /changelist(.:format) hyrax/resource_sync#change_list
uploaded_file DELETE /uploads/:id(.:format) hyrax/uploads#destroy
uploads POST /uploads(.:format) hyrax/uploads#create
PATCH /uploads(.:format) hyrax/uploads#create
batch_edits_clear GET POST /batch_edits/clear(.:format)
batch_edit DELETE /batch_edits/:id(.:format) hyrax/batch_edits#destroy
batch_edits GET /batch_edits(.:format) hyrax/batch_edits#index
edit_batch_edits GET /batch_edits/edit(.:format) hyrax/batch_edits#edit
PUT /batch_edits(.:format) hyrax/batch_edits#update
clear_batch_edits DELETE /batch_edits/clear(.:format) hyrax/batch_edits#clear
state_batch_edits PUT /batch_edits/state(.:format) hyrax/batch_edits#state
all_batch_edits PUT /batch_edits/all(.:format) hyrax/batch_edits#all
- GET /batch_edits(.:format) hyrax/batch_edits#index
- PUT /batch_edits/:id(.:format) hyrax/batch_edits#add
- DELETE /batch_edits(.:format) hyrax/batch_edits#destroy_collection
batch_uploads POST /batch_uploads(.:format) hyrax/batch_uploads#create
new_batch_upload GET /batch_uploads/new(.:format) hyrax/batch_uploads#new
- GET /collections/:id/page/:page(.:format) hyrax/collections#index
dashboard_facet_collection GET /collections/:id/facet/:id(.:format) hyrax/collections#facet
files_collection GET /collections/:id/files(.:format) hyrax/collections#files
collection GET /collections/:id(.:format) hyrax/collections#show
file_set_fixity_checks POST /concern/file_sets/:file_set_id/fixity_checks(.:format) hyrax/fixity_checks#create
stats_file_set GET /concern/file_sets/:id/stats(.:format) hyrax/file_sets#stats
citations_file GET /files/:id/citation(.:format) hyrax/citations#file
stats_file GET /files/:id/stats(.:format) hyrax/stats#file
work_transfers POST /works/:id/transfers(.:format) hyrax/transfers#create
new_work_transfer GET /works/:id/transfers/new(.:format) hyrax/transfers#new
featured_work DELETE /works/:id/featured_work(.:format) hyrax/featured_works#destroy
- POST /works/:id/featured_work(.:format) hyrax/featured_works#create
citations_work GET /works/:id/citation(.:format) hyrax/citations#work
stats_work GET /works/:id/stats(.:format) hyrax/stats#work
trophy_work POST /works/:id/trophy(.:format) hyrax/trophies#toggle_trophy
user_depositors POST /users/:user_id/depositors(.:format) hyrax/depositors#create
user_depositor DELETE /users/:user_id/depositors/:id(.:format) hyrax/depositors#destroy
depositors GET /proxies(.:format) hyrax/depositors#index
featured_work_lists POST /featured_works(.:format) hyrax/featured_work_lists#create
delete_all_notifications DELETE /notifications/delete_all(.:format) hyrax/notifications#delete_all
notifications GET /notifications(.:format) hyrax/notifications#index
notification DELETE /notifications/:id(.:format) hyrax/notifications#destroy
notifications_endpoint - /notifications/endpoint #<ActionCable::Server::Base:0x0000563ffe7da778 @mutex=#<Monitor:0x0000563ffe7da750 @mon_owner=nil, @mon_count=0, @mon_mutex=#Thread::Mutex:0x0000563ffe7da700>, @pubsub=nil, @worker_pool=nil, @event_loop=nil, @remote_connections=nil>
user_operations GET /users/:user_id/operations(.:format) hyrax/operations#index
user_operation GET /users/:user_id/operations/:id(.:format) hyrax/operations#show
users GET /users(.:format) hyrax/users#index
user GET /users/:id(.:format) hyrax/users#show
dashboard GET /dashboard(.:format) hyrax/dashboard#show
dashboard_activity_dashboard_index GET /dashboard/activity(.:format) hyrax/dashboard#activity
accept_transfer PUT /dashboard/transfers/:id/accept(.:format) hyrax/transfers#accept
reject_transfer PUT /dashboard/transfers/:id/reject(.:format) hyrax/transfers#reject
transfers GET /dashboard/transfers(.:format) hyrax/transfers#index
transfer DELETE /dashboard/transfers/:id(.:format) hyrax/transfers#destroy
dashboard_works GET /dashboard/works(.:format) hyrax/dashboard/works#index
dashboard_works_facet GET /dashboard/works/facet/:id(.:format) hyrax/dashboard/works#facet
- GET /dashboard/collections/:id/page/:page(.:format) hyrax/dashboard/collections#index
dashboard_facet_dashboard_collection GET /dashboard/collections/:id/facet/:id(.:format) hyrax/dashboard/collections#facet
files_dashboard_collection GET /dashboard/collections/:id/files(.:format) hyrax/dashboard/collections#files
- PUT /dashboard/collections(.:format) hyrax/dashboard/collections#update
remove_member_dashboard_collections PUT /dashboard/collections/remove_member(.:format) hyrax/dashboard/collections#remove_member
dashboard_collections GET /dashboard/collections(.:format) hyrax/dashboard/collections#index
- POST /dashboard/collections(.:format) hyrax/dashboard/collections#create
new_dashboard_collection GET /dashboard/collections/new(.:format) hyrax/dashboard/collections#new
edit_dashboard_collection GET /dashboard/collections/:id/edit(.:format) hyrax/dashboard/collections#edit
dashboard_collection GET /dashboard/collections/:id(.:format) hyrax/dashboard/collections#show
- PATCH /dashboard/collections/:id(.:format) hyrax/dashboard/collections#update
- PUT /dashboard/collections/:id(.:format) hyrax/dashboard/collections#update
- DELETE /dashboard/collections/:id(.:format) hyrax/dashboard/collections#destroy
- POST /dashboard/collections/:id(.:format) hyrax/dashboard/collection_members#update_members
dashboard_create_nest_collection_within POST /dashboard/collections/:child_id/within(.:format) hyrax/dashboard/nest_collections#create_relationship_within
dashboard_create_subcollection_under GET /dashboard/collections/:parent_id/under(.:format) hyrax/dashboard/nest_collections#create_collection_under
dashboard_create_nest_collection_under POST /dashboard/collections/:parent_id/under(.:format) hyrax/dashboard/nest_collections#create_relationship_under
dashboard_remove_parent_relationship_above POST /dashboard/collections/:child_id/remove_parent/:parent_id(.:format) hyrax/dashboard/nest_collections#remove_relationship_above
dashboard_remove_child_relationship_under POST /dashboard/collections/:parent_id/remove_child/:child_id(.:format) hyrax/dashboard/nest_collections#remove_relationship_under
edit_dashboard_profile GET /dashboard/profiles/:id/edit(.:format) hyrax/dashboard/profiles#edit
dashboard_profile GET /dashboard/profiles/:id(.:format) hyrax/dashboard/profiles#show
- PATCH /dashboard/profiles/:id(.:format) hyrax/dashboard/profiles#update
- PUT /dashboard/profiles/:id(.:format) hyrax/dashboard/profiles#update
my_works GET /dashboard/my/works(.:format) hyrax/my/works#index
my GET /dashboard/my/works/page/:page(.:format) hyrax/my/works#index
my_dashboard_works_facet GET /dashboard/my/works/facet/:id(.:format) hyrax/my/works#facet
my_collections GET /dashboard/my/collections(.:format) hyrax/my/collections#index
- GET /dashboard/my/collections/page/:page(.:format) hyrax/my/collections#index
my_dashboard_collections_facet GET /dashboard/my/collections/facet/:id(.:format) hyrax/my/my/collections#facet
dashboard_highlights GET /dashboard/highlights(.:format) hyrax/my/highlights#index
- GET /dashboard/highlights/page/:page(.:format) hyrax/my/highlights#index
dashboard_highlights_facet GET /dashboard/highlights/facet/:id(.:format) hyrax/my/highlights#facet
dashboard_shares GET /dashboard/shares(.:format) hyrax/my/shares#index
- GET /dashboard/shares/page/:page(.:format) hyrax/my/shares#index
dashboard_shares_facet GET /dashboard/shares/facet/:id(.:format) hyrax/my/shares#facet
new_dashboard_collection_permission_template GET /dashboard/collections/permission_template/new(.:format) hyrax/admin/permission_templates#new
edit_dashboard_collection_permission_template GET /dashboard/collections/:collection_id/permission_template/edit(.:format) hyrax/admin/permission_templates#edit
dashboard_collection_permission_template GET /dashboard/collections/:collection_id/permission_template(.:format) hyrax/admin/permission_templates#show
- PATCH /dashboard/collections/:collection_id/permission_template(.:format) hyrax/admin/permission_templates#update
- PUT /dashboard/collections/:collection_id/permission_template(.:format) hyrax/admin/permission_templates#update
- DELETE /dashboard/collections/:collection_id/permission_template(.:format) hyrax/admin/permission_templates#destroy
- POST /dashboard/collections/:collection_id/permission_template(.:format) hyrax/admin/permission_templates#create
contact_form_index POST /contact(.:format) hyrax/contact_form#create
contact GET /contact(.:format) hyrax/contact_form#new
show_single_use_link GET /single_use_link/show/:id(.:format) hyrax/single_use_links_viewer#show
download_single_use_link GET /single_use_link/download/:id(.:format) hyrax/single_use_links_viewer#download
generate_download_single_use_link POST /single_use_link/generate_download/:id(.:format) hyrax/single_use_links#create_download
generate_show_single_use_link POST /single_use_link/generate_show/:id(.:format) hyrax/single_use_links#create_show
generated_single_use_links GET /single_use_link/generated/:id(.:format) hyrax/single_use_links#index
delete_single_use_link DELETE /single_use_link/:id/delete/:link_id(.:format) hyrax/single_use_links#destroy
embargoes PATCH /embargoes(.:format) hyrax/embargoes#update
GET /embargoes(.:format) hyrax/embargoes#index
edit_embargo GET /embargoes/:id/edit(.:format) hyrax/embargoes#edit
embargo DELETE /embargoes/:id(.:format) hyrax/embargoes#destroy
leases PATCH /leases(.:format) hyrax/leases#update
- GET /leases(.:format) hyrax/leases#index
edit_lease GET /leases/:id/edit(.:format) hyrax/leases#edit
lease DELETE /leases/:id(.:format) hyrax/leases#destroy
confirm_permission GET /concern/permissions/:id/confirm(.:format) hyrax/permissions#confirm
copy_permission POST /concern/permissions/:id/copy(.:format) hyrax/permissions#copy
confirm_access_permission GET /concern/permissions/:id/confirm_access(.:format) hyrax/permissions#confirm_access
copy_access_permission POST /concern/permissions/:id/copy_access(.:format) hyrax/permissions#copy_access
files_admin_admin_set GET /admin/admin_sets/:id/files(.:format) hyrax/admin/admin_sets#files
new_admin_admin_set_permission_template GET /admin/admin_sets/:admin_set_id/permission_template/new(.:format) hyrax/admin/permission_templates#new
edit_admin_admin_set_permission_template GET /admin/admin_sets/:admin_set_id/permission_template/edit(.:format) hyrax/admin/permission_templates#edit
admin_admin_set_permission_template GET /admin/admin_sets/:admin_set_id/permission_template(.:format) hyrax/admin/permission_templates#show
- PATCH /admin/admin_sets/:admin_set_id/permission_template(.:format) hyrax/admin/permission_templates#update
- PUT /admin/admin_sets/:admin_set_id/permission_template(.:format) hyrax/admin/permission_templates#update
- DELETE /admin/admin_sets/:admin_set_id/permission_template(.:format) hyrax/admin/permission_templates#destroy
- POST /admin/admin_sets/:admin_set_id/permission_template(.:format) hyrax/admin/permission_templates#create
admin_admin_sets GET /admin/admin_sets(.:format) hyrax/admin/admin_sets#index
- POST /admin/admin_sets(.:format) hyrax/admin/admin_sets#create
new_admin_admin_set GET /admin/admin_sets/new(.:format) hyrax/admin/admin_sets#new
edit_admin_admin_set GET /admin/admin_sets/:id/edit(.:format) hyrax/admin/admin_sets#edit
admin_admin_set GET /admin/admin_sets/:id(.:format) hyrax/admin/admin_sets#show
- PATCH /admin/admin_sets/:id(.:format) hyrax/admin/admin_sets#update
- PUT /admin/admin_sets/:id(.:format) hyrax/admin/admin_sets#update
- DELETE /admin/admin_sets/:id(.:format) hyrax/admin/admin_sets#destroy
admin_users GET /admin/users(.:format) hyrax/admin/users#index
admin_permission_template_access DELETE /admin/permission_template_accesses/:id(.:format) hyrax/admin/permission_template_accesses#destroy
admin_stats GET /admin/stats(.:format) hyrax/admin/stats#show
admin_feature_strategy PATCH /admin/features/:feature_id/strategies/:id(.:format) hyrax/admin/strategies#update
- PUT /admin/features/:feature_id/strategies/:id(.:format) hyrax/admin/strategies#update
- DELETE /admin/features/:feature_id/strategies/:id(.:format) hyrax/admin/strategies#destroy
admin_features GET /admin/features(.:format) hyrax/admin/features#index
admin_workflows GET /admin/workflows(.:format) hyrax/admin/workflows#index
POST /admin/workflows(.:format) hyrax/admin/workflows#create
new_admin_workflow GET /admin/workflows/new(.:format) hyrax/admin/workflows#new
edit_admin_workflow GET /admin/workflows/:id/edit(.:format) hyrax/admin/workflows#edit
admin_workflow GET /admin/workflows/:id(.:format) hyrax/admin/workflows#show
- PATCH /admin/workflows/:id(.:format) hyrax/admin/workflows#update
- PUT /admin/workflows/:id(.:format) hyrax/admin/workflows#update
- DELETE /admin/workflows/:id(.:format) hyrax/admin/workflows#destroy
admin_workflow_roles GET /admin/workflow_roles(.:format) hyrax/admin/workflow_roles#index
POST /admin/workflow_roles(.:format) hyrax/admin/workflow_roles#create
new_admin_workflow_role GET /admin/workflow_roles/new(.:format) hyrax/admin/workflow_roles#new
edit_admin_workflow_role GET /admin/workflow_roles/:id/edit(.:format) hyrax/admin/workflow_roles#edit
admin_workflow_role GET /admin/workflow_roles/:id(.:format) hyrax/admin/workflow_roles#show
- PATCH /admin/workflow_roles/:id(.:format) hyrax/admin/workflow_roles#update
- PUT /admin/workflow_roles/:id(.:format) hyrax/admin/workflow_roles#update
- DELETE /admin/workflow_roles/:id(.:format) hyrax/admin/workflow_roles#destroy
new_admin_appearance GET /admin/appearance/new(.:format) hyrax/admin/appearances#new
edit_admin_appearance GET /admin/appearance/edit(.:format) hyrax/admin/appearances#edit
admin_appearance GET /admin/appearance(.:format) hyrax/admin/appearances#show
- PATCH /admin/appearance(.:format) hyrax/admin/appearances#update
- PUT /admin/appearance(.:format) hyrax/admin/appearances#update
- DELETE /admin/appearance(.:format) hyrax/admin/appearances#destroy
- POST /admin/appearance(.:format) hyrax/admin/appearances#create
admin_collection_types GET /admin/collection_types(.:format) hyrax/admin/collection_types#index
- POST /admin/collection_types(.:format) hyrax/admin/collection_types#create
new_admin_collection_type GET /admin/collection_types/new(.:format) hyrax/admin/collection_types#new
edit_admin_collection_type GET /admin/collection_types/:id/edit(.:format) hyrax/admin/collection_types#edit
admin_collection_type PATCH /admin/collection_types/:id(.:format) hyrax/admin/collection_types#update
- PUT /admin/collection_types/:id(.:format) hyrax/admin/collection_types#update
- DELETE /admin/collection_types/:id(.:format) hyrax/admin/collection_types#destroy
admin_collection_type_participants POST /admin/collection_type_participants(.:format) hyrax/admin/collection_type_participants#create
admin_collection_type_participant DELETE /admin/collection_type_participants/:id(.:format) hyrax/admin/collection_type_participants#destroy
content_block PATCH /content_blocks/:id(.:format) hyrax/content_blocks#update
edit_content_blocks GET /content_blocks/edit(.:format) hyrax/content_blocks#edit
page PATCH /pages/:id(.:format) hyrax/pages#update
edit_pages GET /pages/edit(.:format) hyrax/pages#edit
about GET /about(.:format) hyrax/pages#show {:key=>"about"}
help GET /help(.:format) hyrax/pages#show {:key=>"help"}
terms GET /terms(.:format) hyrax/pages#show {:key=>"terms"}
agreement GET /agreement(.:format) hyrax/pages#show {:key=>"agreement"}
zotero GET /zotero(.:format) hyrax/static#zotero
mendeley GET /mendeley(.:format) hyrax/static#mendeley

Californica Mapper

What columns are allowed in the CSV CALIFORNICA_TERMS_MAP.values

self.allowed_headers

  def self.allowed_headers
    CALIFORNICA_TERMS_MAP.values +
      ['File Name', 'Parent ARK', 'Project Name', 'Object Type', 'Item Sequence', 'Visibility']
  end

returns:

[
["AltTitle.other", "AltTitle.parallel", "AltTitle.translated", "Alternate Title.creator", "Alternate Title.descriptive", "Alternate Title.inscribed", "Alternate Title.other"],  
"Name.architect", "Item ARK", "Author", "Description.caption", "Date.creation",   
"Description.note", "Format.dimensions", "Relation.isPartOf", "Format.extent",   
"Description.fundingNote", "Type.genre", "Language", "Description.latitude",   
["Alternate Identifier.local", "AltIdentifier.callNo", "AltIdentifier.local", "Alt ID.local"],  
"Coverage.geographic", "Description.longitude", "File Name", "Format.medium",   
["Name.subject", "Personal or Corporate Name.subject", "Subject.corporateName", "Subject.personalName"], "Date.normalized",   
["Name.photographer", "Personal or Corporate Name.photographer"],   
"Place of origin", "Publisher.publisherName",   
["Name.repository", "Personal or Corporate Name.repository"],   
"Type.typeOfResource", "Rights.countryCreation",   
["Personal or Corporate Name.copyrightHolder", "Rights.rightsHolderContact"],   
"Rights.copyrightStatus", "Rights.servicesContact",   
"Subject", "Summary", "Support", "Title", "AltTitle.uniform",   
"File Name", "Parent ARK", "Project Name",   
"Object Type", "Item Sequence", "Visibility"  
]

fields

  def fields
    # The fields common to all object types
    common_fields = CALIFORNICA_TERMS_MAP.keys + [:visibility, :member_of_collections_attributes, :license]
    # Pages additionally have a field :in_works_ids, which defines their parent work
    return common_fields + [:in_works_ids] if ['ChildWork', 'Page'].include?(metadata["Object Type"])
    common_fields
  end

common_fields = CALIFORNICA_TERMS_MAP.keys + [:visibility, :member_of_collections_attributes, :license] returns:

[
:alternative_title,
 :architect,
 :ark,
 :author,
 :caption,
 :date_created,
 :description,
 :dimensions,
 :dlcs_collection_name,
 :extent,
 :funding_note,
 :genre,
 :language,
 :latitude,
 :local_identifier,
 :location,
 :longitude,
 :master_file_path,
 :medium,
 :named_subject,
 :normalized_date,
 :photographer,
 :place_of_origin,
 :publisher,
 :repository,
 :resource_type,
 :rights_country,
 :rights_holder,
 :rights_statement,
 :services_contact,
 :subject,
 :summary,
 :support,
 :title,
 :uniform_title,
 :visibility,
 :member_of_collections_attributes,
 :license
 ]

???

    return common_fields + [:in_works_ids] if ['ChildWork', 'Page'].include?(metadata["Object Type"])
    common_fields
  end

  def object_type
    metadata['Object Type']
  end

  def collection?
    object_type&.downcase&.chomp == 'collection'
  end

visibility_mapping

The visibility values have different values when

they are calculated or indexed in solr than the

values that appear in the UI edit form. We should accept both.

  def visibility_mapping
    {  
      'private' => Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE,  
      'restricted' => Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE,  
      'discovery' => ::Work::VISIBILITY_TEXT_VALUE_DISCOVERY,  
      'authenticated' => Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED,  
      'registered' => Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED,  
      'ucla' => Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED,  
      'open' => Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC,  
      'public' => Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC  
    }.freeze
  end

[:alternative_title, :architect, :ark, :author, :caption, :date_created, :description, :dimensions, :dlcs_collection_name, :extent, :funding_note, :genre, :language, :latitude, :local_identifier, :location, :longitude, :master_file_path, :medium, :named_subject, :normalized_date, :photographer, :place_of_origin, :publisher, :repository, :resource_type, :rights_country, :rights_holder, :rights_statement, :services_contact, :subject, :summary, :support, :title, :uniform_title, :visibility, :member_of_collections_attributes, :license]


ChildWork

As of 7-26-19

#<ChildWork  
id: "19xg9000zz-89112",  
head: [],  
tail: [],  
depositor: "[email protected]",  
title: ["Front Cover"],  
date_uploaded: "2019-07-09 20:15:37",  
date_modified: "2019-07-09 20:15:37",  
state: nil,  
proxy_depositor: nil,  
on_behalf_of: nil,  
arkivo_checksum: nil,  
owner: nil,  
alternative_title: [],  
ark: "ark:/21198/zz0009gx91",  
architect: [],  
author: [],  
caption: [],  
dimensions: ["250 mm x 222 mm"],  
dlcs_collection_name: [],  
extent: ["1 Item"],  
funding_note: [],  
genre: [],  
latitude: [],  
location: [],  
local_identifier: ["Ms. 25_cvr"],  
longitude: [],  
master_file_path: nil,  
medium: [],  
named_subject: [],  
normalized_date: ["1900/1999"],  
photographer: [],  
place_of_origin: ["Ethiopia"],  
repository: [],  
rights_country: [],  
rights_holder: [],  
services_contact: [],  
summary: [],  
support: ["Stamped leather over board"],  
uniform_title: [],  
label: nil,  
relative_path: nil,  
import_url: nil,  
resource_type: ["http://id.loc.gov/vocabulary/resourceTypes/txt"],  
creator: [],  
contributor: [],  
description: [],  
keyword: [],  
license: [],  
rights_statement: ["http://vocabs.library.ucla.edu/rights/publicDomain"],  
publisher: [],  
date_created: ["20th c."],  
subject: [], language: [],  
identifier: [],  
based_near: [],  
related_url: [],  
bibliographic_citation: [],  
source: [],  
access_control_id: "8247d06e-9f8c-4d0f-875e-624639e0ce16",  
representative_id: nil,  
thumbnail_id: nil,  
rendering_ids: [],  
admin_set_id: "admin_set/default",  
embargo_id: nil,  
lease_id: nil> 

Collection

c = Collection.first (on 7-29-19)

=> #<Collection
id: "37sh8000zz-89112",
depositor: "[email protected]",
title: ["Collection of California Postcards"],
date_uploaded: nil,
date_modified: nil,
head: [],
tail: [],
collection_type_gid: "gid://californica/hyrax-collectiontype/1",
alternative_title: ["California Postcards"],
ark: "ark:/21198/zz0008hs73",
architect: [],
author: [],
caption: [],
dimensions: [],
dlcs_collection_name: ["California Postcards Collection. Department of Special Collections, Charles E. Young Research Library, UCLA."],
extent: [],
funding_note: [],
genre: ["photographic postcards",
"Postcards"],
latitude: [],
location: [],
local_identifier: ["Collection 1351"],
longitude: [],
master_file_path: nil,
medium: [],
named_subject: [],
normalized_date: ["1891/9999"],
photographer: [],
place_of_origin: [],
repository: ["University of California,
Los Angeles. Library Special Collections"],
rights_country: [],
rights_holder: ["UCLA Charles E. Young Research Library Department of Special Collections, A1713 Young Research Library,
Box 951575,
Los Angeles,
CA 90095-1575. E-mail: [email protected]. Phone: (310)825-4988"],
services_contact: ["UCLA Charles E. Young Research Library Department of Special Collections, A1713 Young Research Library, Box 951575, Los Angeles, CA 90095-1575. E-mail: [email protected]. Phone: (310)825-4988"],
summary: [],
support: [],
uniform_title: [],
recalculate_size: true,
label: nil,
relative_path: nil,
import_url: nil,
resource_type: [],
creator: [],
contributor: [],
description: ["Recommend for future cataloging/collection management system. If going to scan large number of postcards recommend developing metadata schema that follows University of Delaware model http://fletcher.lib.udel.edu/collections/dpc/index.htm.Specific fields to create: sender's message,
addressee,
post mark,
etc."],
keyword: [],
license: [],
rights_statement: ["http://vocabs.library.ucla.edu/rights/unknown"],
publisher: [],
date_created: ["1891-"],
subject: ["Postcards--California"],
language: [],
identifier: [],
based_near: [],
related_url: [],
bibliographic_citation: [],
source: [],
access_control_id: "737d56da-6f5d-4968-b19b-9f67d36c7f17",
representative_id: nil,
thumbnail_id: nil>

CollectionIndexer

CollectionIndexer

app/indexers/collection_indexer.rb
c = Collection.first

CollectionIndexer.new(c)  
=> #<CollectionIndexer:0x000055f59362acf8   
@object=  
#<Collection   
  id: "37sh8000zz-89112",  
  depositor: "[email protected]",  
  title: ["Collection of California Postcards"],  
  date_uploaded: nil,  
  date_modified: nil,  
  head: [],  
  tail: [],  
  collection_type_gid: "gid://californica/hyrax-collectiontype/1",  
  alternative_title: ["California Postcards"],  
  ark: "ark:/21198/zz0008hs73",  
  architect: [],  
  author: [],  
  caption: [],  
  dimensions: [],  
  dlcs_collection_name: ["California Postcards Collection. Department of Special Collections,  
  Charles E. Young Research Library,  
  UCLA."],  
  extent: [],  
  funding_note: [],  
  genre: ["photographic postcards",  
  "Postcards"],  
  latitude: [],  
  location: [],  
  local_identifier: ["Collection 1351"],  
  longitude: [],  
  master_file_path: nil,  
  medium: [],  
  named_subject: [],  
  normalized_date: ["1891/9999"],  
  photographer: [],  
  place_of_origin: [],  
  repository: ["University of California,  
  Los Angeles. Library Special Collections"],  
  rights_country: [],  
  rights_holder: ["UCLA Charles E. Young Research Library Department of Special Collections,  
  A1713 Young Research Library,  
  Box 951575,  
  Los Angeles,  
  CA 90095-1575. E-mail: [email protected]. Phone: (310)825-4988"],  
  services_contact: ["UCLA Charles E. Young Research Library Department of Special Collections,  
  A1713 Young Research Library,  
  Box 951575,  
  Los Angeles,  
  CA 90095-1575. E-mail: [email protected]. Phone: (310)825-4988"],  
  summary: [],  
  support: [],  
  uniform_title: [],  
  recalculate_size: true,  
  label: nil,  
  relative_path: nil,  
  import_url: nil,  
  resource_type: [],  
  creator: [],  
  contributor: [],  
  description: ["Recommend for future cataloging/collection management system.  If going to scan large number of postcards recommend developing metadata schema that follows University of Delaware model http://fletcher.lib.udel.edu/collections/dpc/index.htm.Specific fields to create: sender's message,  
  addressee,  
  post mark,  
  etc."],  
  keyword: [],  
  license: [],  
  rights_statement: ["http://vocabs.library.ucla.edu/rights/unknown"],  
  publisher: [],  
  date_created: ["1891-"],  
  subject: ["Postcards--California"],  
  language: [],  
  identifier: [],  
  based_near: [],  
  related_url: [],  
  bibliographic_citation: [],  
  source: [],  
  access_control_id: "737d56da-6f5d-4968-b19b-9f67d36c7f17",  
  representative_id: nil,  
  thumbnail_id: nil>>  

Common Fields

common_fields = CALIFORNICA_TERMS_MAP.keys + [:visibility, :member_of_collections_attributes, :license]
=>

[  
:alternative_title,  
 :architect,  
 :ark,  
 :author,  
 :caption,  
 :date_created,  
 :description,  
 :dimensions,  
 :dlcs_collection_name,  
 :extent,  
 :funding_note,  
 :genre,  
 :language,  
 :latitude,  
 :local_identifier,  
 :location,  
 :longitude,  
 :master_file_path,  
 :medium,  
 :named_subject,  
 :normalized_date,  
 :photographer,  
 :place_of_origin,  
 :publisher,  
 :repository,  
 :resource_type,  
 :rights_country,  
 :rights_holder,  
 :rights_statement,  
 :services_contact,  
 :subject,  
 :summary,  
 :support,  
 :title,  
 :uniform_title,  
 :visibility,  
 :member_of_collections_attributes,  
 :license  
 ]  

irb(main):088:0> common_fields + [:in_works_ids] if ['ChildWork', 'Page'].include?(metadata["Object Type"])

Create a new Field

Change these files in Californica

Changes to be committed:

  1. app/assets/markdown/importer_guide.md
  2. app/controllers/catalog_controller.rb
  3. app/forms/hyrax/californica_collections_form.rb
  4. app/forms/hyrax/work_form.rb
  5. app/importers/californica_mapper.rb
  6. app/models/ucla_metadata.rb
  7. app/presenters/hyrax/californica_collection_presenter.rb
  8. app/presenters/hyrax/work_presenter.rb
  9. app/uploaders/csv_manifest_validator.rb
  10. app/views/hyrax/base/_attribute_rows.html.erb
  11. app/assets/csv/import_manifest.csv
  12. app/models/solr_document.rb
  13. app/views/hyrax/base/_attribute_rows.html.erb
  14. spec/importers/californica_mapper_spec.rb
  15. spec/fixtures/coordinates_example.csv
  16. spec/fixtures/csv_import/good/all_fields.csv
  17. spec/system/edit_collection_spec.rb
  18. spec/system/edit_work_spec.rb
  19. spec/system/import_and_show_work_spec.rb
  20. spec/system/search_catalog_spec.rb
  21. spec/system/show_collection_spec.rb
  22. spec/fixtures/example.csv
  23. spec/forms/hyrax/work_form_spec.rb
  24. spec/importers/californica_csv_parser_spec.rb
  25. spec/importers/californica_mapper_spec.rb
  26. spec/views/hyrax/base/_attribute_rows.html.erb_spec.rb

Change these files in Ursus

Docker Setup for Californica & Ursus

Californica in Docker

Quickie

docker-compose run web bash
bundle exec rails db:setup
bundle exec rails hyrax:default_admin_set:create

SOLR | SIDEKIQ
Restart sidekiq: docker-compose restart sidekiq

FOLLOW THESE DIRECTIONS TO GET IT SET UP

1. Clone the repo from GitHub and change directories into the repo

2. Bring up the development environment:

  • $ docker-compose up

3. Provision the database

The first time you create the environment, you'll also need to provision the databases.

Open another tab in your terminal be sure you are in the californica directory.

To get into the root run:

$ docker-compose run web bash

Now your terminal should look like something this: root@2b6bd2c19a8a:/californica#
Provision the database

root@2b6bd2c19a8a:/californica#$ bundle exec rails db:setup
Then:
root@2b6bd2c19a8a:/californica#$ bundle exec rails hyrax:default_admin_set:create

4. Ingest Collection

First login to https://localhost:3000

then Import Content from a csv page

upload csv from the Eureka Repo and click preview and then click start import button

Sometime you would have to restart sidekiq container and do a live poll

To see all rake options run rails -T

If this succeeds without error, you've successfully created your Californica environment and loaded some sample records.

To access some of the services that you'll need, try finding them at the following locations:

Default admin user

A default admin user is created for you, with the e-mail address of [email protected], and a password of 'password' This password can and should be set by way of a dot-env variable ADMIN_PASSWORD. See the .env.sample file for an example.

Creating a new admin user

First, create the user via the UI, or have them self-register.

Then, on the rails console:

u = User.find_by_user_key('[email protected]')
admin = Role.find_by_name('admin')
admin.users << u
admin.save
u.admin?
  => true

If u.admin? returns true then you know it worked as expected.

See also the Making Admin Users in Hyrax Guide.


Ursus in Docker

Quickie

docker-compose run web bundle exec rails db:setup 

To restart sidekiq: docker-compose restart sidekiq
Ursus port 3003
Sinai port 3004

Prerequisites

1. Ursus pointing to local Californica database

  • You must have Californica running
  • Ingest data in Californica
FOLLOW THESE DIRECTIONS TO GET IT SET UP

1. Clone the repo from GitHub and change directories into the repo

$ git clone [email protected]:UCLALibrary/ursus.git
$ cd ursus

2. Bring up the development environment:

$ docker-compose up

3. Provision the databases

$ docker-compose run web bundle exec rails db:setup

Ursus should now be running on port 3003.

The data you're viewing is coming from a solr instance, preloaded with data from [Californica-test]
(https://californica-test.library.ucla.edu), and should not need to be changed in most cases,
since Ursus is a discovery interface only.
You can view the solr console on port 8983.

Running the Test Suite

  1. Connect to a shell inside the container with docker-compose run web bash
  2. Run bundle exec rspec spec

Feature flags for Sinai Manuscripts site

To meet our grant obligations, we are publishing Sinai Manuscripts to their own site, which will be an instance of Ursus with a separate Solr index, special authentication logic (linked to Sinai-ID), and customized styling and static pages. To keep the code up to date, this will be deployed from the same Ursus repository, which will contain code for both variants controlled by a feature flag implemented using the Flipflop gem.

Enable / disable Sinai site behavior.

To enable, run the following in your shell from the root of an Ursus installation: $ bundle exec rails ursus:sinai:on

To disable (and revert to a default Ursus):

$ bundle exec rails ursus:sinai:off

Using

You can get the current state of the flag using the class method Flipflop.sinai?

For example, in a template you could use:

<% if Flipflop.sinai? %>
  <%= render 'my_partial_sinai' %>
<% else %>
  <%= render 'my_partial_default' %>
<% end %>

Which would render either _my_partial_default.html.erb or _my_partial_sinai.html.erb, depending on the state of the flag.

Testing

To test, you can set up a context for each state of the feature flag, then stub out the Flipflop.sinai? method in each of those contexts:

context 'in the default site'
  before do
    allow(Flipflop).to receive(:sinai?).and_return(false)
  end

  it 'has regular behavior' do
    [ tests for regular site ]
  end
end

context 'in the sinai site'
  before do
    allow(Flipflop).to receive(:sinai?).and_return(true)
  end

  it 'has the special sinai behavior' do
    [ etc. ]
  end
end

There may be other ways to check the state of the feature flag, which wouldn't be affected by mocking the Flipflop.sinai? method.

If someone wants to do some research and update this recipe, that would be awesome!

How to batch ingest content into Californica

If you are actually trying to re-ingest content into an existing environment, you must first "zero out" or "reset" that environment. You can do this by contacting Stephen Gurnick and asking him to run these two Ansible playbooks for the environment you'd like to use to reingest content:

  1. UCLALib_refresh_fedorarepo
  2. UCLALib_refresh_solrredisrails

For reference, here is what those playbooks will be doing. But, in general, you just need to know that you have to ask Stephen to do this part, and he'll handle it.

When this is complete (Stephen will let you know, and it usually takes about 30 minutes or less to complete), you are ready to start a new ingest.

Running the ingest

  1. Confirm you have set up your SSH config as documented on the ServerSpec_Samvera README .

  2. download the latest CSV file from this UCLA Box folder

  3. SCP the CSV file to the environment you'd like to run your reingest on scp MOST_RECENT_FILE_NAME.csv deploy@californica-test:/opt/data

  4. SSH into the environment you desire, as the deploy user ssh deploy@californica-test

  5. run these commands:

cd /opt/californica/current
RAILS_ENV=production CSV_FILE=/opt/data/MOST_RECENT_FILE_NAME.csv nohup bundle exec rake californica:ingest:ingest_ladnn &

At this point it's safe to log out at any point... the ingest process will continue to run.

Troubleshooting the ingest process

You can follow along with the ingest process by running the following commands

cd /opt/californica/current/log
tail -f ingest_2018-11-20-00-10-31.log #use today's date, note this is in UTC, so it may be "tomorrow" already
tail -f errors_2018-11-20-00-10-31.log #this will be mostly empty unless there *are* errors
htop #use to watch the server load and memory usage
pgrep -fau deploy rake #use to confirm the rake process is still running

Ldp::Conflict, "Can't call create on an existing resource"... oh, what is it now?

If you see the above error, you're running into Hyrax issue #3128. Essentially, the NOID minter is in a confused state, and you'll need to re-set it. To do so, you'll have to run a Rails console on the environment you're in:

cd /opt/californica/current
RAILS_ENV=production bundle exec rails -c
# then enter this command at the Rails console prompt:
[::Noid::Rails::Service.new.minter.mint, ::Noid::Rails::Service.new.minter.mint]

Oh no! Something went wrong, the ingest failed, now what?

It happens. The easiest way to make an ingest fail is to attempt to deploy new code on the same environment, while you're running an ingest rake task. We're working on a fix for that. But, in the mean time, you can restart the ingest at whatever point it stopped. Here's how:

  1. find the number of records that successfully imported. You want the number that is shown on the home page of the Californica environment you were loading. You're looking for text near the top of the page that says « Previous | 1 - 10 of 2191 | Next » or something like that.

  2. Whatever the total there, you want to subtract one, and that's how many rows you need to skip. You can skip rows in the CSV by passing in an environment variable called SKIP, like so:

cd /opt/californica/current
SKIP=2190 RAILS_ENV=production CSV_FILE=/opt/data/MOST_RECENT_FILE_NAME.csv nohup bundle exec rake californica:ingest:ingest_ladnn &

That will start up your ingest right where it stopped.

How to Clean Dev Environment

Cleaning your Californica dev environment

Don't do this in production.

If you want to completely wipe out all data in your development or test environment. This will remove all data from fedora, solr, and mysql.

rake db:drop

In the rails console:

require 'active_fedora/cleaner'
ActiveFedora::Cleaner.clean!

This is also a good time to delete the old files on your file system. You can check these locations:

Hyrax.config.upload_path
Hyrax.config.cache_path
Hyrax.config.derivatives_path
Hyrax.config.working_path

Note: If you clean the database, you need to clean fedora at the same time (unless you carefully cherry-pick the records you need to keep). If you clean one without cleaning the other, you may see errors like:

ActiveRecord::RecordNotFound: Couldn't find Hyrax::PermissionTemplate

Learning Rails

The Rails Guides are a good reference, and are available in Kindle form.

The Rails Girls tutorial is a great way to learn the basics of Rails. https://gist.github.com/jendiamond/5a26b531e8e47b4aa638


Naming convention in Rails

Variables: For declaring Variables, all letters are lowercase, and words are separated by underscores

Class and Module: Modules and Classes uses MixedCase and have no underscore; each word starts with a uppercase letter

Database Table: The database table name should have lowercase letters and underscore between words, and all table names should be in the plural form for example invoice_items

Model: It is represented by unbroken MixedCase and always have singular with the table name

Controller: Controller class names are represented in plural form, such that OrdersController would be the controller for the order table.

Learning Ruby

References

Ruby Docs

Books

  • Confident Ruby: This is not an introductory Ruby book, but is a great place to start learning clean, idiomatic Ruby once you have mastered the syntax.

Articles & Tutorials

Videos & Conference Talks

Tips

Comments

Comment in Ruby start #

Every thing in Ruby is an Object

In Ruby False indicates a Boolean datatype,
while Nil is not a data type, it has an object_id 4.
The object_id of False is 0.

symbols representing a single value are identical
whereas this is not true with strings.

For example:
three references to the symbol :test, which are all the same object

irb >> :test.object_id
=> 83618
irb >> :test.object_id
=> 83618
irb >> :test.object_id
=> 83618

three references to the string "test", which are all different objects

irb >> "test".object_id
=> -605770378
irb >> "test".object_id
=> -605779298
irb >> "test".object_id
=> -605784948

Onboarding

https://wyeworks.com/blog/2016/6/2/our-onboarding-process

These are the pieces that make up the project

Installation

So we are working in the same environment we are using Docker https://github.com/andrewbenedictwallace/samvera-docker

The Gemfile

Gems are Rubys' libraries. Rails is a gem. Blacklight is a gem.
Gem Documentation Californica | Ursus

The Gemfile is where you can view all the Ruby gems (libraries) that we are using.

Gemfile.lock is all the dependencies of the gems. You do not change this file. It is created when you bundle.

EVERY TIME you make a change to the Gemfile you need to run $ bundle in your environment to update the Gemfile.lock.


Tests

Californica | Ursus

We are using RSpec to test our apps. They both have 90%+ test coverage.

If you write code for this app, you should also write a test for it too and be sure that all the other tests are passing before you push any code to Github.

Run all the tests

$ bundle exec rspec spec

Run a type of tests

$ bundle exec rspec spec/features

Run an individual tests

$ bundle exec rspec spec/features/view_work_spec:107 The tests are a good way to see the structure of the project a little clearer from the start.


  • Find links to good reading material / tutorials

This is a good way to see what is going on in the project and to be involved every day.
The developers are taking turns being the release manager.
The current manager will walk you through the process when it becomes you turn and there is good, step by step documentation on how to fulfill this role.


Tips & Tricks

  • In Ursus the views are in the catalog_controller.rb
  • Test Ursus bugs against the vanilla blacklight demo at https://demo.projectblacklight.org
    If the problem can be replicated there, then the issue is probably with core blacklight and you should add a ticket to blacklight. If you don't see the issue there, the issue is probably due to some local change.
    Although you should note that the demo is running Blacklight version 7 and Ursus is currently running blacklight 6.18

Points Time Equivalent
1 2 hours or less
2 1/2 a day
3 1 day
5 2-3 days
8 1 week
13 break it down further

Pull Request Review

1. Click on Files changed


2. Then Click the Green Review Changes Button

3. Click Approve

4. Click Submit Review

5. Then you can merge it and delete the branch or have someone else do that step.

QA gem


In Californica:
app/indexers/work_indexer.rb

  def human_readable_language
    rights_terms = Qa::Authorities::Local.subauthority_for('languages').all

    object.language.map do |lang|
      term = rights_terms.find { |entry| entry[:id] == lang }
      term.blank? ? lang : term[:label]
    end
  end

This converts the predicate into a value which is used as the label.


What does this do?

Provides a set of uniform RESTful routes to query any controlled vocabulary or set of authority terms. Results are returned in JSON and can be used within the context of a Rails application or any other Ruby environment. Primary examples would include providing auto-complete functionality via Javascript or populating a dropdown menu with a set of terms.

How does it work?

Authorities are defined as classes, each implementing a set of methods allowing a controller to return results from a given vocabulary in the JSON format. The controller does three things:

provide a list of all terms (if allowed by the class) return a set of terms matching a given query return the complete information for a specific term given its identifier Depending on the kind of authority or its API, the controller may not do all of these things such as return a complete list of terms.

Sub-Authorities

Some authorities, such as Library of Congress, allow sub-authorities which is an additional parameter that further defines the kind of authority to use with the context of a larger one.

Release Checklist

  1. Refactor facets CSS URS-790 | PR-819
  2. Refactor Facets Modal CSS URS-843 | PR-820 URS-854
  3. Edit copy on "Copyright and Collections" page
  4. Display Ursus footer logo in Firefox APPS-456 | PR-822

Deployed to Ursus & Sinai Test, Dev & Stage 10:20AM Monday, June 22nd, 2020

Not yet Deployed to

RELEASE DETAILS

Test
-->

Dev
-->

Stage
-->

Prod
-->

Before Deploys #### Before Deploys

  • Travis build says it is failing
  • Test Coverage 95%
  • Pull Requests open - 0
  • Test Californica v2.12.5; Updated 13 July 2020
  • Stage Californica v2.12.5; Updated 20 July 2020
  • Dev Californica v2.12.5; Updated 13 July 2020
  • ProductionCalifornica v2.12.5; Updated 14 July 2020

After Deploys #### After Deploys

Release Manager Notes

Deployment Pipeline

1. Environments

We have 4 environments: Test, Stage, Dev (development) and Prod (production)
  • Test
    • Anything that is merged to the Master branch gets automatically released from master to ursus-test and/or californica-test
  • Stage
    • Tagged releases are automatically released to ursus-stage and/or californica-stage
  • Dev
    • Any developer on the project can deploy to -dev to test a branch, but make sure you coordinate with the development team first to make sure it isn’t being used for another test
    • Tagged releases are NOT automatically released to ursus-dev and/or californica-dev
    • You have to do a manual release to development through the Jenkins server
    • Use the latest tagged release
  • Prod
    • You have to do a manual release to production through the Jenkins server
    • Use the latest tagged release

In the Github Repo for Ursus or Californica:

Deploy one environment at a time

Deploy a tagged release to the first environment (Test), and check each environment - before promoting to the next deploy order. Check that each environment passes successfully (by watching the logs) - before advancing to the next deploy


2. Identify which tickets are ready for release

There are many methods you can use to do this.

  • Check the Jira Apps Team Board "Review and Release" column AND / OR
  • Check Releases Page in Californica / Ursus repos. It will tell you how many commits there have been since the last release, click on that link.

2a. A ticket may have a PR that needs to be merged to Master

  1. Make sure on the open pull request that all checks have passed.
  2. Review the changes and approve the merge OR have someone else do the merge
  3. Check that the Pull Request is successfully merged And that the build is still passing/green after the merge
  4. Delete the branch

Reminder: Anything that is merged to the Master branch gets automatically released from master to ursus-test and/or californica-test


2b. If a PR has already been merged, move on to Step 3.


3. BEFORE you tag a Release

  1. Make sure the Travis CI build is green (passing) on the Master branch
    • At the top of the README.md there is a badge that tells you if the build is passing or failing.
  2. Check the Test Environment
    • Browse to ursus-test or californica-test to make sure the app is up and working and ensure the code is working.
    • The test environments are connected to continuous deployment, so if there is a problem with the code on master, the issue will show up here first.

4. Create a new Tagged Release

  1. Click the link "releases"
    285 commits | 32 branches | 14 releases | 12 contributors | View license
  2. Click on the Draft a New Release button
  3. Name the new release
    • We are currently using the semantic version naming system
Semantic Versioning explained...

We are currently using the semantic version naming system (We are NOT using sprint naming as is shown in this image)

v1.0.0

  • MAJOR
    • version when you make incompatible API changes
    • Increment the first digit by 1 if the new features break backwards compatibility/current features
  • MINOR
    • version when you add functionality in a backwards-compatible manner
    •  Increment the middle digit by 1 if the new features don’t break any existing features and are compatible with the app in it’s current state
  • PATCH
    • version when you make backwards-compatible bug fixes
    •  Increment the last digit by 1 if you’re publishing bug/patch fixes to your app

+ Change **Tag version** & **Release title** to the new release name *ex. `v1.0.1`*
  1. Add comments that describe what changed in the code
    Follow the Release Checklist Copy & Paste the checklist into the comment section.

    • The previous release will show in the header how many commits there have been since the last release jendiamond released this 4 days ago · 5 commits to master since this release
    • What did we do in this release?
    • Look at the tickets in the release column of the waffle
  2. IF you are NOT deploying to Production with this release, Click the This is a Prerelease checkbox and be sure to name the release something like v.1.0.7rc (rc = release candidate)

  3. IF you ARE deploying to Production with this release, Click the Publish Release button


5a. A tagged release should automatically deploy to Staging

  • Confirm by going to the staging environment of either Ursus or Californica and checking the release version/tag in the footer.
  • Otherwise, do a manual deployment (Step 5b)

5b. Manual Deploy to the Staging Environment

Go to the Jenkins Server

  • You must have permissions; which you can get From Stephen Gurnick
  • You must be on a secure connection

  1. Click on the Jenkins Logo which will then display both Californica & Ursus

  1. Click on the arrow to the left of Californica; From the drop down click on Build with Parameters

  1. Look at the drop down list of DEPLOY_HOST and choose s-w-californicaweb01.library.ucla.edu

  1. Put the release name in the GIT_BRANCH box
  2. Click the Build button

  1. A new build number will appear in the side bar. To the right of it is an arrow for the dropdown menu. Choose the Console output option and watch the deploy until it Passes or Fails.

  1. A note will be sent to the Samvera Slack channel about the passing or failing of the build.
    If it FAILS be sure that the team is alerted.

6. Ask in Slack or at standup if anyone is using the Dev environment

If no one is currently using it deploy to the Dev environment.
Follow directions above but with the Dev environment.


7. Follow directions above to deploy the Prod environment


Hooray, all the environments are deployed!

8. Move the Cards on Waffle

  • From the For Release column
  • To the top of the Done column
  • You are finished!

schema

db/schema.rb

"hyrax_collection_types"  
    t.string "title"  
    t.text "description"  
    t.string "machine_id"  
    t.boolean "nestable", default: true, null: false  
    t.boolean "discoverable", default: true, null: false  
    t.boolean "sharable", default: true, null: false  
    t.boolean "allow_multiple_membership", default: true, null: false  
    t.boolean "require_membership", default: false, null: false  
    t.boolean "assigns_workflow", default: false, null: false  
    t.boolean "assigns_visibility", default: false, null: false  
    t.boolean "share_applies_to_new_works", default: true, null: false  
    t.boolean "brandable", default: true, null: false  
    t.string "badge_color", default: "#663333"  
    t.index ["machine_id"], name: "index_hyrax_collection_types_on_machine_id", unique: true  

Setting up a Californica development environment, "native" style

Fedora - http://localhost:8984/fcrepo/rest
Solr - http://localhost:8983/solr/#/
Hyrax/Apache - http://localhost:3000/
Sidekiq - http://localhost:3000/sidekiq


Choose your path: "native" or VM

The "native-style" development environment will run entirely on your own computer. Choose this path if you'd like to get a deeper understanding of how all the pieces fit together and work, but also understand this environment will be somewhat different than what is running in production.

The VM-style development environment has as a goal to run a production-like environment in a virtual machine, hosted on your computer. It is also generally easier to get started with using, particularly if you've already installed the requirements (Vagrant and Virtualbox).

"Native" Environment

Installation - Californica

Clone the project repository

git clone [email protected]:uclalibrary/californica.git

Change directories into californinca

cd californica

Install dependencies

bundle install

Setup your database

You need MySQL installed, how to do this may vary based on your development environment.

  • Ubuntu: sudo apt-get install mysql-server libmysqlclient-dev and you may want to consult these instructions if you're worried about the security of your new MySQL server.
  • OS X: brew install mysql && brew services start mysql (if you use homebrew)

You also need your user to have privileges to create a new database (californica, by default), create that user by doing:

$ mysql -u root mysql -p #or just run: sudo mysql
mysql> CREATE USER 'californica'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'californica'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit;

Create your database

bundle exec rake db:setup

At this early stage, we use PostgreSQL. To support the test and development environments, you'll need have Postgres installed and running. How you go about doing this is dependent on your operating system, but there are several installation guides on the PostgreSQL site.

Create the DB role you will use

In your psql console do create role californica with createdb login;. Then do bundle exec rake db:setup to setup and create the database and schema.

NOTE: The instructions above assume your PostgreSQL server is configured to allow authentication to password-less user accounts. This is an insecure configuration for Postgresql. If you would like to enable your PostgreSQL server to allow authentication to password-less user accounts, you must edit your pg_hba.conf config file (typically in the /etc/postgresql file tree somewhere), and modify the line that reads: host all all 127.0.0.1/32 md5 changing md5 to trust. However, we recommend you consider creating your californica role with a password, by entering the following in your psql console: create user californica CREATEDB PASSWORD 'californica'; If you DO create your californica role with a password, you will need to use a dotenv file. See the Configuration with dotenv section below.


Start Redis

On Linux, run start redis redis-server & (Ubuntu starts Redis automatically, so this will just complain that the port is already taken and exit.)

On MacOS (w/ Homebrew), run brew install redis && brew services start redis to install redis and start it as a system service (which will restart every time you log in).

Run the CI test suite to bootstrap the test environment

bundle exec rake ci

You should see all tests pass at this point, investigate and resolve any failures.

Install Java?

You may have to install Java at this point if it you do not already have it installed.

To see if you have it installed: $java -version

To install on Mac: $brew cask install java

Confirm your ability to run the test suite without running the ci rake task

To support running individual tests

Or run to the application test suite without restarting the test servers

bundle exec rake hydra:test_server

Once the servers have started open another terminal window and run the RSpec tests

bundle exec rspec spec

These tests should also pass, investigate and resolve any failures.

Start a development server to begin working on Californica

At this point, you can start a development server with

bundle exec rake hydra:server

Troubleshooting Nokogiri

If you have trouble with nokogiri, see Installing Nokogiri for troubleshooting advice.

Configuration with dotenv

NOTE setting up a .env file is not required, and may actually lead to needless confusion. If this is the first time you've set up a development environment, only set up a .env file if you have a documented reason for setting one up, or if you're just trying to learn more about dotenv.

We use dotenv to manage configuration across environments. The .env.sample file lists the variables configurable in this way, along with plausible development defaults.

If you want custom configuration in development and test environments, you can add a .env, .env.development and/or .env.test, all of which are ignored by Git. Custom configuration here may require some custom setup (e.g. using password authentication for the your database user).

In production, these environment variables should be set by .env.production at deploy time and from a secret source.


Installation - Ursus

Clone the project repository

git clone [email protected]:uclalibrary/ursus.git

Change directories into ursus

cd ursus

Install dependencies

bundle install

Confirm your ability to run the test suite

To support running individual tests

Or run to the application test suite without restarting the test servers
Run this in your Californica repo

bundle exec rake hydra:test_server

Once the servers have started run the RSpec tests in Ursus

Run this in your Ursus repo

bundle exec rspec spec

Setting up a Californica development environment, VM style

Choose your path: "Native" or VM

The "native-style" development environment will run entirely on your own computer. Choose this path if you'd like to get a deeper understanding of how all the pieces fit together and work, but also understand this environment will be somewhat different than what is running in production.

The VM-style development environment has as a goal to run a production-like environment in a virtual machine, hosted on your computer. It is also generally easier to get started with using, particularly if you've already installed the requirements (Vagrant and Virtualbox).

VM-style Environment

Requirements

These are things that must be installed on your system in order for you to successfully use the VM. Installation instructions are available at the links.

  • Vagrant - version 1.9.1 or above.
  • VirtualBox - version 5.1.34 or above
  • SSHFS - Mac users should see the OS specific instructions below
  • vagrant-sshfs (Note: If you update Vagrant, you'll also need to update your plugins)
  • An ssh-agent with your GitHub key added - See the ssh-agent section below, if needed

Setting up SSHFS on a Mac

You can install Fuse for MacOS, which is a dependency of SSHFS, using brew (e.g., brew install osxfuse), but the version of sshfs currently in Brew has a bug that causes mounted VirtualBox directories to become unmounted once the machine goes to sleep. To work around this, you will need to install SSHFS from the OSXFUSE SSHFS GitHub releases page. It's distributed as a package so it can just be double clicked to be installed once it's been downloaded. Do not use the version of sshfs currently available through brew.

If you have Sentinel One installed on your Mac, and you don't already have Fuse for MacOS installed, you might have difficulty installing osxfuse through Brew. This can be worked around by temporarily disabling Sentinel One until after the Mac for Fuse application has been installed. You might have to ask a system admin to help you with this since Sentinel One is a centralized security product.

Setting up an SSH agent

An SSH key allows you to connect to a resource like GitHub without having to input a username and password each time. The VM will forward all SSH key requests to your host system so you'll need to have an SSH agent running on that machine to receive those requests and handle the GitHub authentication interaction. Once this is setup you'll be able to push branches to GitHub to save your in process work.

GitHub has a help page on how to generate a new SSH key (if needed) and add it to your ssh-agent. It explains the process for Windows, Mac, and Linux users. Once you have an SSH key added to your host machine's ssh-agent you'll be able to interact with GitHub from within the VM using the key that lives on your host machine.

All set? Let's get started

You will be using Our Californica Vagrant box as a starting point for your development environment. Run the following on a command line:

cd path-to-where-you-keep-project-files
mkdir vagrant-californica
cd vagrant-californica
vagrant init uclalibrary/californica
vagrant up

You should now be able to vagrant ssh into your developer workspace.

Using the VM

Once you've SSHed into the system you'll see you're logged in as the vagrant user. In that user's home directory you will see a californica directory. This is the code that's been checked out from GitHub for you. You can use a text editor within the VM or, if you prefer, you can use a text editor (or IDE) on your host system to edit this code.

So, how do you do that? If you look inside the vagrant-californica directory on your host machine, you'll notice that the code from the VM's californica directory is also mounted on your host system as californica. You can edit those files using a text editor (or IDE) on your host system and, when you do, you'll be changing files within the VM.

Warning: The mounted californica directory's contents will disappear when you vagrant destroy your system. So if you use vagrant destroy (instead of vagrant halt), make sure that you have persisted any changes you want to save to a GitHub branch. The californica directory's contents will also only appear on your host machine when you have your VM running (because it's just a mounted drive).

The services that are running inside the VM are also available for you to access from your host machine. Vagrant does this by proxying the ports for your host system. These URLs provide access to the VM's internal services:

The first time you visit the Hyrax URL there will be a slight delay as it builds the content that it's going to serve.

Confirming everything is working

Once you have a running VM you might want to confirm that you can do things like run tests, etc. To do that from within your existing vagrant ssh session, type the following:

cd ~/californica
bundle exec rake hydra:test_server

This will start a test server than will run in that terminal. To actually run the tests you'll have to open a new vagrant ssh session from your host machine. Once you've done that you can type the following:

cd ~/californica
bundle exec rake spec

This should run the project's tests within that new terminal. You'll be able to see if they pass or not.

That should be it! You're ready to start working with the code. If you have any issues with the vagrant VM, feel free to file tickets for improvement at https://github.com/UCLALibrary/packer-samvera/issues

Potential gotchas

Developing without a network connection

When cap localhost deploy is used to deploy in the developer's VM environment, it's not just deploying what's on the developer's VM. It takes a Git checkout of a branch (by default, master) and deploys that. So, changes to things like the Gemfile on your local machine won't be reflected on your dev box server unless you first commit and push them up to a branch in the Californica GitHub repository. Once this is done, you can run:

BRANCH=my_working_branch bundle exec cap localhost deploy

Note that this default behaviour makes some localhost development impossible without a network connection. There is a ticket to fix this (so that the Git repo that's used for cap localhost deploy would be the one on the developer's box). Once that ticket is implemented, development without a network connection will be possible.

Updating Your Box / Code

Updating your code on the VM behaves just like any other Git checkout. You change into your project directory and run: git pull.

The virtual machine on Vagrant Cloud is also built nightly with the latest version of the code checked out from the project directory. This ensures someone grabbing the VM for the first time has the latest version of the code. Someone developing on the code over a period of time, though, might not want to have their environment continuously updated. For this reason, the Vagrant box is configured to not update automatically. If you want to update your Vagrant box to the latest version, you still can just by typing:

vagrant box update

Contact

If you have any issues with using the box, please feel free to create a ticket in the packer-samvera project's issues queue so that we can either assist you or resolve the underlying problem with the box.

Tips and Tricks

Out of the Box Demo

You can see a demonstration of the generic Blacklight plugin at http://demo.projectblacklight.org


speed up solr_wrapper and fcrepo_wrapper with dotfiles

The testing and development servers utilize the solr_wrapper and fcrepo_wrapper gems. Both of these gems can be configured to cache the files they download. Putting the following configuration dot files in your home folder will save you some time down the road.

# ~/.solr_wrapper 
version: 6.2.2
download_dir: /full/path/to/your/Downloads/folder/
url: http://archive.apache.org/dist/lucene/solr/6.6.2/solr-6.6.2.zip
validate: false
# ~/.fcrepo_wrapper 
download_dir: /full/path/to/your/Downloads/folder/
validate: false

Use a Pre-commit hook script to avoid commits that fail rubocop style checks

The Travis CI tests will run Rubocop over your pull request. Wouldn't it be nice knowing that your commits won't ever fail this style check? You can make it impossible (or at least slightly more difficult) to commit any work that fails a Rubocop check. Here's how: follow this guide to use the pre-commit gem to enforce Rubocop rules for every commit you make to Californica.

Update Blacklight to v7.3.0 FAILURES

Update Blacklight to v7.3.0


Post-install message from i18n:

HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
But that may break your application.

Please check your Rails app for 'config.i18n.fallbacks = true'.
If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
'config.i18n.fallbacks = [I18n.default_locale]'.
If not, fallbacks will be broken in your app by I18n 1.1.x.

For more info see:
https://github.com/svenfuchs/i18n/releases/tag/v1.1.0


142 examples, 54 failures

Failed examples:

  1. system/next_previous_on_show_spec.rb:19
    • the result bar displays the correct links has expected fields on initial search page and show page
  2. system/collection_block_view_spec.rb:18
    • Search results page displays a collection via a facet
  3. system/collection_block_view_spec.rb:47
    • Search results page when collection data is missing loads without an error
  4. system/collection_block_view_spec.rb:33
    • Search results page the placeholder displays the correct search prompt when on a search open to a particular collection
  5. system/collection_block_view_spec.rb:38
    • Search results page the placeholder displays the correct search prompt when on the home page
  6. system/view_work_spec.rb:105
    • View a Work loads UV on the page with the correct controls
  7. system/view_work_spec.rb:76
    • View a Work displays facetable fields as links
  8. system/view_work_spec.rb:91
    • View a Work only displays the tools we want to support
  9. system/view_work_spec.rb:17
    • View a Work displays the metadata
  10. system/view_work_spec.rb:69
    • View a Work license displays the creative commons text and logo when there is a cc license
  11. system/show_collection_spec.rb:49
    • Search results page displays the metadata
  12. system/show_collection_spec.rb:62
    • Search results page displays headings
  13. system/show_collection_spec.rb:73
    • Search results page license displays the creative commons text and logo when there is a cc license
  14. system/search_crawler_spec.rb:6
    • Search History Page crawler search does remember human searches
  15. system/search_crawler_spec.rb:12
    • Search History Page crawler search does not remember bot searches
  16. system/photographer_display_spec.rb:20
    • The photographer field of the item display view lists the photographer as a link to a search for that photographer
  17. system/search_collection_results_spec.rb:23
    • Search collection results page displays collection: title, description,
  18. system/search_collection_results_spec.rb:29
    • Search collection results page has a gallery view button
  19. system/search_collection_results_spec.rb:34
    • Search collection results page has a list view button
  20. system/subject_display_spec.rb:21
    • The subject field of the item display view lists each subject on its own line, as a link to a search for that subject
  21. system/search_catalog_spec.rb:87
    • Search the catalog gets correct search results
  22. system/search_catalog_spec.rb:99
    • Search the catalog searches the right fields
  23. system/search_catalog_spec.rb:117
    • Search the catalog has expected facet links
  24. system/search_catalog_spec.rb:128
    • Search the catalog has expected view more links
  25. system/about_spec.rb:10
    • viewing the about page has an accordion element
  26. system/about_spec.rb:5
    • viewing the about page has the right header
  27. system/search_results_spec.rb:30
    • Search results page
  28. system/search_results_spec.rb:64
    • Search results page displays the old site link on page with no results
  29. system/search_results_spec.rb:108
    • Search results page visiting the home page and getting the correct search field options
  30. system/search_results_spec.rb:82
    • Search results page displays Gallery View results with a collection item
  31. system/search_results_spec.rb:135
    • Search results page has correct sorting behavior for title
  32. system/search_results_spec.rb:75
    • Search results page displays Gallery View results
  33. system/search_results_spec.rb:90
    • Search results page displays List View results
  34. system/search_results_spec.rb:117
    • Search results page gets the correct results using the drop down search
  35. system/search_results_spec.rb:100
    • Search results page displays List View results with a collection item
  36. system/search_results_spec.rb:69
    • Search results page uses AND not OR for search results by default
  37. system/facet_by_date_spec.rb:30
    • Search the catalog gets correct search results
  38. system/genre_display_spec.rb:20
    • The genre field of the item display view lists each genre on its own line, as a link to a search for that genre
  39. system/view_metadata_only_work_spec.rb:38
    • View a metadata-only Work only displays Universal Viewer if user has at least "read"-level access
  40. system/view_home_page_spec.rb:41
    • viewing the home page doesn't have Google Analytics when it shouldn't
  41. system/view_home_page_spec.rb:31
    • viewing the home page has a privacy policy link
  42. system/view_home_page_spec.rb:21
    • viewing the home page has an feedback link
  43. system/view_home_page_spec.rb:36
    • viewing the home page has a contact link
  44. system/view_home_page_spec.rb:26
    • viewing the home page has a copyright & collections link
  45. system/view_home_page_spec.rb:11
    • viewing the home page has h1
  46. system/view_home_page_spec.rb:6
    • viewing the home page has a 200 status code
  47. system/view_home_page_spec.rb:47
    • viewing the home page has Google Analytics when it should
  48. system/view_home_page_spec.rb:16
    • viewing the home page has an About link
  49. system/link_breaks_spec.rb:47
    • View a a work with breaks displays line breaks between the values of certain fields
  50. system/facet_labels_spec.rb:62
    • The facet sidebar has a Genre button for the selected facet display
  51. system/facet_labels_spec.rb:48
    • The facet sidebar has a Subject button for the selected facet display
  52. system/facet_labels_spec.rb:55
    • The facet sidebar has a Resource Type button for the selected facet display
  53. system/facet_labels_spec.rb:28
    • The facet sidebar displays expected facet labels
  54. system/facet_labels_spec.rb:43
    • The facet sidebar has the text Refine your search not limit

  1. create_worker
  2. realize
  3. run_task
  4. find_all_linked_assets
  5. synchronize
  6. valid_asset_uri?
  7. start_with?
  8. ``
  9. ``
  10. ``
  11. ``
  12. ``
  13. ``

Every Test has this Error

 NoMethodError:
    + undefined method `start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp

Randomized with seed 54316

Failures:

  1. the result bar displays the correct links has expected fields on initial search page and show page

    ActionView::Template::Error:
    undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp
    Screenshot: tmp/screenshots/failures_r_spec_example_groups_the_result_bar_displays_the_correct_links_has_expected_fields_on_initial_search_page_and_show_page_831.png

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker

    • --- Caused by: ---
    • NoMethodError:
    • undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?
  2. Search results page displays a collection via a facet Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker

    • --- Caused by: ---
    • NoMethodError:
    • undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?
  3. Search results page when collection data is missing loads without an error Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

    ActionView::Template::Error: undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' +[36m# /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker

    • --- Caused by: ---
    • NoMethodError:
    • undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?
  4. Search results page the placeholder displays the correct search prompt when on a search open to a particular collection Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

    ActionView::Template::Error: undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker

    • --- Caused by: ---
    • NoMethodError:
    • undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?'
  5. Search results page the placeholder displays the correct search prompt when on the home page Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

    ActionView::Template::Error: undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker

    • --- Caused by: ---
    • NoMethodError:
    • undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?
  6. View a Work loads UV on the page with the correct controls Got 1 failure and 1 other error:
    6.1) Failure/Error: expect(page.html).to match(/universal-viewer-iframe/)

expected "<html><head></head><body><pre style=\"word-wrap: break-word; white-space: pre-wrap;\">
Puma caught th...oncurrent/executor/ruby_thread_pool_executor.rb:319:
in block in create_worker'</pre></body></html>" to match /universal-viewer-iframe/

Diff:
@@ -1,2 +1,19 @@
-/universal-viewer-iframe/
<html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">

Puma caught this error: undefined method start_with? for /\.(?:svg|eot|woff|ttf)\z/:Regexp (ActionView::Template::Error)

+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?`
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve`
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset`
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets`
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in `execute`
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in `synchronize`
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize`
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize`
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute`
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in `realize`
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task`
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in `create_worker`
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop`
m +/usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in `create_worker`
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch`
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in `create_worker'</pre></body></html>`

      [Screenshot]: tmp/screenshots/failures_r_spec_example_groups_view_a_work_loads_uv_on_the_page_with_the_correct_controls_31.png


+ ./spec/system/view_work_spec.rb:107:in block (2 levels) in `<top (required)>`
 6.2) Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false  
      ActionView::Template::Error:
        undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp

      [Screenshot]: tmp/screenshots/failures_r_spec_example_groups_view_a_work_loads_uv_on_the_page_with_the_correct_controls_31.png

+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
+ ------------------
+ --- Caused by: ---
+ NoMethodError:
+   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
+   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  1. View a Work displays facetable fields as links Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  2. View a Work only displays the tools we want to support Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  3. View a Work displays the metadata Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp Screenshot: tmp/screenshots/failures_r_spec_example_groups_view_a_work_displays_the_metadata_395.png �]1337;File=name=ZmFpbHVyZXNfcl9zcGVjX2V4YW1wbGVfZ3JvdXBzX3ZpZXdfYV93b3JrX2Rpc3BsYXlzX3RoZV

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  4. View a Work license displays the creative commons text and logo when there is a cc license Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp Screenshot: tmp/screenshots/failures_r_spec_example_groups_view_a_work_license_displays_the_creative_commons_text_and_logo_when_there_is_a_cc_license_914.png

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  5. Search results page displays the metadata Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp Screenshot: tmp/screenshots/failures_r_spec_example_groups_search_results_page_3_displays_the_metadata_363.png

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  6. Search results page displays headings Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp Screenshot: tmp/screenshots/failures_r_spec_example_groups_search_results_page_3_displays_headings_315.png

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'0m
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  7. Search results page license displays the creative commons text and logo when there is a cc license Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp Screenshot: tmp/screenshots/failures_r_spec_example_groups_search_results_page_3_license_displays_the_creative_commons_text_and_logo_when_there_is_a_cc_license_943.png

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  8. Search History Page crawler search does remember human searches Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  9. Search History Page crawler search does not remember bot searches Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  10. The photographer field of the item display view lists the photographer as a link to a search for that photographer Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  11. Search collection results page displays collection: title, description, Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  12. Search collection results page has a gallery view button Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  13. Search collection results page has a list view button Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'�[0m
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  14. The subject field of the item display view lists each subject on its own line, as a link to a search for that subject Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  15. Search the catalog gets correct search results Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  16. Search the catalog searches the right fields Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?'
  17. Search the catalog has expected facet links Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error: undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  18. Search the catalog has expected view more links Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?'
  19. viewing the about page has an accordion element Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

ActionView::Template::Error:

  • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

--- Caused by: --- NoMethodError:

  • undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
26. viewing the about page has the right header

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp

  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

--- Caused by: --- NoMethodError:

  • undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
27. Search results page 

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp

  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  m# /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
  # ------------------
  # --- Caused by: ---
  # NoMethodError:
  #   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  #   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
28. Search results page displays the old site link on page with no results

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

  ActionView::Template::Error:
    undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  
  
  
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
  # ------------------
  # --- Caused by: ---
  # NoMethodError:
  #   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  #   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
29. Search results page visiting the home page and getting the correct search field options

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

  ActionView::Template::Error:
    undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
  # ------------------
  # --- Caused by: ---
  # NoMethodError:
  #   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  #   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
30. Search results page displays Gallery View results with a collection item

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

  ActionView::Template::Error:
    undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
  # ------------------
  # --- Caused by: ---
  # NoMethodError:
  #   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  #   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
31. Search results page has correct sorting behavior for title

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

  ActionView::Template::Error:
    undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  
  
  
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
  # ------------------
  # --- Caused by: ---
  # NoMethodError:
  #   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  #   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
32. Search results page displays Gallery View results

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

  ActionView::Template::Error:
    undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
  # ------------------
  # --- Caused by: ---
  # NoMethodError:
  #   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  #   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
33. Search results page displays List View results
 Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
  
  ActionView::Template::Error:
    undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  
  
  
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
  # ------------------
  # --- Caused by: ---
  # NoMethodError:
  #   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp

/usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'

34. Search results page gets the correct results using the drop down search
 Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
  
  ActionView::Template::Error:
    undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  
  
  
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
  # ------------------
  # --- Caused by: ---
  # NoMethodError:
  #   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  #   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
35. Search results page displays List View results with a collection item

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false

  ActionView::Template::Error:
    undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  
  
  
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
  # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
  # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
  # ------------------
  # --- Caused by: ---
  # NoMethodError:
  #   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
  #   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  1. Search results page uses AND not OR for search results by default Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  2. Search the catalog gets correct search results Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
38. The genre field of the item display view lists each genre on its own line, as a link to a search for that genre

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker' + ------------------ + --- Caused by: --- + NoMethodError: + undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' 39. View a metadata-only Work only displays Universal Viewer if user has at least "read"-level access Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' + ------------------ + --- Caused by: --- + NoMethodError: + undefined method start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'

40. viewing the home page doesn't have Google Analytics when it shouldn't

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker' + ------------------ + --- Caused by: --- + NoMethodError: + undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?'

41. viewing the home page has a privacy policy link

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker' + ------------------ + --- Caused by: --- + NoMethodError: + undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' 42. viewing the home page has an feedback link

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false  
      ActionView::Template::Error:  
        undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
    + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
    + ------------------
    + --- Caused by: ---
    + NoMethodError:
    +   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
    +   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  1. viewing the home page has a contact link Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  2. viewing the home page has a copyright & collections link Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'

45. viewing the home page has h1
  Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false  
  ActionView::Template::Error:  
    undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
+ /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
+ /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
+ ------------------
+ --- Caused by: ---
+ NoMethodError:
+   undefined method `start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp
+   /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
  1. viewing the home page has a 200 status code Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'

    /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'

    /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'

    /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'

    /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'

    /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

    ------------------

    --- Caused by: ---

    NoMethodError:

    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp

    /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'

  2. viewing the home page has Google Analytics when it should Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
    ActionView::Template::Error:
    undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in `resolve'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in `find_asset'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in `find_all_linked_assets'
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in `block in realize'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    • /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'

    • --- Caused by: ---
    • NoMethodError:
    • undefined method `start_with?' for /.(?:svg|eot|woff|ttf)\z/:Regexp
    • /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
48. viewing the home page has an About link

Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker' + ------------------ + --- Caused by: --- + NoMethodError: + undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' 49. View a a work with breaks displays line breaks between the values of certain fields Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker' + ------------------ + --- Caused by: --- + NoMethodError: + undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' 50. The facet sidebar has a Genre button for the selected facet display
Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker' + ------------------ + --- Caused by: --- + NoMethodError: + undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' 51) The facet sidebar has a Subject button for the selected facet display
Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker' + ------------------ + --- Caused by: --- + NoMethodError: + undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' 52. The facet sidebar has a Resource Type button for the selected facet display
Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' + /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker' + ------------------ + --- Caused by: --- + NoMethodError: + undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp + /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' 53. The facet sidebar displays expected facet labels Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error:
undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker' # ------------------ # --- Caused by: --- # NoMethodError: # undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' 54. The facet sidebar has the text Refine your search not limit Failure/Error: str.start_with?("file://".freeze) && parse_asset_uri(str) ? true : false
ActionView::Template::Error: undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?' # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/resolve.rb:27:in resolve' # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:79:in find_asset' # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/base.rb:88:in find_all_linked_assets' # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/manifest.rb:125:in block (2 levels) in find' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:24:in block in execute' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in block in synchronize' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in synchronize' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb:19:in execute' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb:563:in block in realize' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in run_task' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in block (3 levels) in create_worker' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in loop' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in block (2 levels) in create_worker' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in catch' # /usr/local/bundle/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in block in create_worker' # ------------------ # --- Caused by: --- # NoMethodError: # undefined method start_with?' for /\.(?:svg|eot|woff|ttf)\z/:Regexp # /usr/local/bundle/gems/sprockets-4.0.0/lib/sprockets/uri_utils.rb:78:in valid_asset_uri?'

User.first

User.first as of 7-26-19

User  
  id: 1  
  email: "[email protected]"  
  created_at: "2019-07-26 18:40:35"  
  updated_at: "2019-07-26 18:46:47"  
  guest: false  
  facebook_handle: nil  
  twitter_handle: nil  
  googleplus_handle: nil  
  display_name: "Default Admin"  
  address: nil  
  admin_area: nil  
  department: nil  
  title: nil  
  office: nil  
  chat_id: nil  
  website: nil  
  affiliation: nil  
  telephone: nil  
  avatar_file_name: nil  
  avatar_content_type: nil  
  avatar_file_size: nil  
  avatar_updated_at: nil  
  linkedin_handle: nil  
  orcid: nil  
  arkivo_token: nil  
  arkivo_subscription: nil  
  zotero_token: nil  
  zotero_userid: nil  
  preferred_locale: "en">  

Work.first

As of 7-26-19 Work.first

<Work  
 id: "jmn09000zz-89112"  
 head: []  
 tail: []  
 depositor: "[email protected]"  
 title: ["Broadway at 7th St. looking South Los Angeles, Calif."]  
 date_uploaded: "2019-07-26 19:09:15"  
 date_modified: "2019-07-26 19:09:15"  
 state: nil  
 proxy_depositor: nil  
 on_behalf_of: nil  
 arkivo_checksum: nil  
 owner: nil  
 alternative_title: []  
 ark: "ark:/21198/zz00090nmj"  
 architect: []  
 author: []  
 caption: []  
 dimensions: ["14 x 8.5 cm. (5.5 x 3 in.)"]  
 dlcs_collection_name: ["California Postcards Collection. Department of Special Collections, Charles E. Young Research Library, UCLA."]  
 extent: ["1 photographic postcard"]  
 funding_note: []  
 genre: ["Cityscape photographs", "photographic postcards"]  
 latitude: []  
 location: ["Los Angeles (Calif.)"]  
 local_identifier: ["clus_1351_b11_fbroadway_1"]  
 longitude: []  
 master_file_path: "Masters/dlmasters/postcards/masters/21198-zz00090n..."  
 medium: []  
 named_subject: []  
 normalized_date: []  
 photographer: []  
 place_of_origin: []  
 repository: ["University of California, Los Angeles. Library Special Collections"]  
 rights_country: ["US"]  
 rights_holder: []  
 services_contact: []  
 summary: []  
 support: []  
 uniform_title: []  
 label: nil  
 relative_path: nil  
 import_url: nil  
 resource_type: ["http://id.loc.gov/vocabulary/resourceTypes/img"]  
 creator: []  
 contributor: []  
 description: ["No sender's message."]  
 keyword: []  
 license: []  
 rights_statement: ["http://vocabs.library.ucla.edu/rights/unknown"]  
 publisher: []  
 date_created: []  
 subject: ["City & town life--California--Los Angeles"]  
 language: []  
 identifier: []  
 based_near: []  
 related_url: []  
 bibliographic_citation: []  
 source: []  
 access_control_id: "e8d829b8-fec8-4be5-955f-e47a4ccfbe35"  
 representative_id: nil  
 thumbnail_id: nil  
 rendering_ids: []  
 admin_set_id: "admin_set/default"  
 embargo_id: nil  
 lease_id: nil>  

Work Indexer

work_indexer.rb

WorkIndexer.new(w)

=> #<WorkIndexer:0x000055f58fd485e8 
@object=#<Work id: "jmn09000zz-89112",  
 head: [],  
 tail: [],  
 depositor: "[email protected]",  
 title: ["Broadway at 7th St. looking South Los Angeles,  
 Calif."],  
 date_uploaded: "2019-07-26 19:09:15",  
 date_modified: "2019-07-26 19:09:15",  
 state: nil,  
 proxy_depositor: nil,  
 on_behalf_of: nil,  
 arkivo_checksum: nil,  
 owner: nil,  
 alternative_title: [],  
 ark: "ark:/21198/zz00090nmj",  
 architect: [],  
 author: [],  
 caption: [],  
 dimensions: ["14 x 8.5 cm. (5.5 x 3 in.)"],  
 dlcs_collection_name: ["California Postcards Collection. Department of Special Collections,  
 Charles E. Young Research Library,  
 UCLA."],  
 extent: ["1 photographic postcard"],  
 funding_note: [],  
 genre: ["photographic postcards",  
 "Cityscape photographs"],  
 latitude: [],  
 location: ["Los Angeles (Calif.)"],  
 local_identifier: ["clus_1351_b11_fbroadway_1"],  
 longitude: [],  
 master_file_path: "Masters/dlmasters/postcards/masters/21198-zz00090n...",  
 medium: [],  
 named_subject: [],  
 normalized_date: [],  
 photographer: [],  
 place_of_origin: [],  
 repository: ["University of California,  
 Los Angeles. Library Special Collections"],  
 rights_country: ["US"],  
 rights_holder: [],  
 services_contact: [],  
 summary: [],  
 support: [],  
 uniform_title: [],  
 label: nil,  
 relative_path: nil,  
 import_url: nil,  
 resource_type: ["http://id.loc.gov/vocabulary/resourceTypes/img"],  
 creator: [],  
 contributor: [],  
 description: ["No sender's message."],  
 keyword: [],  
 license: [],  
 rights_statement: ["http://vocabs.library.ucla.edu/rights/unknown"],  
 publisher: [],  
 date_created: [],  
 subject: ["City & town life--California--Los Angeles"],  
 language: [],  
 identifier: [],  
 based_near: [],  
 related_url: [],  
 bibliographic_citation: [],  
 source: [],  
 access_control_id: "e8d829b8-fec8-4be5-955f-e47a4ccfbe35",  
 representative_id: nil,  
 thumbnail_id: nil,  
 rendering_ids: [],  
 admin_set_id: "admin_set/default",  
 embargo_id: nil,  
 lease_id: nil>>  

respond_to? is a Ruby method for detecting whether the class has a particular method on it. For example,
child.respond_to? :master_file_path

human_readable_rights_statement

rights_terms = Qa::Authorities::Local.subauthority_for('rights_statements').all  
{"id"=>"http://vocabs.library.ucla.edu/rights/copyrighted", "label"=>"copyrighted", "active"=>true},  
{"id"=>"http://vocabs.library.ucla.edu/rights/unknown", "label"=>"unknown", "active"=>true},  
{"id"=>"http://vocabs.library.ucla.edu/rights/publicDomain", "label"=>"public domain", "active"=>true}

human_readable_resource_type

rights_terms = Qa::Authorities::Local.subauthority_for('resource_types').all

=> [  
{"id"=>"http://id.loc.gov/vocabulary/resourceTypes/car", "label"=>"cartographic", "active"=>true},  
 {"id"=>"http://id.loc.gov/vocabulary/resourceTypes/col", "label"=>"collection", "active"=>true},  
 {"id"=>"http://id.loc.gov/vocabulary/resourceTypes/mix", "label"=>"mixed material", "active"=>true},  
 {"id"=>"http://id.loc.gov/vocabulary/resourceTypes/mov", "label"=>"moving image", "active"=>true},  
 {"id"=>"http://id.loc.gov/vocabulary/resourceTypes/not", "label"=>"notated music", "active"=>true},  
 {"id"=>"http://id.loc.gov/vocabulary/resourceTypes/aud", "label"=>"sound recording", "active"=>true},  
 {"id"=>"http://id.loc.gov/vocabulary/resourceTypes/aum", "label"=>"sound recording-musical", "active"=>true},  
 {"id"=>"http://id.loc.gov/vocabulary/resourceTypes/aun", "label"=>"sound recording-nonmusical", "active"=>true},  
 {"id"=>"http://id.loc.gov/vocabulary/resourceTypes/img", "label"=>"still image", "active"=>true},  
 {"id"=>"http://id.loc.gov/vocabulary/resourceTypes/txt", "label"=>"text", "active"=>true},  
 {"id"=>"http://id.loc.gov/vocabulary/resourceTypes/art", "label"=>"three dimensional object", "active"=>true}  
 ]

human_readable_language

rights_terms = Qa::Authorities::Local.subauthority_for('languages').all

 rights_terms = Qa::Authorities::Local.subauthority_for('languages').all
=> [ 
{"id"=>"aar", "label"=>"Afar", "active"=>true},  
{"id"=>"abk", "label"=>"Abkhaz", "active"=>true},  
{"id"=>"ace", "label"=>"Achinese", "active"=>true},  
{"id"=>"ach", "label"=>"Acoli", "active"=>true},  
{"id"=>"ada", "label"=>"Adangme", "active"=>true},  
{"id"=>"ady", "label"=>"Adygei", "active"=>true},  
{"id"=>"afa", "label"=>"Afroasiatic (Other)", "active"=>true},  
{"id"=>"afh", "label"=>"Afrihili (Artificial language)", "active"=>true},  
{"id"=>"afr", "label"=>"Afrikaans", "active"=>true},  
{"id"=>"ain", "label"=>"Ainu", "active"=>true},  
{"id"=>"ajm", "label"=>"Aljamía", "active"=>true},  
{"id"=>"aka", "label"=>"Akan", "active"=>true},  
{"id"=>"akk", "label"=>"Akkadian", "active"=>true},  
{"id"=>"alb", "label"=>"Albanian", "active"=>true},  
{"id"=>"ale", "label"=>"Aleut", "active"=>true},  
{"id"=>"alg", "label"=>"Algonquian (Other)", "active"=>true},  
{"id"=>"alt", "label"=>"Altai", "active"=>true},  
{"id"=>"amh", "label"=>"Amharic", "active"=>true},  
{"id"=>"ang", "label"=>"English, Old (ca. 450-1100)", "active"=>true},  
{"id"=>"anp", "label"=>"Angika", "active"=>true},  
{"id"=>"apa", "label"=>"Apache languages", "active"=>true},  
{"id"=>"ara", "label"=>"Arabic", "active"=>true},  
{"id"=>"arc", "label"=>"Aramaic", "active"=>true},  
{"id"=>"arg", "label"=>"Aragonese", "active"=>true},  
{"id"=>"arm", "label"=>"Armenian", "active"=>true},  
{"id"=>"arn", "label"=>"Mapuche", "active"=>true},  
{"id"=>"arp", "label"=>"Arapaho", "active"=>true},  
{"id"=>"art", "label"=>"Artificial (Other)", "active"=>true},  
{"id"=>"arw", "label"=>"Arawak", "active"=>true},  
{"id"=>"asm", "label"=>"Assamese", "active"=>true},  
{"id"=>"ast", "label"=>"Bable", "active"=>true},  
{"id"=>"ath", "label"=>"Athapascan (Other)", "active"=>true},  
{"id"=>"aus", "label"=>"Australian languages", "active"=>true},  
{"id"=>"ava", "label"=>"Avaric", "active"=>true},  
{"id"=>"ave", "label"=>"Avestan", "active"=>true},  
{"id"=>"awa", "label"=>"Awadhi", "active"=>true},  
{"id"=>"aym", "label"=>"Aymara", "active"=>true},  
{"id"=>"aze", "label"=>"Azerbaijani", "active"=>true},  
{"id"=>"bad", "label"=>"Banda languages", "active"=>true},  
{"id"=>"bai", "label"=>"Bamileke languages", "active"=>true},  
{"id"=>"bak", "label"=>"Bashkir", "active"=>true},  
{"id"=>"bal", "label"=>"Baluchi", "active"=>true},  
{"id"=>"bam", "label"=>"Bambara", "active"=>true},  
{"id"=>"ban", "label"=>"Balinese", "active"=>true},  
{"id"=>"baq", "label"=>"Basque", "active"=>true},  
{"id"=>"bas", "label"=>"Basa", "active"=>true},  
{"id"=>"bat", "label"=>"Baltic (Other)", "active"=>true},  
{"id"=>"bej", "label"=>"Beja", "active"=>true},  
{"id"=>"bel", "label"=>"Belarusian", "active"=>true},  
{"id"=>"bem", "label"=>"Bemba", "active"=>true},  
{"id"=>"ben", "label"=>"Bengali", "active"=>true},  
{"id"=>"ber", "label"=>"Berber (Other)", "active"=>true},  
{"id"=>"bho", "label"=>"Bhojpuri", "active"=>true},  
{"id"=>"bih", "label"=>"Bihari (Other)", "active"=>true},  
{"id"=>"bik", "label"=>"Bikol", "active"=>true},  
{"id"=>"bin", "label"=>"Edo", "active"=>true},  
{"id"=>"bis", "label"=>"Bislama", "active"=>true},  
{"id"=>"bla", "label"=>"Siksika", "active"=>true},  
{"id"=>"bnt", "label"=>"Bantu (Other)", "active"=>true},  
{"id"=>"bos", "label"=>"Bosnian", "active"=>true},  
{"id"=>"bra", "label"=>"Braj", "active"=>true},  
{"id"=>"bre", "label"=>"Breton", "active"=>true},  
{"id"=>"btk", "label"=>"Batak", "active"=>true},  
{"id"=>"bua", "label"=>"Buriat", "active"=>true},  
{"id"=>"bug", "label"=>"Bugis", "active"=>true},  
{"id"=>"bul", "label"=>"Bulgarian", "active"=>true},  
{"id"=>"bur", "label"=>"Burmese", "active"=>true},  
{"id"=>"byn", "label"=>"Bilin", "active"=>true},  
{"id"=>"cad", "label"=>"Caddo", "active"=>true},  
{"id"=>"cai", "label"=>"Central American Indian (Other)", "active"=>true},  
{"id"=>"cam", "label"=>"Khmer", "active"=>true},  
{"id"=>"car", "label"=>"Carib", "active"=>true},  
{"id"=>"cat", "label"=>"Catalan", "active"=>true},  
{"id"=>"cau", "label"=>"Caucasian (Other)", "active"=>true},  
{"id"=>"ceb", "label"=>"Cebuano", "active"=>true},  
{"id"=>"cel", "label"=>"Celtic (Other)", "active"=>true},  
{"id"=>"cha", "label"=>"Chamorro", "active"=>true},  
{"id"=>"chb", "label"=>"Chibcha", "active"=>true},  
{"id"=>"che", "label"=>"Chechen", "active"=>true},  
{"id"=>"chg", "label"=>"Chagatai", "active"=>true},  
{"id"=>"chi", "label"=>"Chinese", "active"=>true},  
{"id"=>"chk", "label"=>"Chuukese", "active"=>true},  
{"id"=>"chm", "label"=>"Mari", "active"=>true},  
{"id"=>"chn", "label"=>"Chinook jargon", "active"=>true},  
{"id"=>"cho", "label"=>"Choctaw", "active"=>true},  
{"id"=>"chp", "label"=>"Chipewyan", "active"=>true},  
{"id"=>"chr", "label"=>"Cherokee", "active"=>true},  
{"id"=>"chu", "label"=>"Church Slavic", "active"=>true},  
{"id"=>"chv", "label"=>"Chuvash", "active"=>true},  
{"id"=>"chy", "label"=>"Cheyenne", "active"=>true},  
{"id"=>"cmc", "label"=>"Chamic languages", "active"=>true},  
{"id"=>"cnr", "label"=>"Montenegrin", "active"=>true},  
{"id"=>"cop", "label"=>"Coptic", "active"=>true},  
{"id"=>"cor", "label"=>"Cornish", "active"=>true},  
{"id"=>"cos", "label"=>"Corsican", "active"=>true},  
{"id"=>"cpe", "label"=>"Creoles and Pidgins, English-based (Other)", "active"=>true},  
{"id"=>"cpf", "label"=>"Creoles and Pidgins, French-based (Other)", "active"=>true},  
{"id"=>"cpp", "label"=>"Creoles and Pidgins, Portuguese-based (Other)", "active"=>true},  
{"id"=>"cre", "label"=>"Cree", "active"=>true},  
{"id"=>"crh", "label"=>"Crimean Tatar", "active"=>true},  
{"id"=>"crp", "label"=>"Creoles and Pidgins (Other)", "active"=>true},  
{"id"=>"csb", "label"=>"Kashubian", "active"=>true},  
{"id"=>"cus", "label"=>"Cushitic (Other)", "active"=>true},  
{"id"=>"cze", "label"=>"Czech", "active"=>true},  
{"id"=>"dak", "label"=>"Dakota", "active"=>true},  
{"id"=>"dan", "label"=>"Danish", "active"=>true},  
{"id"=>"dar", "label"=>"Dargwa", "active"=>true},  
{"id"=>"day", "label"=>"Dayak", "active"=>true},  
{"id"=>"del", "label"=>"Delaware", "active"=>true},  
{"id"=>"den", "label"=>"Slavey", "active"=>true},  
{"id"=>"dgr", "label"=>"Dogrib", "active"=>true},  
{"id"=>"din", "label"=>"Dinka", "active"=>true},  
{"id"=>"div", "label"=>"Divehi", "active"=>true},  
{"id"=>"doi", "label"=>"Dogri", "active"=>true},  
{"id"=>"dra", "label"=>"Dravidian (Other)", "active"=>true},  
{"id"=>"dsb", "label"=>"Lower Sorbian", "active"=>true},  
{"id"=>"dua", "label"=>"Duala", "active"=>true},  
{"id"=>"dum", "label"=>"Dutch, Middle (ca. 1050-1350)", "active"=>true},  
{"id"=>"dut", "label"=>"Dutch", "active"=>true},  
{"id"=>"dyu", "label"=>"Dyula", "active"=>true},  
{"id"=>"dzo", "label"=>"Dzongkha", "active"=>true},  
{"id"=>"efi", "label"=>"Efik", "active"=>true},  
{"id"=>"egy", "label"=>"Egyptian", "active"=>true},  
{"id"=>"eka", "label"=>"Ekajuk", "active"=>true},  
{"id"=>"elx", "label"=>"Elamite", "active"=>true},  
{"id"=>"eng", "label"=>"English", "active"=>true},  
{"id"=>"enm", "label"=>"English, Middle (1100-1500)", "active"=>true},  
{"id"=>"epo", "label"=>"Esperanto", "active"=>true},  
{"id"=>"esk", "label"=>"Eskimo languages", "active"=>true},  
{"id"=>"esp", "label"=>"Esperanto", "active"=>true},  
{"id"=>"est", "label"=>"Estonian", "active"=>true},  
{"id"=>"eth", "label"=>"Ethiopic", "active"=>true},  
{"id"=>"ewe", "label"=>"Ewe", "active"=>true},  
{"id"=>"ewo", "label"=>"Ewondo", "active"=>true},  
{"id"=>"fan", "label"=>"Fang", "active"=>true},  
{"id"=>"fao", "label"=>"Faroese", "active"=>true},  
{"id"=>"far", "label"=>"Faroese", "active"=>true},  
{"id"=>"fat", "label"=>"Fanti", "active"=>true},  
{"id"=>"fij", "label"=>"Fijian", "active"=>true},  
{"id"=>"fil", "label"=>"Filipino", "active"=>true},  
{"id"=>"fin", "label"=>"Finnish", "active"=>true},  
{"id"=>"fiu", "label"=>"Finno-Ugrian (Other)", "active"=>true},  
{"id"=>"fon", "label"=>"Fon", "active"=>true},  
{"id"=>"fre", "label"=>"French", "active"=>true},  
{"id"=>"fri", "label"=>"Frisian", "active"=>true},  
{"id"=>"frm", "label"=>"French, Middle (ca. 1300-1600)", "active"=>true},  
{"id"=>"fro", "label"=>"French, Old (ca. 842-1300)", "active"=>true},  
{"id"=>"frr", "label"=>"North Frisian", "active"=>true},  
{"id"=>"frs", "label"=>"East Frisian", "active"=>true},  
{"id"=>"fry", "label"=>"Frisian", "active"=>true},  
{"id"=>"ful", "label"=>"Fula", "active"=>true},  
{"id"=>"fur", "label"=>"Friulian", "active"=>true},  
{"id"=>"gaa", "label"=>"Gã", "active"=>true},  
{"id"=>"gae", "label"=>"Scottish Gaelix", "active"=>true},  
{"id"=>"gag", "label"=>"Galician", "active"=>true},  
{"id"=>"gal", "label"=>"Oromo", "active"=>true},  
{"id"=>"gay", "label"=>"Gayo", "active"=>true},  
{"id"=>"gba", "label"=>"Gbaya", "active"=>true},  
{"id"=>"gem", "label"=>"Germanic (Other)", "active"=>true},  
{"id"=>"geo", "label"=>"Georgian", "active"=>true},  
{"id"=>"ger", "label"=>"German", "active"=>true},  
{"id"=>"gez", "label"=>"Ethiopic", "active"=>true},  
{"id"=>"gil", "label"=>"Gilbertese", "active"=>true},  
{"id"=>"gla", "label"=>"Scottish Gaelic", "active"=>true},  
{"id"=>"gle", "label"=>"Irish", "active"=>true},  
{"id"=>"glg", "label"=>"Galician", "active"=>true},  
{"id"=>"glv", "label"=>"Manx", "active"=>true},  
{"id"=>"gmh", "label"=>"German, Middle High (ca. 1050-1500)", "active"=>true},  
{"id"=>"goh", "label"=>"German, Old High (ca. 750-1050)", "active"=>true},  
{"id"=>"gon", "label"=>"Gondi", "active"=>true},  
{"id"=>"gor", "label"=>"Gorontalo", "active"=>true},  
{"id"=>"got", "label"=>"Gothic", "active"=>true},  
{"id"=>"grb", "label"=>"Grebo", "active"=>true},  
{"id"=>"grc", "label"=>"Greek, Ancient (to 1453)", "active"=>true},  
{"id"=>"gre", "label"=>"Greek, Modern (1453-)", "active"=>true},  
{"id"=>"grn", "label"=>"Guarani", "active"=>true},  
{"id"=>"gsw", "label"=>"Swiss German", "active"=>true},  
{"id"=>"gua", "label"=>"Guarani", "active"=>true},  
{"id"=>"guj", "label"=>"Gujarati", "active"=>true},  
{"id"=>"gwi", "label"=>"Gwich'in", "active"=>true},  
{"id"=>"hai", "label"=>"Haida", "active"=>true},  
{"id"=>"hat", "label"=>"Haitian French Creole", "active"=>true},  
{"id"=>"hau", "label"=>"Hausa", "active"=>true},  
{"id"=>"haw", "label"=>"Hawaiian", "active"=>true},  
{"id"=>"heb", "label"=>"Hebrew", "active"=>true},  
{"id"=>"her", "label"=>"Herero", "active"=>true},  
{"id"=>"hil", "label"=>"Hiligaynon", "active"=>true},  
{"id"=>"him", "label"=>"Western Pahari languages", "active"=>true},  
{"id"=>"hin", "label"=>"Hindi", "active"=>true},  
{"id"=>"hit", "label"=>"Hittite", "active"=>true},  
{"id"=>"hmn", "label"=>"Hmong", "active"=>true},  
{"id"=>"hmo", "label"=>"Hiri Motu", "active"=>true},  
{"id"=>"hrv", "label"=>"Croatian", "active"=>true},  
{"id"=>"hsb", "label"=>"Upper Sorbian", "active"=>true},  
{"id"=>"hun", "label"=>"Hungarian", "active"=>true},  
{"id"=>"hup", "label"=>"Hupa", "active"=>true},  
{"id"=>"iba", "label"=>"Iban", "active"=>true},  
{"id"=>"ibo", "label"=>"Igbo", "active"=>true},  
{"id"=>"ice", "label"=>"Icelandic", "active"=>true},  
{"id"=>"ido", "label"=>"Ido", "active"=>true},  
{"id"=>"iii", "label"=>"Sichuan Yi", "active"=>true},  
{"id"=>"ijo", "label"=>"Ijo", "active"=>true},  
{"id"=>"iku", "label"=>"Inuktitut", "active"=>true},  
{"id"=>"ile", "label"=>"Interlingue", "active"=>true},  
{"id"=>"ilo", "label"=>"Iloko", "active"=>true},  
{"id"=>"ina", "label"=>"Interlingua (International Auxiliary Language Association)", "active"=>true},  
{"id"=>"inc", "label"=>"Indic (Other)", "active"=>true},  
{"id"=>"ind", "label"=>"Indonesian", "active"=>true},  
{"id"=>"ine", "label"=>"Indo-European (Other)", "active"=>true},  
{"id"=>"inh", "label"=>"Ingush", "active"=>true},  
{"id"=>"int", "label"=>"Interlingua (International Auxiliary Language Association)", "active"=>true},  
{"id"=>"ipk", "label"=>"Inupiaq", "active"=>true},  
{"id"=>"ira", "label"=>"Iranian (Other)", "active"=>true},  
{"id"=>"iri", "label"=>"Irish", "active"=>true},  
{"id"=>"iro", "label"=>"Iroquoian (Other)", "active"=>true},  
{"id"=>"ita", "label"=>"Italian", "active"=>true},  
{"id"=>"jav", "label"=>"Javanese", "active"=>true},  
{"id"=>"jbo", "label"=>"Lojban (Artificial language)", "active"=>true},  
{"id"=>"jpn", "label"=>"Japanese", "active"=>true},  
{"id"=>"jpr", "label"=>"Judeo-Persian", "active"=>true},  
{"id"=>"jrb", "label"=>"Judeo-Arabic", "active"=>true},  
{"id"=>"kaa", "label"=>"Kara-Kalpak", "active"=>true},  
{"id"=>"kab", "label"=>"Kabyle", "active"=>true},  
{"id"=>"kac", "label"=>"Kachin", "active"=>true},  
{"id"=>"kal", "label"=>"Kalâtdlisut", "active"=>true},  
{"id"=>"kam", "label"=>"Kamba", "active"=>true},  
{"id"=>"kan", "label"=>"Kannada", "active"=>true},  
{"id"=>"kar", "label"=>"Karen languages", "active"=>true},  
{"id"=>"kas", "label"=>"Kashmiri", "active"=>true},  
{"id"=>"kau", "label"=>"Kanuri", "active"=>true},  
{"id"=>"kaw", "label"=>"Kawi", "active"=>true},  
{"id"=>"kaz", "label"=>"Kazakh", "active"=>true},  
{"id"=>"kbd", "label"=>"Kabardian", "active"=>true},  
{"id"=>"kha", "label"=>"Khasi", "active"=>true},  
{"id"=>"khi", "label"=>"Khoisan (Other)", "active"=>true},  
{"id"=>"khm", "label"=>"Khmer", "active"=>true},  
{"id"=>"kho", "label"=>"Khotanese", "active"=>true},  
{"id"=>"kik", "label"=>"Kikuyu", "active"=>true},  
{"id"=>"kin", "label"=>"Kinyarwanda", "active"=>true},  
{"id"=>"kir", "label"=>"Kyrgyz", "active"=>true},  
{"id"=>"kmb", "label"=>"Kimbundu", "active"=>true},  
{"id"=>"kok", "label"=>"Konkani", "active"=>true},  
{"id"=>"kom", "label"=>"Komi", "active"=>true},  
{"id"=>"kon", "label"=>"Kongo", "active"=>true},  
{"id"=>"kor", "label"=>"Korean", "active"=>true},  
{"id"=>"kos", "label"=>"Kosraean", "active"=>true},  
{"id"=>"kpe", "label"=>"Kpelle", "active"=>true},  
{"id"=>"krc", "label"=>"Karachay-Balkar", "active"=>true},  
{"id"=>"krl", "label"=>"Karelian", "active"=>true},  
{"id"=>"kro", "label"=>"Kru (Other)", "active"=>true},  
{"id"=>"kru", "label"=>"Kurukh", "active"=>true},  
{"id"=>"kua", "label"=>"Kuanyama", "active"=>true},  
{"id"=>"kum", "label"=>"Kumyk", "active"=>true},  
{"id"=>"kur", "label"=>"Kurdish", "active"=>true},  
{"id"=>"kus", "label"=>"Kusaie", "active"=>true},  
{"id"=>"kut", "label"=>"Kootenai", "active"=>true},  
{"id"=>"lad", "label"=>"Ladino", "active"=>true},  
{"id"=>"lah", "label"=>"Lahndā", "active"=>true},  
{"id"=>"lam", "label"=>"Lamba (Zambia and Congo)", "active"=>true},  
{"id"=>"lan", "label"=>"Occitan (post 1500)", "active"=>true},  
{"id"=>"lao", "label"=>"Lao", "active"=>true},  
{"id"=>"lap", "label"=>"Sami", "active"=>true},  
{"id"=>"lat", "label"=>"Latin", "active"=>true},  
{"id"=>"lav", "label"=>"Latvian", "active"=>true},  
{"id"=>"lez", "label"=>"Lezgian", "active"=>true},  
{"id"=>"lim", "label"=>"Limburgish", "active"=>true},  
{"id"=>"lin", "label"=>"Lingala", "active"=>true},  
{"id"=>"lit", "label"=>"Lithuanian", "active"=>true},  
{"id"=>"lol", "label"=>"Mongo-Nkundu", "active"=>true},  
{"id"=>"loz", "label"=>"Lozi", "active"=>true},  
{"id"=>"ltz", "label"=>"Luxembourgish", "active"=>true},  
{"id"=>"lua", "label"=>"Luba-Lulua", "active"=>true},  
{"id"=>"lub", "label"=>"Luba-Katanga", "active"=>true},  
{"id"=>"lug", "label"=>"Ganda", "active"=>true},  
{"id"=>"lui", "label"=>"Luiseño", "active"=>true},  
{"id"=>"lun", "label"=>"Lunda", "active"=>true},  
{"id"=>"luo", "label"=>"Luo (Kenya and Tanzania)", "active"=>true},  
{"id"=>"lus", "label"=>"Lushai", "active"=>true},  
{"id"=>"mac", "label"=>"Macedonian", "active"=>true},  
{"id"=>"mad", "label"=>"Madurese", "active"=>true},  
{"id"=>"mag", "label"=>"Magahi", "active"=>true},  
{"id"=>"mah", "label"=>"Marshallese", "active"=>true},  
{"id"=>"mai", "label"=>"Maithili", "active"=>true},  
{"id"=>"mak", "label"=>"Makasar", "active"=>true},  
{"id"=>"mal", "label"=>"Malayalam", "active"=>true},  
{"id"=>"man", "label"=>"Mandingo", "active"=>true},  
{"id"=>"mao", "label"=>"Maori", "active"=>true},  
{"id"=>"map", "label"=>"Austronesian (Other)", "active"=>true},  
{"id"=>"mar", "label"=>"Marathi", "active"=>true},  
{"id"=>"mas", "label"=>"Maasai", "active"=>true},  
{"id"=>"max", "label"=>"Manx", "active"=>true},  
{"id"=>"may", "label"=>"Malay", "active"=>true},  
{"id"=>"mdf", "label"=>"Moksha", "active"=>true},  
{"id"=>"mdr", "label"=>"Mandar", "active"=>true},  
{"id"=>"men", "label"=>"Mende", "active"=>true},  
{"id"=>"mga", "label"=>"Irish, Middle (ca. 1100-1550)", "active"=>true},  
{"id"=>"mic", "label"=>"Micmac", "active"=>true},  
{"id"=>"min", "label"=>"Minangkabau", "active"=>true},  
{"id"=>"mis", "label"=>"Miscellaneous languages", "active"=>true},  
{"id"=>"mkh", "label"=>"Mon-Khmer (Other)", "active"=>true},  
{"id"=>"mla", "label"=>"Malagasy", "active"=>true},  
{"id"=>"mlg", "label"=>"Malagasy", "active"=>true},  
{"id"=>"mlt", "label"=>"Maltese", "active"=>true},  
{"id"=>"mnc", "label"=>"Manchu", "active"=>true},  
{"id"=>"mni", "label"=>"Manipuri", "active"=>true},  
{"id"=>"mno", "label"=>"Manobo languages", "active"=>true},  
{"id"=>"moh", "label"=>"Mohawk", "active"=>true},  
{"id"=>"mol", "label"=>"Moldavian", "active"=>true},  
{"id"=>"mon", "label"=>"Mongolian", "active"=>true},  
{"id"=>"mos", "label"=>"Mooré", "active"=>true},  
{"id"=>"mul", "label"=>"Multiple languages", "active"=>true},  
{"id"=>"mun", "label"=>"Munda (Other)", "active"=>true},  
{"id"=>"mus", "label"=>"Creek", "active"=>true},  
{"id"=>"mwl", "label"=>"Mirandese", "active"=>true},  
{"id"=>"mwr", "label"=>"Marwari", "active"=>true},  
{"id"=>"myn", "label"=>"Mayan languages", "active"=>true},  
{"id"=>"myv", "label"=>"Erzya", "active"=>true},  
{"id"=>"nah", "label"=>"Nahuatl", "active"=>true},  
{"id"=>"nai", "label"=>"North American Indian (Other)", "active"=>true},  
{"id"=>"nap", "label"=>"Neapolitan Italian", "active"=>true},  
{"id"=>"nau", "label"=>"Nauru", "active"=>true},  
{"id"=>"nav", "label"=>"Navajo", "active"=>true},  
{"id"=>"nbl", "label"=>"Ndebele (South Africa)", "active"=>true},  
{"id"=>"nde", "label"=>"Ndebele (Zimbabwe)", "active"=>true},  
{"id"=>"ndo", "label"=>"Ndonga", "active"=>true},  
{"id"=>"nds", "label"=>"Low German", "active"=>true},  
{"id"=>"nep", "label"=>"Nepali", "active"=>true},  
{"id"=>"new", "label"=>"Newari", "active"=>true},  
{"id"=>"nia", "label"=>"Nias", "active"=>true},  
{"id"=>"nic", "label"=>"Niger-Kordofanian (Other)", "active"=>true},  
{"id"=>"niu", "label"=>"Niuean", "active"=>true},  
{"id"=>"nno", "label"=>"Norwegian (Nynorsk)", "active"=>true},  
{"id"=>"nob", "label"=>"Norwegian (Bokmål)", "active"=>true},  
{"id"=>"nog", "label"=>"Nogai", "active"=>true},  
{"id"=>"non", "label"=>"Old Norse", "active"=>true},  
{"id"=>"nor", "label"=>"Norwegian", "active"=>true},  
{"id"=>"nqo", "label"=>"N'Ko", "active"=>true},  
{"id"=>"nso", "label"=>"Northern Sotho", "active"=>true},  
{"id"=>"nub", "label"=>"Nubian languages", "active"=>true},  
{"id"=>"nwc", "label"=>"Newari, Old", "active"=>true},  
{"id"=>"nya", "label"=>"Nyanja", "active"=>true},  
{"id"=>"nym", "label"=>"Nyamwezi", "active"=>true},  
{"id"=>"nyn", "label"=>"Nyankole", "active"=>true},  
{"id"=>"nyo", "label"=>"Nyoro", "active"=>true},  
{"id"=>"nzi", "label"=>"Nzima", "active"=>true},  
{"id"=>"oci", "label"=>"Occitan (post-1500)", "active"=>true},  
{"id"=>"oji", "label"=>"Ojibwa", "active"=>true},  
{"id"=>"ori", "label"=>"Oriya", "active"=>true},  
{"id"=>"orm", "label"=>"Oromo", "active"=>true},  
{"id"=>"osa", "label"=>"Osage", "active"=>true},  
{"id"=>"oss", "label"=>"Ossetic", "active"=>true},  
{"id"=>"ota", "label"=>"Turkish, Ottoman", "active"=>true},  
{"id"=>"oto", "label"=>"Otomian languages", "active"=>true},  
{"id"=>"paa", "label"=>"Papuan (Other)", "active"=>true},  
{"id"=>"pag", "label"=>"Pangasinan", "active"=>true},  
{"id"=>"pal", "label"=>"Pahlavi", "active"=>true},  
{"id"=>"pam", "label"=>"Pampanga", "active"=>true},  
{"id"=>"pan", "label"=>"Panjabi", "active"=>true},  
{"id"=>"pap", "label"=>"Papiamento", "active"=>true},  
{"id"=>"pau", "label"=>"Palauan", "active"=>true},  
{"id"=>"peo", "label"=>"Old Persian (ca. 600-400 B.C.)", "active"=>true},  
{"id"=>"per", "label"=>"Persian", "active"=>true},  
{"id"=>"phi", "label"=>"Philippine (Other)", "active"=>true},  
{"id"=>"phn", "label"=>"Phoenician", "active"=>true},  
{"id"=>"pli", "label"=>"Pali", "active"=>true},  
{"id"=>"pol", "label"=>"Polish", "active"=>true},  
{"id"=>"pon", "label"=>"Pohnpeian", "active"=>true},  
{"id"=>"por", "label"=>"Portuguese", "active"=>true},  
{"id"=>"pra", "label"=>"Prakrit languages", "active"=>true},  
{"id"=>"pro", "label"=>"Provençal (to 1500)", "active"=>true},  
{"id"=>"pus", "label"=>"Pushto", "active"=>true},  
{"id"=>"que", "label"=>"Quechua", "active"=>true},  
{"id"=>"raj", "label"=>"Rajasthani", "active"=>true},  
{"id"=>"rap", "label"=>"Rapanui", "active"=>true},  
{"id"=>"rar", "label"=>"Rarotongan", "active"=>true},  
{"id"=>"roa", "label"=>"Romance (Other)", "active"=>true},  
{"id"=>"roh", "label"=>"Raeto-Romance", "active"=>true},  
{"id"=>"rom", "label"=>"Romani", "active"=>true},  
{"id"=>"rum", "label"=>"Romanian", "active"=>true},  
{"id"=>"run", "label"=>"Rundi", "active"=>true},  
{"id"=>"rup", "label"=>"Aromanian", "active"=>true},  
{"id"=>"rus", "label"=>"Russian", "active"=>true},  
{"id"=>"sad", "label"=>"Sandawe", "active"=>true},  
{"id"=>"sag", "label"=>"Sango (Ubangi Creole)", "active"=>true},  
{"id"=>"sah", "label"=>"Yakut", "active"=>true},  
{"id"=>"sai", "label"=>"South American Indian (Other)", "active"=>true},  
{"id"=>"sal", "label"=>"Salishan languages", "active"=>true},  
{"id"=>"sam", "label"=>"Samaritan Aramaic", "active"=>true},  
{"id"=>"san", "label"=>"Sanskrit", "active"=>true},  
{"id"=>"sao", "label"=>"Samoan", "active"=>true},  
{"id"=>"sas", "label"=>"Sasak", "active"=>true},  
{"id"=>"sat", "label"=>"Santali", "active"=>true},  
{"id"=>"scc", "label"=>"Serbian", "active"=>true},  
{"id"=>"scn", "label"=>"Sicilian Italian", "active"=>true},  
{"id"=>"sco", "label"=>"Scots", "active"=>true},  
{"id"=>"scr", "label"=>"Croatian", "active"=>true},  
{"id"=>"sel", "label"=>"Selkup", "active"=>true},  
{"id"=>"sem", "label"=>"Semitic (Other)", "active"=>true},  
{"id"=>"sga", "label"=>"Irish, Old (to 1100)", "active"=>true},  
{"id"=>"sgn", "label"=>"Sign languages", "active"=>true},  
{"id"=>"shn", "label"=>"Shan", "active"=>true},  
{"id"=>"sho", "label"=>"Shona", "active"=>true},  
{"id"=>"sid", "label"=>"Sidamo", "active"=>true},  
{"id"=>"sin", "label"=>"Sinhalese", "active"=>true},  
{"id"=>"sio", "label"=>"Siouan (Other)", "active"=>true},  
{"id"=>"sit", "label"=>"Sino-Tibetan (Other)", "active"=>true},  
{"id"=>"sla", "label"=>"Slavic (Other)", "active"=>true},  
{"id"=>"slo", "label"=>"Slovak", "active"=>true},  
{"id"=>"slv", "label"=>"Slovenian", "active"=>true},  
{"id"=>"sma", "label"=>"Southern Sami", "active"=>true},  
{"id"=>"sme", "label"=>"Northern Sami", "active"=>true},  
{"id"=>"smi", "label"=>"Sami", "active"=>true},  
{"id"=>"smj", "label"=>"Lule Sami", "active"=>true},  
{"id"=>"smn", "label"=>"Inari Sami", "active"=>true},  
{"id"=>"smo", "label"=>"Samoan", "active"=>true},  
{"id"=>"sms", "label"=>"Skolt Sami", "active"=>true},  
{"id"=>"sna", "label"=>"Shona", "active"=>true},  
{"id"=>"snd", "label"=>"Sindhi", "active"=>true},  
{"id"=>"snh", "label"=>"Sinhalese", "active"=>true},  
{"id"=>"snk", "label"=>"Soninke", "active"=>true},  
{"id"=>"sog", "label"=>"Sogdian", "active"=>true},  
{"id"=>"som", "label"=>"Somali", "active"=>true},  
{"id"=>"son", "label"=>"Songhai", "active"=>true},  
{"id"=>"sot", "label"=>"Sotho", "active"=>true},  
{"id"=>"spa", "label"=>"Spanish", "active"=>true},  
{"id"=>"srd", "label"=>"Sardinian", "active"=>true},  
{"id"=>"srn", "label"=>"Sranan", "active"=>true},  
{"id"=>"srp", "label"=>"Serbian", "active"=>true},  
{"id"=>"srr", "label"=>"Serer", "active"=>true},  
{"id"=>"ssa", "label"=>"Nilo-Saharan (Other)", "active"=>true},  
{"id"=>"sso", "label"=>"Sotho", "active"=>true},  
{"id"=>"ssw", "label"=>"Swazi", "active"=>true},  
{"id"=>"suk", "label"=>"Sukuma", "active"=>true},  
{"id"=>"sun", "label"=>"Sundanese", "active"=>true},  
{"id"=>"sus", "label"=>"Susu", "active"=>true},  
{"id"=>"sux", "label"=>"Sumerian", "active"=>true},  
{"id"=>"swa", "label"=>"Swahili", "active"=>true},  
{"id"=>"swe", "label"=>"Swedish", "active"=>true},  
{"id"=>"swz", "label"=>"Swazi", "active"=>true},  
{"id"=>"syc", "label"=>"Syriac", "active"=>true},  
{"id"=>"syr", "label"=>"Syriac, Modern", "active"=>true},  
{"id"=>"tag", "label"=>"Tagalog", "active"=>true},  
{"id"=>"tah", "label"=>"Tahitian", "active"=>true},  
{"id"=>"tai", "label"=>"Tai (Other)", "active"=>true},  
{"id"=>"taj", "label"=>"Tajik", "active"=>true},  
{"id"=>"tam", "label"=>"Tamil", "active"=>true},  
{"id"=>"tar", "label"=>"Tatar", "active"=>true},  
{"id"=>"tat", "label"=>"Tatar", "active"=>true},  
{"id"=>"tel", "label"=>"Telugu", "active"=>true},  
{"id"=>"tem", "label"=>"Temne", "active"=>true},  
{"id"=>"ter", "label"=>"Terena", "active"=>true},  
{"id"=>"tet", "label"=>"Tetum", "active"=>true},  
{"id"=>"tgk", "label"=>"Tajik", "active"=>true},  
{"id"=>"tgl", "label"=>"Tagalog", "active"=>true},  
{"id"=>"tha", "label"=>"Thai", "active"=>true},  
{"id"=>"tib", "label"=>"Tibetan", "active"=>true},  
{"id"=>"tig", "label"=>"Tigré", "active"=>true},  
{"id"=>"tir", "label"=>"Tigrinya", "active"=>true},  
{"id"=>"tiv", "label"=>"Tiv", "active"=>true},  
{"id"=>"tkl", "label"=>"Tokelauan", "active"=>true},  
{"id"=>"tlh", "label"=>"Klingon (Artificial language)", "active"=>true},  
{"id"=>"tli", "label"=>"Tlingit", "active"=>true},  
{"id"=>"tmh", "label"=>"Tamashek", "active"=>true},  
{"id"=>"tog", "label"=>"Tonga (Nyasa)", "active"=>true},  
{"id"=>"ton", "label"=>"Tongan", "active"=>true},  
{"id"=>"tpi", "label"=>"Tok Pisin", "active"=>true},  
{"id"=>"tru", "label"=>"Truk", "active"=>true},  
{"id"=>"tsi", "label"=>"Tsimshian", "active"=>true},  
{"id"=>"tsn", "label"=>"Tswana", "active"=>true},  
{"id"=>"tso", "label"=>"Tsonga", "active"=>true},  
{"id"=>"tsw", "label"=>"Tswana", "active"=>true},  
{"id"=>"tuk", "label"=>"Turkmen", "active"=>true},  
{"id"=>"tum", "label"=>"Tumbuka", "active"=>true},  
{"id"=>"tup", "label"=>"Tupi languages", "active"=>true},  
{"id"=>"tur", "label"=>"Turkish", "active"=>true},  
{"id"=>"tut", "label"=>"Altaic (Other)", "active"=>true},  
{"id"=>"tvl", "label"=>"Tuvaluan", "active"=>true},  
{"id"=>"twi", "label"=>"Twi", "active"=>true},  
{"id"=>"tyv", "label"=>"Tuvinian", "active"=>true},  
{"id"=>"udm", "label"=>"Udmurt", "active"=>true},  
{"id"=>"uga", "label"=>"Ugaritic", "active"=>true},  
{"id"=>"uig", "label"=>"Uighur", "active"=>true},  
{"id"=>"ukr", "label"=>"Ukrainian", "active"=>true},  
{"id"=>"umb", "label"=>"Umbundu", "active"=>true},  
{"id"=>"und", "label"=>"Undetermined", "active"=>true},  
{"id"=>"urd", "label"=>"Urdu", "active"=>true},  
{"id"=>"uzb", "label"=>"Uzbek", "active"=>true},  
{"id"=>"vai", "label"=>"Vai", "active"=>true},  
{"id"=>"ven", "label"=>"Venda", "active"=>true},  
{"id"=>"vie", "label"=>"Vietnamese", "active"=>true},  
{"id"=>"vol", "label"=>"Volapük", "active"=>true},  
{"id"=>"vot", "label"=>"Votic", "active"=>true},  
{"id"=>"wak", "label"=>"Wakashan languages", "active"=>true},  
{"id"=>"wal", "label"=>"Wolayta", "active"=>true},  
{"id"=>"war", "label"=>"Waray", "active"=>true},  
{"id"=>"was", "label"=>"Washoe", "active"=>true},  
{"id"=>"wel", "label"=>"Welsh", "active"=>true},  
{"id"=>"wen", "label"=>"Sorbian (Other)", "active"=>true},  
{"id"=>"wln", "label"=>"Walloon", "active"=>true},  
{"id"=>"wol", "label"=>"Wolof", "active"=>true},  
{"id"=>"xal", "label"=>"Oirat", "active"=>true},  
{"id"=>"xho", "label"=>"Xhosa", "active"=>true},  
{"id"=>"yao", "label"=>"Yao (Africa)", "active"=>true},  
{"id"=>"yap", "label"=>"Yapese", "active"=>true},  
{"id"=>"yid", "label"=>"Yiddish", "active"=>true},  
{"id"=>"yor", "label"=>"Yoruba", "active"=>true},  
{"id"=>"ypk", "label"=>"Yupik languages", "active"=>true},  
{"id"=>"zap", "label"=>"Zapotec", "active"=>true},  
{"id"=>"zbl", "label"=>"Blissymbolics", "active"=>true},  
{"id"=>"zen", "label"=>"Zenaga", "active"=>true},  
{"id"=>"zha", "label"=>"Zhuang", "active"=>true},  
{"id"=>"znd", "label"=>"Zande languages", "active"=>true},  
{"id"=>"zul", "label"=>"Zulu", "active"=>true},  
{"id"=>"zun", "label"=>"Zuni", "active"=>true},  
{"id"=>"zxx", "label"=>"No linguistic content", "active"=>true},  
{"id"=>"zza", "label"=>"Zaza", "active"=>true}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment