io_mailer 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d51a2f6ef6be68f5cf79af0beed57d01a1e3bdb2
4
+ data.tar.gz: e7e53b04c44885bb7041f67710167789f9dd75ec
5
+ SHA512:
6
+ metadata.gz: 402c25c3211566d656b6da675ac501982a0ea834d74684ae03d4ae93f594cfa0a27ad94b2a9683a55bc159b5e2aef1dc4d4ad775336fb8060fcda9a196f54eba
7
+ data.tar.gz: c5d640c060af53e483e698823a96add02b6f06218c74f327efd7a9f0832e6c5b6a87bb4599386c1d1956981d9d2c924854724014254411b70920fe74476b849f
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ config/*.yml
2
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in cf_billing.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,83 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ io_mailer (0.0.1)
5
+ actionmailer
6
+ whenever
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ actionmailer (4.0.1)
12
+ actionpack (= 4.0.1)
13
+ mail (~> 2.5.4)
14
+ actionpack (4.0.1)
15
+ activesupport (= 4.0.1)
16
+ builder (~> 3.1.0)
17
+ erubis (~> 2.7.0)
18
+ rack (~> 1.5.2)
19
+ rack-test (~> 0.6.2)
20
+ activesupport (4.0.1)
21
+ i18n (~> 0.6, >= 0.6.4)
22
+ minitest (~> 4.2)
23
+ multi_json (~> 1.3)
24
+ thread_safe (~> 0.1)
25
+ tzinfo (~> 0.3.37)
26
+ addressable (2.3.5)
27
+ atomic (1.1.14)
28
+ builder (3.1.4)
29
+ chronic (0.10.2)
30
+ coderay (1.1.0)
31
+ columnize (0.3.6)
32
+ debugger (1.6.2)
33
+ columnize (>= 0.3.1)
34
+ debugger-linecache (~> 1.2.0)
35
+ debugger-ruby_core_source (~> 1.2.3)
36
+ debugger-linecache (1.2.0)
37
+ debugger-ruby_core_source (1.2.3)
38
+ erubis (2.7.0)
39
+ i18n (0.6.5)
40
+ launchy (2.4.0)
41
+ addressable (~> 2.3)
42
+ letter_opener (1.1.2)
43
+ launchy (~> 2.2)
44
+ mail (2.5.4)
45
+ mime-types (~> 1.16)
46
+ treetop (~> 1.4.8)
47
+ method_source (0.8.2)
48
+ mime-types (1.25)
49
+ minitest (4.7.5)
50
+ multi_json (1.8.2)
51
+ polyglot (0.3.3)
52
+ pry (0.9.12.3)
53
+ coderay (~> 1.0)
54
+ method_source (~> 0.8)
55
+ slop (~> 3.4)
56
+ pry-debugger (0.2.2)
57
+ debugger (~> 1.3)
58
+ pry (~> 0.9.10)
59
+ rack (1.5.2)
60
+ rack-test (0.6.2)
61
+ rack (>= 1.0)
62
+ rake (10.1.0)
63
+ slop (3.4.7)
64
+ thread_safe (0.1.3)
65
+ atomic
66
+ treetop (1.4.15)
67
+ polyglot
68
+ polyglot (>= 0.3.1)
69
+ tzinfo (0.3.38)
70
+ whenever (0.8.4)
71
+ activesupport (>= 2.3.4)
72
+ chronic (>= 0.6.3)
73
+
74
+ PLATFORMS
75
+ ruby
76
+
77
+ DEPENDENCIES
78
+ bundler
79
+ io_mailer!
80
+ letter_opener
81
+ pry
82
+ pry-debugger
83
+ rake
data/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # IO Mailer
2
+
3
+ This simple script executes a command provided as command line argument and sends the output results of the script to email addresses. These email addresses can be specified in a configuration file.
4
+
5
+ # Configuration
6
+ * Recipient email addresses can be specified in the config/io_mailer.yml
7
+ file. An example can be found under config/io_mailer.yml.example .
8
+
9
+ # Usage
10
+
11
+ * Script execution: bundle exec bin/io_mailer <the script file location or command to execute> (e.g. bundle exec bin/io_mailer ls)
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ desc 'starts a interactive shell'
4
+ task :console do
5
+ exec('pry -r ./lib/io_mailer.rb')
6
+ end
7
+
8
+ task c: :console
data/bin/io_mailer ADDED
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ require 'open3'
3
+ require_relative '../lib/io_mailer'
4
+
5
+ raise "Insufficient arguments for io_mailer. Please specify a script or a command to run" if ARGV.size < 1
6
+ puts "Running io_mailer with arguments=#{ARGV}"
7
+
8
+ command = ARGV[0]
9
+ command_output = []
10
+
11
+ IO.popen(command).each do |line|
12
+ command_output << line.chomp
13
+ end
14
+
15
+ config = IOMailer.config.config
16
+
17
+ puts "The command/script produced the following output:"
18
+ puts ""
19
+ puts command_output
20
+
21
+ payload = { :command => command }
22
+ payload[:lines] = command_output
23
+
24
+ puts "Sending email to recipients: #{config['recipients']} !"
25
+ mail = IOMailer::NotificationMailer.notify(config['recipients'], config['from_address'], config['subject'], payload)
26
+
27
+ puts "Sending email with body:"
28
+ puts mail.body
29
+
30
+ mail.deliver
31
+ puts "Sent email!"
data/bin/test.sh ADDED
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+
3
+ cd ~/rubydev/intern/order_management
4
+ bundle exec rake
File without changes
@@ -0,0 +1,3 @@
1
+ every 2.days, :at => '3:30 am' do
2
+ command "/home/yeti/io_mailer/bin/io_mailer /home/yeti/run_livesystem_yeti_tests"
3
+ end
data/io_mailer.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'io_mailer/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'io_mailer'
8
+ spec.version = IOMailer::VERSION
9
+ spec.authors = ["Julian Weber"]
10
+ spec.email = ["jweber@anynines.com"]
11
+ spec.description = %q{IOMailer is a simple script for executing commands and shell scripts, collecting their output and mailing it to designated email addresses.}
12
+ spec.summary = %q{IOMailer is a simple script for executing commands and shell scripts, collecting their output and mailing it to designated email addresses.}
13
+ spec.homepage = "http://anynines.com"
14
+ spec.license = ""
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency 'bundler'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'pry-debugger'
24
+ spec.add_development_dependency 'pry'
25
+ spec.add_development_dependency 'letter_opener'
26
+
27
+ spec.add_dependency 'actionmailer'
28
+ spec.add_dependency 'whenever'
29
+ end
data/lib/io_mailer.rb ADDED
@@ -0,0 +1,20 @@
1
+ require 'io_mailer/version'
2
+ require 'pry'
3
+ require 'action_mailer'
4
+ require 'yaml'
5
+
6
+ module IOMailer
7
+ autoload :NotificationMailer, File.expand_path('../io_mailer/notification_mailer', __FILE__)
8
+ autoload :Configuration, File.expand_path('../io_mailer/configuration', __FILE__)
9
+
10
+ @@config = nil
11
+
12
+ def self.config
13
+ @@config = IOMailer::Configuration.new(File.expand_path('config/io_mailer.yml')) if @@config.nil?
14
+ return @@config
15
+ end
16
+
17
+ def self.base_directory
18
+ File.expand_path("../", File.dirname(__FILE__))
19
+ end
20
+ end
@@ -0,0 +1,46 @@
1
+ class IOMailer::Configuration
2
+ attr_accessor :config
3
+
4
+ def initialize(file_location)
5
+ load_config_from_file(file_location)
6
+ configure_mailer
7
+ end
8
+
9
+
10
+ private
11
+
12
+ # Loads the configuration from the specified yaml file.
13
+ def load_config_from_file(file_location)
14
+ raise "There's no configuration file at #{file_location}!" unless File.exists? file_location
15
+ config = YAML.load_file(file_location)
16
+ @config = config
17
+ @config
18
+ end
19
+
20
+ def configure_mailer
21
+ if @config['delivery_method'].to_sym == :letter_opener
22
+ configure_letter_opener
23
+ else
24
+ configure_action_mailer
25
+ end
26
+ end
27
+
28
+ def configure_action_mailer
29
+ ::ActionMailer::Base.raise_delivery_errors = true
30
+ ::ActionMailer::Base.delivery_method = @config['delivery_method'].to_sym
31
+
32
+ ::ActionMailer::Base.smtp_settings = @config['smtp_settings'] if ActionMailer::Base.delivery_method == :smtp
33
+
34
+ ::ActionMailer::Base.view_paths = File.expand_path('../../../views/mailers', __FILE__)
35
+ end
36
+
37
+ def configure_letter_opener
38
+ require "letter_opener"
39
+
40
+ ActionMailer::Base.raise_delivery_errors = true
41
+ ActionMailer::Base.add_delivery_method :letter_opener, LetterOpener::DeliveryMethod,
42
+ :location => File.expand_path("./tmp", IOMailer.base_directory)
43
+ ActionMailer::Base.delivery_method = :letter_opener
44
+ ActionMailer::Base.view_paths = File.expand_path('../../../views/mailers', __FILE__)
45
+ end
46
+ end
@@ -0,0 +1,13 @@
1
+ class IOMailer::NotificationMailer < ActionMailer::Base
2
+
3
+ def notify(recipients, from_address, subject, payload)
4
+ @payload = payload
5
+
6
+ mail( :to => recipients,
7
+ :from => from_address,
8
+ :subject => subject) do |format|
9
+ format.html { render }
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,3 @@
1
+ module IOMailer
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: UTF-8
2
+ <!DOCTYPE html>
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
6
+ </head>
7
+ <body>
8
+ <h1>IOMailer Message delivery for command: <%= @payload[:command] %></h1></br>
9
+ <p>
10
+ <% @payload[:lines].each do |l| %>
11
+ <%= l %> </br>
12
+ <% end %>
13
+ </p>
14
+ </body>
15
+ </html>
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: io_mailer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Julian Weber
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry-debugger
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: letter_opener
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: actionmailer
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: whenever
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: IOMailer is a simple script for executing commands and shell scripts,
112
+ collecting their output and mailing it to designated email addresses.
113
+ email:
114
+ - jweber@anynines.com
115
+ executables:
116
+ - io_mailer
117
+ - test.sh
118
+ extensions: []
119
+ extra_rdoc_files: []
120
+ files:
121
+ - .gitignore
122
+ - Gemfile
123
+ - Gemfile.lock
124
+ - README.md
125
+ - Rakefile
126
+ - bin/io_mailer
127
+ - bin/test.sh
128
+ - config/io_mailer.yml.example
129
+ - config/schedule.rb
130
+ - io_mailer.gemspec
131
+ - lib/io_mailer.rb
132
+ - lib/io_mailer/configuration.rb
133
+ - lib/io_mailer/notification_mailer.rb
134
+ - lib/io_mailer/version.rb
135
+ - views/mailers/io_mailer/notification_mailer/notify.html.erb
136
+ homepage: http://anynines.com
137
+ licenses:
138
+ - ''
139
+ metadata: {}
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubyforge_project:
156
+ rubygems_version: 2.0.6
157
+ signing_key:
158
+ specification_version: 4
159
+ summary: IOMailer is a simple script for executing commands and shell scripts, collecting
160
+ their output and mailing it to designated email addresses.
161
+ test_files: []