gossiper 0.3.4 → 0.3.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3cdc61bdd2db605d54aea6be7862aaa8b50a7f26
4
- data.tar.gz: 8fd27aadb81931eece3a78e724ede6b5d5650a5b
3
+ metadata.gz: bc1480aab310d0621df06090ef44c953c3422cc6
4
+ data.tar.gz: f0bf08f5a7c011c1110435016dde51829bb1d53b
5
5
  SHA512:
6
- metadata.gz: 6345c4c5611f258aebd3386d62584e6edcfe37c5a925541fffc1d57b4880e076da6123a28e6c42754bdc0ba5475e2b75f3993c1a6af116f4ccbba60356e77c17
7
- data.tar.gz: fa3aa48780490cf68b38bab6757f5e816edbc7d87f0641e8a91acf2221e49079616e76aab2294fc4fb8bf802cdf64e2161fe1e74ade902e816019d5505173aea
6
+ metadata.gz: f033f5024be39161393719659a7408a3c4b4cea217a1457f2dcbfb1193f7ae95cc78cd51ab8f1d334a2fb9e83868bdaa8af3a18537d1a2d72fb617236a1a8e33
7
+ data.tar.gz: b3cc4b64668113a7fe3f7c7caad4010a550d02b51fca04a5fcbd3217ca6a3b526f4fa4b58b3a6211d89d1689c7e2d65a2c44e02f1b257fa6dfa5415e95de78c7
@@ -6,20 +6,7 @@ module Gossiper
6
6
  serialize :data, JSON
7
7
 
8
8
  validates :kind, presence: true
9
-
10
- def user=(user)
11
- @user = user
12
- self.user_class = user.class.to_s
13
- self.user_id = user.id
14
- end
15
-
16
- def user
17
- @user ||= user_class.constantize.find(user_id)
18
- end
19
-
20
- def user_class
21
- read_attribute(:user_class).presence || Gossiper.configuration.default_notification_user_class
22
- end
9
+ belongs_to :user, polymorphic: true
23
10
 
24
11
  def status
25
12
  read_attribute(:status).presence || STATUSES.first
@@ -44,6 +31,16 @@ module Gossiper
44
31
  write_attribute(:kind, value)
45
32
  end
46
33
 
34
+ def config
35
+ begin
36
+ klass = "Notifications::#{kind.classify}Notification"
37
+ klass.constantize.new(self)
38
+ rescue NameError
39
+ klass = Gossiper.configuration.default_notification_config_class
40
+ klass.constantize.new(self)
41
+ end
42
+ end
43
+
47
44
  def method_missing(method, *args, &block)
48
45
  STATUSES.each do |status|
49
46
  if method.to_s == "#{status}?"
@@ -2,7 +2,7 @@ class CreateGossiperNotifications < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :gossiper_notifications do |t|
4
4
  t.integer :user_id
5
- t.string :user_class
5
+ t.string :user_type
6
6
  t.string :kind
7
7
  t.string :status
8
8
  t.datetime :delivered_at
@@ -1,14 +1,16 @@
1
1
  <%- test_folder = defined?(RSpec) ? 'spec' : 'test' -%>
2
2
  Gossiper.configure do |config|
3
- # Change the default user class
4
- config.default_notification_user_class = 'User'
5
3
 
6
4
  # change the default class of the configurations
7
5
  config.default_notification_config_class = 'Gossiper::EmailConfig'
8
6
 
9
- # email the email sender
7
+ # the email sender
10
8
  config.default_from = 'from@example.com'
11
9
 
10
+ # the default reply to
11
+ # when not present, it defaults to the same email addres ass the default_from
12
+ # config.default_reply_to = 'reply@example.com'
13
+
12
14
  # The list of emails to send copies to
13
15
  # config.default_cc = ['user@example.com']
14
16
 
@@ -1,13 +1,19 @@
1
1
  module Notifications
2
2
  class <%= class_name %>Notification < Gossiper::EmailConfig
3
3
 
4
- # def to
4
+ # def initialize(notification)
5
5
  # end
6
6
 
7
- # def bcc
7
+ # def from
8
8
  # end
9
9
 
10
- # def from
10
+ # def reply_to
11
+ # end
12
+
13
+ # def to
14
+ # end
15
+
16
+ # def bcc
11
17
  # end
12
18
 
13
19
  # def cc
@@ -21,12 +27,17 @@ module Notifications
21
27
 
22
28
  # def subject
23
29
  # end
30
+ #
31
+ # def subject_variables
32
+ # {}
33
+ # end
24
34
 
25
35
  # def attachments
36
+ # {}
26
37
  # end
27
38
 
28
39
  # def instance_variables
40
+ # {}
29
41
  # end
30
-
31
42
  end
32
43
  end
@@ -19,6 +19,7 @@ module Gossiper
19
19
  attribute :default_notification_user_class
20
20
  attribute :default_notification_config_class
21
21
  attribute :default_from
22
+ attribute :default_reply_to
22
23
  attribute :default_cc
23
24
  attribute :default_bcc
24
25
 
@@ -4,13 +4,17 @@ module Gossiper
4
4
 
5
5
  def initialize(notification)
6
6
  @notification = notification
7
- @user = notification.user
7
+ @user = notification.user rescue nil
8
8
  end
9
9
 
10
10
  def from
11
11
  config.default_from
12
12
  end
13
13
 
14
+ def reply_to
15
+ config.default_reply_to.presence || config.default_from
16
+ end
17
+
14
18
  def to
15
19
  if user.respond_to?(:name)
16
20
  ["#{user.name} <#{user.email}>"]
@@ -36,7 +40,7 @@ module Gossiper
36
40
  end
37
41
 
38
42
  def subject
39
- I18n.t("gossiper.notifications.#{notification.kind}.subject")
43
+ I18n.t("gossiper.notifications.#{notification.kind}.subject", subject_variables)
40
44
  end
41
45
 
42
46
  def attachments
@@ -47,6 +51,10 @@ module Gossiper
47
51
  {}
48
52
  end
49
53
 
54
+ def subject_variables
55
+ {}
56
+ end
57
+
50
58
  private
51
59
  def config
52
60
  Gossiper.configuration
@@ -2,7 +2,7 @@ module Gossiper
2
2
  class Mailer < ActionMailer::Base
3
3
 
4
4
  def mail_for(notification)
5
- config = config_for(notification)
5
+ config = notification.config
6
6
 
7
7
  config.attachments.each do |filename, file|
8
8
  attachments[filename] = file
@@ -15,25 +15,16 @@ module Gossiper
15
15
  end
16
16
 
17
17
  mail(
18
- from: config.from,
19
- to: config.to,
20
- cc: config.cc,
21
- bcc: config.bcc,
18
+ from: config.from,
19
+ reply_to: config.reply_to,
20
+ to: config.to,
21
+ cc: config.cc,
22
+ bcc: config.bcc,
22
23
  subject: config.subject,
23
24
  template_name: config.template_name,
24
25
  template_path: config.template_path
25
26
  )
26
27
  end
27
28
 
28
- def config_for(notification)
29
- begin
30
- klass = "Notifications::#{notification.kind.classify}Notification"
31
- klass.constantize.new(notification)
32
- rescue NameError
33
- klass = Gossiper.configuration.default_notification_config_class
34
- klass.constantize.new(notification)
35
- end
36
-
37
- end
38
29
  end
39
30
  end
@@ -1,3 +1,3 @@
1
1
  module Gossiper
2
- VERSION = "0.3.4"
2
+ VERSION = "0.3.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gossiper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcelo Jacobus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-14 00:00:00.000000000 Z
11
+ date: 2013-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqlite3
@@ -124,7 +124,6 @@ files:
124
124
  - app/assets/stylesheets/gossiper/application.css
125
125
  - app/assets/stylesheets/gossiper/notifications.css
126
126
  - app/helpers/gossiper/notifications_helper.rb
127
- - app/helpers/gossiper/application_helper.rb
128
127
  - app/models/gossiper/notification.rb
129
128
  - app/views/layouts/gossiper/application.html.erb
130
129
  - app/views/kaminari/_gap.html.erb
@@ -1,4 +0,0 @@
1
- module Gossiper
2
- module ApplicationHelper
3
- end
4
- end