Permalink
Browse files

Adds maintenance rake tasks for logrotate and temp file deletion; Add…

…s whenever gem + sample whenever file
  • Loading branch information...
1 parent 139e2af commit dc71396a4d1cb1947b513443e2da48b30da50ea7 Tray Torrance committed Dec 15, 2011
Showing with 65 additions and 0 deletions.
  1. +1 −0 Gemfile
  2. +25 −0 config/schedule.rb.example
  3. +39 −0 lib/tasks/maintenance.rake
View
@@ -4,6 +4,7 @@ gem 'rails', '3.0.11'
gem 'bundler', '>= 1.0.0'
gem 'foreman'
+gem 'whenever'
gem 'thin', '~> 1.3.1', :require => false
View
@@ -0,0 +1,25 @@
+# Use this file to easily define all of your cron jobs.
+#
+# It's helpful, but not entirely necessary to understand cron before proceeding.
+# http://en.wikipedia.org/wiki/Cron
+
+# set :environment, "production"
+
+# Example:
+set :output, File.join( File.dirname( __FILE__ ), '..', 'logs', 'scheduled_tasks.log' )
+
+every 1.day, :at => '3:00 am' do
+ rake 'maintenance:clear_carrierwave_temp_uploads'
+end
+
+# every 2.hours do
+# command "/usr/bin/some_great_command"
+# runner "MyModel.some_method"
+# rake "some:great:rake:task"
+# end
+#
+# every 4.days do
+# runner "AnotherModel.prune_old_records"
+# end
+
+# Learn more: http://github.com/javan/whenever
View
@@ -0,0 +1,39 @@
+# Copyright (c) 2011, Diaspora Inc. This file is
+# licensed under the Affero General Public License version 3 or later. See
+# the COPYRIGHT file.
+
+namespace :maintenance do
+ APP_ROOT = File.expand_path( File.join( File.dirname( __FILE__ ), '..', '..') )
+ desc "Clear CarrierWave temp uploads"
+ task :clear_carrierwave_temp_uploads do
+ filename = File.join( APP_ROOT, 'tmp', 'uploads', '*')
+ today_string = Time.now.strftime( '%Y%m%d' )
+ Dir.glob( filename ) do |file|
+ unless file.include?( today_string )
+ FileUtils.rm_rf( file )
+ end
+ end
+ end
+
+ desc "Rotate Diaspora logs"
+ task :install_logrotate_config do
+ logrotate_conf = <<-RUBY
+#{APP_ROOT}/logs/production.log {
+ daily
+ missingok
+ rotate 8
+ compress
+ delaycompress
+ notifempty
+ copytruncate
+}
+RUBY
+ begin
+ File.open('/etc/logrotate.d/diaspora') do |fin|
+ fin.write logrotate_conf
+ end
+ rescue
+ puts "Could not install logrotate configs. Perhaps you should try running this task as root and ensuring logrotate is installed:\n#{logrotate_conf}"
+ end
+ end
+end

0 comments on commit dc71396

Please sign in to comment.