rake_mailer 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -0
- data/lib/rake_mailer.rb +57 -16
- data/lib/rake_mailer/mail_it.rb +21 -11
- data/lib/rake_mailer/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e183447300947e6b627c4b125632ab458dd63a88
|
4
|
+
data.tar.gz: a6fbc5da91c0e4e003a2e8ea39aa30777274ebf6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d7c29ee030a66b4ce10b40d47693c8ec40500881efaebde661af6fd8f199b72d4e4ff8fdbf66febde2a60dfedcfae1aae437514ba4b870e0b145cc3c00f1ead
|
7
|
+
data.tar.gz: 3eea4ec1f4a6b01a6677f3c01a1d68f1ccdffb003dc79e9bd8294970d4d5c5ce05870dd1aeec357a260a822ee9d9f7752443c04f0636b208f08ceb561f0b0758
|
data/README.md
CHANGED
@@ -23,6 +23,16 @@ Or install it yourself as:
|
|
23
23
|
|
24
24
|
$ gem install rake_mailer
|
25
25
|
|
26
|
+
### Configuration Details:
|
27
|
+
'from'- It is compulsory. It must be a string.
|
28
|
+
'emails'- It is compulsory if a email has to be sent somewhere.
|
29
|
+
It can we a string or an array of strings
|
30
|
+
'file_path'- system path where the rake mailer can store its generated reports.
|
31
|
+
By default it uses tmp/rake_mailer in the app's root directory
|
32
|
+
'display_system_info'- By default it is set to true. If true it will send some
|
33
|
+
system information in the body of the email.
|
34
|
+
|
35
|
+
|
26
36
|
## Usage
|
27
37
|
|
28
38
|
### Create a rake_mailer.yml in config
|
@@ -30,6 +40,7 @@ Or install it yourself as:
|
|
30
40
|
from: 'gemin.patel61@gmail.com'
|
31
41
|
emails: ['arjun.verma@gmail.com', 'kamal.soni@gmail.com']
|
32
42
|
file_path: 'tmp/rake_mailer'
|
43
|
+
display_system_info: true
|
33
44
|
|
34
45
|
### Sample Rake Task will now look like
|
35
46
|
namespace :bug_fixes do
|
data/lib/rake_mailer.rb
CHANGED
@@ -7,36 +7,77 @@ require 'fileutils'
|
|
7
7
|
module RakeMailer
|
8
8
|
class FileWriter
|
9
9
|
def initialize(emails = nil)
|
10
|
+
load_yml
|
11
|
+
set_email_config(emails)
|
12
|
+
set_file_config
|
13
|
+
create_file_path
|
14
|
+
open_file
|
15
|
+
end
|
16
|
+
|
17
|
+
def file_writer(line)
|
18
|
+
begin
|
19
|
+
@file.write(line)
|
20
|
+
@file.write("\n")
|
21
|
+
rescue Exception => e
|
22
|
+
puts "ERROR: Block in file_writer. Rescued. Could not write in the file => #{e.message}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def close
|
27
|
+
begin
|
28
|
+
@file.close
|
29
|
+
rescue Exception => e
|
30
|
+
puts "ERROR: Block in close. Rescued. Will attempt to send the mail. Could close the file => #{e.message}"
|
31
|
+
end
|
32
|
+
send_email
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
def load_yml
|
10
37
|
yml_file = YAML.load_file("#{Rails.root}/config/rake_mailer.yml")
|
11
38
|
if yml_file && yml_file[Rails.env]
|
12
39
|
@rake_mailer_constants = yml_file[Rails.env]
|
13
|
-
@from = @rake_mailer_constants['from']
|
14
|
-
@emails = emails || @rake_mailer_constants['emails']
|
15
|
-
@subject = "[Rake Mailer] Report for #{Rake.application.top_level_tasks.first}"
|
16
|
-
config_file_path = @rake_mailer_constants['file_path']
|
17
|
-
@filename = Time.now.to_i.to_s + "_#{Rake.application.top_level_tasks.first}" + '.txt'
|
18
|
-
FileUtils::mkdir_p(config_file_path || 'tmp/rake_mailer')
|
19
|
-
@file_location = File.join(Rails.root, (config_file_path || 'tmp/rake_mailer'), @filename)
|
20
|
-
@file = open(@file_location, 'w')
|
21
40
|
else
|
22
41
|
raise 'ERROR: gem rake_mailer => configuration file is incorrect'
|
23
42
|
end
|
24
43
|
end
|
25
44
|
|
26
|
-
def
|
27
|
-
@
|
28
|
-
@
|
45
|
+
def set_email_config(emails)
|
46
|
+
@emails = emails || @rake_mailer_constants['emails']
|
47
|
+
@from = @rake_mailer_constants['from']
|
48
|
+
@subject = "[Rake Mailer] Report for #{Rake.application.top_level_tasks.first}"
|
49
|
+
set_display_system_info_config
|
29
50
|
end
|
30
51
|
|
31
|
-
def
|
32
|
-
@
|
33
|
-
|
52
|
+
def set_display_system_info_config
|
53
|
+
@display_system_info = @rake_mailer_constants['display_system_info'].nil? ? true : @rake_mailer_constants['display_system_info']
|
54
|
+
end
|
55
|
+
|
56
|
+
def set_file_config
|
57
|
+
@filename = Time.now.to_i.to_s + "_#{Rake.application.top_level_tasks.first}" + '.txt'
|
58
|
+
@file_path = @rake_mailer_constants['file_path'] || 'tmp/rake_mailer'
|
59
|
+
@file_location = File.join(Rails.root, (@file_path), @filename)
|
60
|
+
end
|
61
|
+
|
62
|
+
def create_file_path
|
63
|
+
begin
|
64
|
+
FileUtils::mkdir_p(@file_path)
|
65
|
+
rescue Exception => e
|
66
|
+
raise "ERROR: Block in create_file_path. Could not create folder => #{e.message}"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def open_file
|
71
|
+
begin
|
72
|
+
@file = open(@file_location, 'w')
|
73
|
+
rescue Exception => e
|
74
|
+
raise "ERROR: Block in open_file. Could not open the file => #{e.message}"
|
75
|
+
end
|
34
76
|
end
|
35
77
|
|
36
|
-
private
|
37
78
|
def send_email
|
38
79
|
if @from.present? && @emails.present? && (@from.is_a? String) && ((@emails.is_a? String) || (@emails.is_a? Array))
|
39
|
-
RakeMailer::MailIt.custom_text_email(@from, @emails, @file_location, @filename, @subject).deliver_now
|
80
|
+
RakeMailer::MailIt.custom_text_email(@from, @emails, @file_location, @filename, @subject, @display_system_info).deliver_now
|
40
81
|
end
|
41
82
|
end
|
42
83
|
end
|
data/lib/rake_mailer/mail_it.rb
CHANGED
@@ -1,31 +1,41 @@
|
|
1
1
|
require 'socket'
|
2
2
|
module RakeMailer
|
3
3
|
class MailIt < ActionMailer::Base
|
4
|
-
def custom_text_email(from, to, file_location, filename, subject)
|
4
|
+
def custom_text_email(from, to, file_location, filename, subject, display_system_info)
|
5
5
|
attachments[filename] = File.read(file_location)
|
6
|
+
body = display_system_info ? (body_text rescue "System Info Unsuccessful\n\npfa") : 'pfa'
|
6
7
|
mail :from => from,
|
7
8
|
:to => to,
|
8
9
|
:subject => subject do |format|
|
9
|
-
format.text { render text:
|
10
|
+
format.text { render text: body }
|
10
11
|
end
|
11
12
|
end
|
13
|
+
|
12
14
|
private
|
13
15
|
def body_text
|
14
|
-
s =
|
15
|
-
s << "
|
16
|
-
s << "
|
17
|
-
s << "
|
18
|
-
s << "
|
16
|
+
s = "GENERAL INFO\n"
|
17
|
+
s << "\tIP: #{Socket.ip_address_list.find {|a| !(a.ipv4_loopback?) }.ip_address}\n"
|
18
|
+
s << "\tHost: #{Socket.gethostname}\n"
|
19
|
+
s << "\tUser: #{ENV['USERNAME']}\n\n"
|
20
|
+
s << "\nTIME INFO\n"
|
21
|
+
s << "\tTime: #{Time.now.asctime}\n\n"
|
22
|
+
db_config = Rails.configuration.database_configuration[Rails.env]
|
23
|
+
s << "\nDATABASE INFO\n"
|
24
|
+
s << "\tAdapter: #{db_config['adapter']}\n"
|
25
|
+
s << "\tDatabase: #{db_config['database']}\n"
|
26
|
+
s << "\tHost: #{db_config['host']}\n\n"
|
19
27
|
begin
|
28
|
+
s << "\nSYSTEM INFO\n"
|
20
29
|
output = %x(free)
|
21
|
-
s << "
|
22
|
-
s << "
|
23
|
-
s << "
|
30
|
+
s << "\tTotal Memory: #{output.split(" ")[7]} KB\n"
|
31
|
+
s << "\tUsed Memory: #{output.split(" ")[8]} KB\n"
|
32
|
+
s << "\tFree Memory: #{output.split(" ")[9]} KB\n"
|
24
33
|
rescue
|
34
|
+
puts "ERROR: Block in body_text. Could not run command 'free' => #{e.message}"
|
25
35
|
end
|
26
36
|
s << "\npfa\n"
|
27
37
|
s << "\n\nregards,\n"
|
28
|
-
s << "Rake Mailer
|
38
|
+
s << "Rake Mailer\n"
|
29
39
|
s
|
30
40
|
end
|
31
41
|
end
|
data/lib/rake_mailer/version.rb
CHANGED