tricle 0.2.1 → 0.2.2
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 +4 -4
- data/README.md +25 -4
- data/lib/tricle/mailer.rb +10 -0
- data/lib/tricle/metric.rb +1 -1
- data/lib/tricle/tasks.rb +6 -0
- data/lib/tricle/time.rb +41 -0
- data/lib/tricle/version.rb +1 -1
- data/spec/config/timecop.rb +1 -0
- data/spec/unit/mailer_spec.rb +13 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b642f05f1b01ca4cd31ea2686d60ef99e63d203a
|
4
|
+
data.tar.gz: c230338123cff716fa9951ec7a2973c059448df3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ca75aae8ba3b852f2983e4444ba970959586be2209c4dc08209c7a5a0b3910d97e6d0982a0251a7aa7bb7b259c8c886b0d9af8ff8d765a6b53b6ad069543a7b
|
7
|
+
data.tar.gz: 59a2a220783e513ee84e8d650d213779dbc16735bdbbd7920b386d926b0caa6ff232438989fdf5720410680f8680504ad1101aabe9f4e1ec8f98dc2f7b69c365
|
data/README.md
CHANGED
@@ -6,23 +6,29 @@ Automated metrics reporting via email. It's datastore-agnostic, so you can quer
|
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
|
-
### Gem
|
10
|
-
|
11
9
|
This gem can be used within an existing project (e.g. a Rails app), or standalone.
|
12
10
|
|
13
11
|
```ruby
|
14
12
|
# Gemfile
|
15
13
|
gem 'tricle', '~> 0.2.0'
|
16
14
|
|
15
|
+
|
17
16
|
# Rakefile
|
17
|
+
require 'your/tricle/subclasses'
|
18
18
|
require 'tricle/tasks'
|
19
19
|
|
20
|
+
|
20
21
|
# your/config/file.rb
|
22
|
+
|
21
23
|
# unless you already have ActionMailer set up
|
22
24
|
ActionMailer::Base.raise_delivery_errors = true
|
23
25
|
ActionMailer::Base.smtp_settings = {
|
24
26
|
# ...
|
25
27
|
}
|
28
|
+
|
29
|
+
# Optional: Override the start day of the reports (Rails >= 4.0.3 only)
|
30
|
+
# http://api.rubyonrails.org/classes/Date.html#method-i-beginning_of_week-3D
|
31
|
+
Date.beginning_of_week = :monday
|
26
32
|
```
|
27
33
|
|
28
34
|
See [the ActionMailer guide](http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration) for configuration details. Finally, execute:
|
@@ -237,6 +243,21 @@ To set a speficic time zone, use the `TZ` environment variable (see the list [he
|
|
237
243
|
TZ=UTC rake tricle:emails:send
|
238
244
|
```
|
239
245
|
|
240
|
-
###
|
246
|
+
### Heroku
|
247
|
+
|
248
|
+
1. Deploy the application.
|
249
|
+
* If this is a standalone app, you won't need a `web` process.
|
250
|
+
1. Enable an [add-on for email delivery](https://addons.heroku.com/?q=email%20deliver), and [configure](#installation) ActionMailer to send via that provider.
|
251
|
+
1. Enable [Heroku Scheduler](https://devcenter.heroku.com/articles/scheduler).
|
252
|
+
|
253
|
+
```bash
|
254
|
+
heroku addons:add scheduler:standard
|
255
|
+
heroku addons:open scheduler
|
256
|
+
```
|
257
|
+
|
258
|
+
1. Add a "job".
|
259
|
+
* For a report sent once per day, use the command from [Deploying](#deploying).
|
260
|
+
* For a report sent once per week, use `rake tricle:emails:send_after_beginning_of_week` daily.
|
261
|
+
* Heroku Scheduler only supports a maximum of daily tasks, hence needing to use a special task.
|
241
262
|
|
242
|
-
|
263
|
+
You can trigger the email(s) manually for testing with `heroku run rake tricle:emails:send`.
|
data/lib/tricle/mailer.rb
CHANGED
@@ -4,6 +4,7 @@ require 'premailer'
|
|
4
4
|
|
5
5
|
require_relative 'email_helper'
|
6
6
|
require_relative 'presenters/report'
|
7
|
+
require_relative 'time'
|
7
8
|
|
8
9
|
|
9
10
|
module Tricle
|
@@ -70,6 +71,15 @@ module Tricle
|
|
70
71
|
end
|
71
72
|
puts "Done."
|
72
73
|
end
|
74
|
+
|
75
|
+
def send_all_if_beginning_of_week
|
76
|
+
time = Tricle::Time.new
|
77
|
+
if time.beginning_of_week?
|
78
|
+
self.send_all
|
79
|
+
else
|
80
|
+
puts "Skipping send, because it's not the beginning of the week."
|
81
|
+
end
|
82
|
+
end
|
73
83
|
end
|
74
84
|
end
|
75
85
|
end
|
data/lib/tricle/metric.rb
CHANGED
data/lib/tricle/tasks.rb
CHANGED
@@ -15,5 +15,11 @@ namespace :tricle do
|
|
15
15
|
task :send do
|
16
16
|
Tricle::Mailer.send_all
|
17
17
|
end
|
18
|
+
|
19
|
+
# needed for Heroku Scheduler, whose most infrequent option is daily
|
20
|
+
desc "Send all emails, but only if it's the current day is the \"beginning of the week\". See http://api.rubyonrails.org/classes/Date.html#method-i-beginning_of_week-3D."
|
21
|
+
task :send_after_beginning_of_week do
|
22
|
+
Tricle::Mailer.send_all_if_beginning_of_week
|
23
|
+
end
|
18
24
|
end
|
19
25
|
end
|
data/lib/tricle/time.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
module Tricle
|
2
|
+
class Time
|
3
|
+
attr_reader :time
|
4
|
+
|
5
|
+
def initialize(time=nil)
|
6
|
+
@time = time || ::Time.now
|
7
|
+
end
|
8
|
+
|
9
|
+
def day_of_week
|
10
|
+
self.time.strftime('%A').downcase.to_sym
|
11
|
+
end
|
12
|
+
|
13
|
+
def beginning_of_week?
|
14
|
+
self.day_of_week == self.class.beginning_of_week
|
15
|
+
end
|
16
|
+
|
17
|
+
## delegate methods ##
|
18
|
+
|
19
|
+
def beginning_of_day
|
20
|
+
self.time.beginning_of_day
|
21
|
+
end
|
22
|
+
|
23
|
+
def beginning_of_week
|
24
|
+
self.time.beginning_of_week
|
25
|
+
end
|
26
|
+
|
27
|
+
######################
|
28
|
+
|
29
|
+
class << self
|
30
|
+
def beginning_of_week
|
31
|
+
if Date.respond_to?(:beginning_of_week)
|
32
|
+
# Rails >= 4.0.2
|
33
|
+
# http://apidock.com/rails/v4.0.2/Date/beginning_of_week/class
|
34
|
+
Date.beginning_of_week
|
35
|
+
else
|
36
|
+
:monday
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/tricle/version.rb
CHANGED
data/spec/config/timecop.rb
CHANGED
data/spec/unit/mailer_spec.rb
CHANGED
@@ -76,4 +76,17 @@ describe Tricle::Mailer do
|
|
76
76
|
expect(ActionMailer::Base.deliveries.length).to eq(5)
|
77
77
|
end
|
78
78
|
end
|
79
|
+
|
80
|
+
describe '.send_all_if_beginning_of_week' do
|
81
|
+
it "shouldn't do anything if not the beginning of the week" do
|
82
|
+
expect(Tricle::Mailer).to_not receive(:send_all)
|
83
|
+
Tricle::Mailer.send_all_if_beginning_of_week
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should send if it's the beginning of the week" do
|
87
|
+
Timecop.freeze(Time.now - 3.days) # Monday
|
88
|
+
expect(Tricle::Mailer).to receive(:send_all)
|
89
|
+
Tricle::Mailer.send_all_if_beginning_of_week
|
90
|
+
end
|
91
|
+
end
|
79
92
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tricle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aidan Feldman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -129,6 +129,7 @@ files:
|
|
129
129
|
- lib/tricle/templates/email.css
|
130
130
|
- lib/tricle/templates/email.html.erb
|
131
131
|
- lib/tricle/templates/email.text.erb
|
132
|
+
- lib/tricle/time.rb
|
132
133
|
- lib/tricle/version.rb
|
133
134
|
- screenshot.png
|
134
135
|
- spec/app/group_test_mailer.rb
|