Skip to content

Commit

Permalink
Adds maintenance rake tasks for logrotate and temp file deletion; Add…
Browse files Browse the repository at this point in the history
…s whenever gem + sample whenever file
  • Loading branch information
Tray Torrance committed Dec 15, 2011
1 parent 139e2af commit dc71396
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 0 deletions.
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
25 changes: 25 additions & 0 deletions config/schedule.rb.example
Original file line number Diff line number Diff line change
@@ -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
39 changes: 39 additions & 0 deletions lib/tasks/maintenance.rake
Original file line number Diff line number Diff line change
@@ -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.