From da5c6c3e9771d81e033e37c6e0da71436e7cdf8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miquel=20Rodr=C3=ADguez=20Telep=20/=20Michael=20Rodr=C3=AD?= =?UTF-8?q?guez-Torrent?= Date: Wed, 21 Sep 2011 11:49:08 +0100 Subject: [PATCH 1/6] Ensure receive_email script PWD is the application root to fix relative paths Some paths in the application are interpreted as relative to the present working directory. If the user does not first cd to the Rails root, this causes the application to bomb out at various places when running receive_mail. --- script/receive_email | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/script/receive_email b/script/receive_email index 7565067754..9bd282ecae 100755 --- a/script/receive_email +++ b/script/receive_email @@ -1,15 +1,19 @@ #!/usr/bin/env ruby # This script can be used to process an incoming e-mail, e.g. by configuring Postfix to pipe it here -ENV['RAILS_ENV'] = ENV['RAILS_ENV'] || 'production' -log_file = File.dirname(__FILE__) + '/../log/' + ENV['RAILS_ENV'] + '.log' +Dir.chdir File.join(File.dirname(__FILE__), '..') do -# Send output to the log so we don't generate a bounce message -$stderr.reopen(log_file, 'a') -$stderr.sync = true -$stdout.reopen(log_file, 'a') -$stderr.sync = true + ENV['RAILS_ENV'] = ENV['RAILS_ENV'] || 'production' + log_file = File.dirname(__FILE__) + '/../log/' + ENV['RAILS_ENV'] + '.log' -require File.dirname(__FILE__) + '/../config/environment' + # Send output to the log so we don't generate a bounce message + $stderr.reopen(log_file, 'a') + $stderr.sync = true + $stdout.reopen(log_file, 'a') + $stderr.sync = true -Emailer.receive(STDIN.read) \ No newline at end of file + require File.dirname(__FILE__) + '/../config/environment' + + Emailer.receive(STDIN.read) + +end \ No newline at end of file From 4b485c2bfd98f932d011a7826736ff56292182f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miquel=20Rodr=C3=ADguez=20Telep=20/=20Michael=20Rodr=C3=AD?= =?UTF-8?q?guez-Torrent?= Date: Wed, 21 Sep 2011 12:49:02 +0100 Subject: [PATCH 2/6] Whenever 0.7 should be required, for its Bundler support --- Gemfile | 2 +- Gemfile.lock | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 424eaae63b..35d712875a 100644 --- a/Gemfile +++ b/Gemfile @@ -15,7 +15,7 @@ gem 'activesupport-i18n-patch', :git => 'git://github.com/teambox/activesupport- gem 'nokogiri' gem 'SystemTimer', '~> 1.2.0', :require => 'system_timer' -gem 'whenever', '~> 0.4.1', :require => nil +gem 'whenever', '~> 0.7.0', :require => nil gem 'icalendar', '~> 1.1.3' gem 'libxml-ruby', '1.1.3', :require => 'libxml' gem 'rdiscount', '~> 1.6.3' diff --git a/Gemfile.lock b/Gemfile.lock index 8d04ecd059..b43d4543c2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -80,7 +80,7 @@ GEM cgi_multipart_eof_fix (2.5.0) childprocess (0.2.2) ffi (~> 1.0.6) - chronic (0.3.0) + chronic (0.6.4) closure-compiler (0.3.3) coffee-script (2.1.1) coffee-script-source @@ -250,8 +250,9 @@ GEM nokogiri (>= 1.2.0) rack (>= 1.0) rack-test (>= 0.5.3) - whenever (0.4.2) - chronic (>= 0.2.3) + whenever (0.7.0) + activesupport (>= 2.3.4) + chronic (~> 0.6.3) xml-simple (1.0.12) xpath (0.1.2) nokogiri (~> 1.3) @@ -311,5 +312,5 @@ DEPENDENCIES tzinfo (~> 0.3.12) vestal_versions (~> 1.2.2)! webrat - whenever (~> 0.4.1) + whenever (~> 0.7.0) will_paginate! From fec1dca0ca73a8b057d934768d584a53fbbd510a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miquel=20Rodr=C3=ADguez=20Telep=20/=20Michael=20Rodr=C3=AD?= =?UTF-8?q?guez-Torrent?= Date: Wed, 21 Sep 2011 13:15:03 +0100 Subject: [PATCH 3/6] Fix Whenever config by loading Rails See https://github.com/javan/whenever/issues/144 --- config/schedule.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/config/schedule.rb b/config/schedule.rb index fcbd2dc3b0..20726aae37 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -1,4 +1,9 @@ -set :output, "#{Rails.root}/log/cron.log" +# When running Whenever, the environment should be specified with --set environment +ENV['RAILS_ENV'] = environment || 'production' + +require File.join(File.dirname(__FILE__), "environment") + +set :output, File.join(Rails.root, "log", "cron.log") every 1.hour do rake "mail:reminders", :environment => :production @@ -10,4 +15,4 @@ every 30.minutes do rake "ts:rebuild", :environment => :production -end +end \ No newline at end of file From d39be7e3ee54c862c94380f2f0868807c6e4b6c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miquel=20Rodr=C3=ADguez=20Telep=20/=20Michael=20Rodr=C3=AD?= =?UTF-8?q?guez-Torrent?= Date: Wed, 21 Sep 2011 13:46:57 +0100 Subject: [PATCH 4/6] Don't set up a cron job for receiving mail if we're piping it --- config/schedule.rb | 6 ++++-- config/teambox.yml | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/config/schedule.rb b/config/schedule.rb index 20726aae37..25b3fabaf6 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -9,8 +9,10 @@ rake "mail:reminders", :environment => :production end -every 1.minutes do - rake "mail:inbox", :environment => :production +if Teambox.config.allow_incoming_email and Teambox.config.incoming_email_settings[:type].downcase != 'pipe' + every 1.minutes do + rake "mail:inbox", :environment => :production + end end every 30.minutes do diff --git a/config/teambox.yml b/config/teambox.yml index 433e44dd20..0ad3b317ca 100644 --- a/config/teambox.yml +++ b/config/teambox.yml @@ -85,6 +85,7 @@ defaults: &defaults # * Run `rake mail:inbox` periodically from cron to process incoming emails. # Important: Email should be received in the same domain it's being sent from. incoming_email_settings: + # Set this to "pipe" if piping the mail directly to the receive_mail script :type: POP :address: mail.example.com :user_name: USER From 3e8ea7587b678a6a3938787fde4af409df392314 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miquel=20Rodr=C3=ADguez=20Telep=20/=20Michael=20Rodr=C3=AD?= =?UTF-8?q?guez-Torrent?= Date: Wed, 21 Sep 2011 14:36:01 +0100 Subject: [PATCH 5/6] The Sphinx cron job should only reindex, not rebuild Rebuilding is only necessary when the schema changes, so doing this is a job for the deployment script --- config/schedule.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/schedule.rb b/config/schedule.rb index 25b3fabaf6..390b6fede5 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -16,5 +16,5 @@ end every 30.minutes do - rake "ts:rebuild", :environment => :production + rake "ts:reindex", :environment => :production end \ No newline at end of file From d2ef5105241d42321acea79635329bb03f15624b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miquel=20Rodr=C3=ADguez=20Telep=20/=20Michael=20Rodr=C3=AD?= =?UTF-8?q?guez-Torrent?= Date: Wed, 16 Nov 2011 14:05:45 +0000 Subject: [PATCH 6/6] Fix output redirection in receive_email script --- script/receive_email | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/receive_email b/script/receive_email index 9bd282ecae..65e2bb6893 100755 --- a/script/receive_email +++ b/script/receive_email @@ -10,7 +10,7 @@ Dir.chdir File.join(File.dirname(__FILE__), '..') do $stderr.reopen(log_file, 'a') $stderr.sync = true $stdout.reopen(log_file, 'a') - $stderr.sync = true + $stdout.sync = true require File.dirname(__FILE__) + '/../config/environment'