From d3547249561dedee11919e8c0e6d28cc9b7846bb Mon Sep 17 00:00:00 2001 From: Thomas Hutterer <5372947+thutterer@users.noreply.github.com> Date: Sat, 30 May 2020 17:39:33 +0200 Subject: [PATCH] Generate RSS feed --- app/controllers/bongo/articles_controller.rb | 7 +++++++ app/views/bongo/articles/index.rss.builder | 18 ++++++++++++++++++ app/views/layouts/bongo/application.html.erb | 4 ++++ lib/bongo/version.rb | 2 +- 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 app/views/bongo/articles/index.rss.builder diff --git a/app/controllers/bongo/articles_controller.rb b/app/controllers/bongo/articles_controller.rb index e81dbcc..1a00182 100644 --- a/app/controllers/bongo/articles_controller.rb +++ b/app/controllers/bongo/articles_controller.rb @@ -8,6 +8,13 @@ class ArticlesController < ApplicationController def index @articles = policy_scope(Article).order(publish_at: :desc) + respond_to do |format| + format.html + format.rss do + @articles = @articles.published.order(publish_at: :desc) + render layout: false + end + end end def show diff --git a/app/views/bongo/articles/index.rss.builder b/app/views/bongo/articles/index.rss.builder new file mode 100644 index 0000000..89a69f1 --- /dev/null +++ b/app/views/bongo/articles/index.rss.builder @@ -0,0 +1,18 @@ +xml.instruct! :xml, version: "1.0" +xml.rss version: "2.0" do + xml.channel do + xml.title (Front.config.name rescue "My Blog") + xml.description (Front.config.name rescue "A bongo blog") + xml.link root_url + + @articles.each do |article| + xml.item do + xml.title article.title + xml.description ActionView::Base.full_sanitizer.sanitize(article.text).truncate(180) + xml.pubDate article.publish_at.to_s(:rfc822) + xml.link article_url(article) + xml.guid article_url(article) + end + end + end +end diff --git a/app/views/layouts/bongo/application.html.erb b/app/views/layouts/bongo/application.html.erb index c203094..cc3b1ef 100644 --- a/app/views/layouts/bongo/application.html.erb +++ b/app/views/layouts/bongo/application.html.erb @@ -2,4 +2,8 @@ Blog <% end %> +<% content_for :head do %> + <%= auto_discovery_link_tag :rss, articles_url(format: :rss) %> +<% end %> + <%= render template: "layouts/application" %> diff --git a/lib/bongo/version.rb b/lib/bongo/version.rb index 6bbca84..862f6c4 100644 --- a/lib/bongo/version.rb +++ b/lib/bongo/version.rb @@ -1,3 +1,3 @@ module Bongo - VERSION = '0.0.5' + VERSION = '0.1.0' end