From 747ca77edc5fc5afc6cde31ba39b93432b7f6df3 Mon Sep 17 00:00:00 2001 From: Gerrit Riessen Date: Sat, 1 Oct 2011 22:15:15 +0200 Subject: [PATCH] Subscribe to application deployments in iCal. --- Gemfile | 2 ++ Gemfile.lock | 2 ++ app/controllers/deploys_controller.rb | 4 +++- app/helpers/application_helper.rb | 15 +++++++++++++++ app/views/deploys/index.ics.haml | 1 + 5 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 app/views/deploys/index.ics.haml diff --git a/Gemfile b/Gemfile index c4b8ac1..b417987 100644 --- a/Gemfile +++ b/Gemfile @@ -23,6 +23,8 @@ platform :ruby do gem 'bson_ext', '~> 1.4.0' end +gem 'ri_cal' + group :development, :test do gem 'rspec-rails', '~> 2.6' gem 'webmock', :require => false diff --git a/Gemfile.lock b/Gemfile.lock index aa89b4e..431e509 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -155,6 +155,7 @@ GEM responders (0.6.4) rest-client (1.6.7) mime-types (>= 1.16) + ri_cal (0.8.8) rspec (2.6.0) rspec-core (~> 2.6.0) rspec-expectations (~> 2.6.0) @@ -230,6 +231,7 @@ DEPENDENCIES oruen_redmine_client pivotal-tracker rails (= 3.0.10) + ri_cal rspec (~> 2.6) rspec-rails (~> 2.6) ruby-debug diff --git a/app/controllers/deploys_controller.rb b/app/controllers/deploys_controller.rb index e2c1bac..50b9bb6 100644 --- a/app/controllers/deploys_controller.rb +++ b/app/controllers/deploys_controller.rb @@ -16,7 +16,9 @@ class DeploysController < ApplicationController app = App.find(params[:app_id]) raise Mongoid::Errors::DocumentNotFound.new(App, app.id) unless current_user.admin? || current_user.watching?(app) - @deploys = app.deploys.order_by(:created_at.desc).paginate(:page => params[:page], :per_page => 10) + @deploys = app.deploys.order_by(:created_at.desc). + paginate(:page => params[:page], :per_page => 10) + @app = app end private diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 09e9aca..f957f92 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -3,6 +3,21 @@ module ApplicationHelper create_percentage_table_for(problem) {|notice| notice.message} end + def generate_ical(deploys) + RiCal.Calendar do |cal| + deploys.each_with_index do |deploy,idx| + cal.event do |event| + event.summary = "#{idx+1} #{deploy.repository}" + event.description = deploy.revision + event.dtstart = deploy.created_at + event.dtend = deploy.created_at + 60.minutes + event.location = deploy.environment + event.organizer = deploy.username + end + end + end.to_s + end + def user_agent_graph(problem) create_percentage_table_for(problem) {|notice| pretty_user_agent(notice.user_agent)} end diff --git a/app/views/deploys/index.ics.haml b/app/views/deploys/index.ics.haml new file mode 100644 index 0000000..629b13b --- /dev/null +++ b/app/views/deploys/index.ics.haml @@ -0,0 +1 @@ += generate_ical(@app.deploys.order_by(:created_at.asc)) -- libgit2 0.21.2