Schoolie

CircleCI Coverage Status

A gem that generates a site map and meta tags for google scholar (or any other tags you might want)

Installation

Add this line to your application's Gemfile:

gem 'schoolie'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install schoolie

Usage

Install your schoolie configuration file in config/schoolie.yml

This file should contain contents similar to this:

---
static:
  citation_dissertation_institution: Your University
attributes:
  citation_title: title
  citation_author: creator
  citation_date: publication_date
  citation_keywords: keywords
  citation_pdf_url: permanent_url

The 'static' section will be written directly into the meta tags as is, attributes will be sent as method calls to the current curation concern object, and the value thus returned will be written into the meta tag.

Missing methods will be ignored.

bundle exec rails schoolie:sitemap

The 'static' section maps a particular meta tag name to a static string

The attributes section maps meta tag names to methods that will be called on whatever you pass into the schoolie_tags helper.

If the method does not exist, the tag will not be generated (though no error will be thrown).

Call the helper like any other helper in your view:

<%= schoolie_tags my_object %>

That's all there is to it!

SiteMaps

If you'd like to generate a sitemap for your Hyrax-based application, a simple rake task can be used (not included in schoolie):

  task sitemap: :environment do
    date_field = 'system_modified_dtsi'
    result = ActiveFedora::SolrService.query("has_model_ssim:MyModel",
                                             fq: "selectin_criteria:here",
                                             fl: "id,#{date_field}",
                                             sort: "sort_field,sortfield ASC",
                                             rows: 20_000)
    ids = result.map do |x|
      ["https://etd.example.com/concern/theses/#{x['id']}", x[date_field].to_s]
    end
    builder = Nokogiri::XML::Builder.new do |sitemap|
      sitemap.urlset("xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
                 xmlns: "http://www.sitemaps.org/schemas/sitemap/0.9",
                 "xsi:schemaLocation": "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd") {
                   ids.each { |url, date|
                     sitemap.url {
                       sitemap.loc url
                       sitemap.lastmod date
                     }
                   }
                 }
    end
    File.open(Rails.root.join("public", "sitemap.xml"), "w") { |f| f.write(builder.to_xml) }
end

Don't forget to add your sitemap url to robots.txt too!

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/schoolie. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The gem is available as open source under the terms of the Apache 2.0 License.