notify_user 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.
Files changed (86) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +12 -0
  4. data/app/assets/javascripts/notify_user/application.js +15 -0
  5. data/app/assets/stylesheets/notify_user/application.css +13 -0
  6. data/app/controllers/notify_user/notifications_controller.rb +33 -0
  7. data/app/helpers/notify_user/application_helper.rb +4 -0
  8. data/app/mailers/notify_user/notification_mailer.rb +28 -0
  9. data/app/models/notify_user/base_notification.rb +187 -0
  10. data/app/serializers/notify_user/notification_serializer.rb +15 -0
  11. data/app/views/layouts/notify_user/application.html.erb +14 -0
  12. data/app/views/notify_user/action_mailer/aggregate_notification.html.erb +5 -0
  13. data/app/views/notify_user/action_mailer/notification.html.erb +1 -0
  14. data/config/routes.rb +6 -0
  15. data/lib/generators/notify_user/install/USAGE +8 -0
  16. data/lib/generators/notify_user/install/install_generator.rb +28 -0
  17. data/lib/generators/notify_user/install/templates/initializer.rb +12 -0
  18. data/lib/generators/notify_user/install/templates/migration.rb +13 -0
  19. data/lib/generators/notify_user/notification/USAGE +8 -0
  20. data/lib/generators/notify_user/notification/notification_generator.rb +16 -0
  21. data/lib/generators/notify_user/notification/templates/email_layout_template.html.erb.erb +33 -0
  22. data/lib/generators/notify_user/notification/templates/email_template.html.erb.erb +1 -0
  23. data/lib/generators/notify_user/notification/templates/mobile_sdk_template.html.erb.erb +1 -0
  24. data/lib/generators/notify_user/notification/templates/notification.rb.erb +10 -0
  25. data/lib/notify_user/channels/action_mailer/action_mailer_channel.rb +24 -0
  26. data/lib/notify_user/engine.rb +11 -0
  27. data/lib/notify_user/version.rb +3 -0
  28. data/lib/notify_user.rb +26 -0
  29. data/spec/controllers/notify_user/notifications_controller_spec.rb +54 -0
  30. data/spec/dummy/rails-4.0.2/Gemfile +45 -0
  31. data/spec/dummy/rails-4.0.2/README.rdoc +28 -0
  32. data/spec/dummy/rails-4.0.2/Rakefile +6 -0
  33. data/spec/dummy/rails-4.0.2/app/assets/javascripts/application.js +16 -0
  34. data/spec/dummy/rails-4.0.2/app/assets/stylesheets/application.css +13 -0
  35. data/spec/dummy/rails-4.0.2/app/controllers/application_controller.rb +5 -0
  36. data/spec/dummy/rails-4.0.2/app/helpers/application_helper.rb +2 -0
  37. data/spec/dummy/rails-4.0.2/app/models/user.rb +2 -0
  38. data/spec/dummy/rails-4.0.2/app/notifications/new_post_notification.rb +10 -0
  39. data/spec/dummy/rails-4.0.2/app/views/layouts/application.html.erb +14 -0
  40. data/spec/dummy/rails-4.0.2/app/views/notify_user/layouts/action_mailer.html.erb +33 -0
  41. data/spec/dummy/rails-4.0.2/app/views/notify_user/new_post_notification/action_mailer/notification.html.erb +1 -0
  42. data/spec/dummy/rails-4.0.2/app/views/notify_user/new_post_notification/mobile_sdk/notification.html.erb +1 -0
  43. data/spec/dummy/rails-4.0.2/bin/bundle +3 -0
  44. data/spec/dummy/rails-4.0.2/bin/rails +4 -0
  45. data/spec/dummy/rails-4.0.2/bin/rake +4 -0
  46. data/spec/dummy/rails-4.0.2/config/application.rb +23 -0
  47. data/spec/dummy/rails-4.0.2/config/boot.rb +4 -0
  48. data/spec/dummy/rails-4.0.2/config/database.yml +25 -0
  49. data/spec/dummy/rails-4.0.2/config/environment.rb +5 -0
  50. data/spec/dummy/rails-4.0.2/config/environments/development.rb +29 -0
  51. data/spec/dummy/rails-4.0.2/config/environments/production.rb +80 -0
  52. data/spec/dummy/rails-4.0.2/config/environments/test.rb +36 -0
  53. data/spec/dummy/rails-4.0.2/config/initializers/backtrace_silencers.rb +7 -0
  54. data/spec/dummy/rails-4.0.2/config/initializers/filter_parameter_logging.rb +4 -0
  55. data/spec/dummy/rails-4.0.2/config/initializers/inflections.rb +16 -0
  56. data/spec/dummy/rails-4.0.2/config/initializers/mime_types.rb +5 -0
  57. data/spec/dummy/rails-4.0.2/config/initializers/notify_user.rb +12 -0
  58. data/spec/dummy/rails-4.0.2/config/initializers/secret_token.rb +12 -0
  59. data/spec/dummy/rails-4.0.2/config/initializers/session_store.rb +3 -0
  60. data/spec/dummy/rails-4.0.2/config/initializers/wrap_parameters.rb +14 -0
  61. data/spec/dummy/rails-4.0.2/config/locales/en.yml +23 -0
  62. data/spec/dummy/rails-4.0.2/config/routes.rb +56 -0
  63. data/spec/dummy/rails-4.0.2/config.ru +4 -0
  64. data/spec/dummy/rails-4.0.2/db/migrate/20140105070446_create_users.rb +9 -0
  65. data/spec/dummy/rails-4.0.2/db/migrate/20140105070448_create_notify_user_notifications.rb +13 -0
  66. data/spec/dummy/rails-4.0.2/db/schema.rb +32 -0
  67. data/spec/dummy/rails-4.0.2/db/seeds.rb +7 -0
  68. data/spec/dummy/rails-4.0.2/db/test.sqlite3 +0 -0
  69. data/spec/dummy/rails-4.0.2/log/test.log +1701 -0
  70. data/spec/dummy/rails-4.0.2/public/404.html +58 -0
  71. data/spec/dummy/rails-4.0.2/public/422.html +58 -0
  72. data/spec/dummy/rails-4.0.2/public/500.html +57 -0
  73. data/spec/dummy/rails-4.0.2/public/favicon.ico +0 -0
  74. data/spec/dummy/rails-4.0.2/public/robots.txt +5 -0
  75. data/spec/dummy/rails-4.0.2/test/fixtures/users.yml +7 -0
  76. data/spec/dummy/rails-4.0.2/test/models/user_test.rb +7 -0
  77. data/spec/dummy/rails-4.0.2/test/test_helper.rb +15 -0
  78. data/spec/factories/notify_user_notifications.rb +10 -0
  79. data/spec/fixtures/notify_user/notification_mailer/notification_email +3 -0
  80. data/spec/mailers/notify_user/notification_mailer_spec.rb +31 -0
  81. data/spec/models/notify_user/notification_spec.rb +71 -0
  82. data/spec/serializers/notify_user/notification_serializer_spec.rb +10 -0
  83. data/spec/setup_spec.rb +17 -0
  84. data/spec/spec_helper.rb +46 -0
  85. data/spec/support/rails_template.rb +8 -0
  86. metadata +289 -0
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/404.html -->
52
+ <div class="dialog">
53
+ <h1>The page you were looking for doesn't exist.</h1>
54
+ <p>You may have mistyped the address or the page may have moved.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/422.html -->
52
+ <div class="dialog">
53
+ <h1>The change you wanted was rejected.</h1>
54
+ <p>Maybe you tried to change something you didn't have access to.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,57 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/500.html -->
52
+ <div class="dialog">
53
+ <h1>We're sorry, but something went wrong.</h1>
54
+ </div>
55
+ <p>If you are the application owner check the logs for more information.</p>
56
+ </body>
57
+ </html>
File without changes
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-agent: *
5
+ # Disallow: /
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
+
3
+ one:
4
+ email: MyString
5
+
6
+ two:
7
+ email: MyString
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class UserTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,15 @@
1
+ ENV["RAILS_ENV"] ||= "test"
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ ActiveRecord::Migration.check_pending!
7
+
8
+ # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
9
+ #
10
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
11
+ # -- they do not yet inherit this setting
12
+ fixtures :all
13
+
14
+ # Add more helper methods to be used by all tests here...
15
+ end
@@ -0,0 +1,10 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :notify_user_notification, :class => 'Notification' do
5
+ type ""
6
+ target_id 1
7
+ target_type "MyString"
8
+ params "MyText"
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ NotificationMailer#notification_email
2
+
3
+ Hi, find me in app/views/notify_user/notification_mailer/notification_email
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ describe NotifyUser::NotificationMailer do
4
+ describe "notification_email" do
5
+
6
+ let(:user) { User.new({email: "user@example.com" })}
7
+ let(:notification) { NewPostNotification.new({target: user}) }
8
+ let(:mailer) { NotifyUser::NotificationMailer.send(:new, 'notification_email', notification, ActionMailerChannel.default_options) }
9
+ let(:mail) { mailer.notification_email(notification, ActionMailerChannel.default_options) }
10
+
11
+ before :each do
12
+ NotifyUser::BaseNotification.stub(:find).and_return(notification)
13
+ end
14
+
15
+ it "renders the headers" do
16
+ mail.subject.should eq(ActionMailerChannel.default_options[:subject])
17
+ mail.to.should eq([user.email])
18
+ mail.from.should eq([NotifyUser.mailer_sender])
19
+ end
20
+
21
+ it "renders a template to render the notification's template as a partial" do
22
+ mailer_should_render_template(mailer, "notify_user/action_mailer/notification")
23
+ mail
24
+ end
25
+
26
+ it "renders with a layout" do
27
+ mail.body.raw_source.should include "This is the default generated layout"
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+
3
+ module NotifyUser
4
+ describe BaseNotification do
5
+
6
+ let(:user) { User.create({email: "user@example.com" })}
7
+ let(:notification) { NewPostNotification.create({target: user}) }
8
+
9
+ describe "#notify" do
10
+
11
+ it "raises an exception if the notification is not valid" do
12
+ notification.target = nil
13
+ expect { notification.notify }.to raise_error
14
+ end
15
+
16
+ describe "with aggregation enabled" do
17
+
18
+ it "schedules a job to wait for more notifications to aggregate if there is not one already" do
19
+ BaseNotification.should_receive(:delay_for)
20
+ .with(notification.class.aggregate_per)
21
+ .and_call_original
22
+ ActionMailerChannel.should_receive(:deliver)
23
+ notification.notify
24
+ end
25
+
26
+ it "does not schedule an aggregation job if there is one already" do
27
+ Sidekiq::Testing.fake!
28
+
29
+ notification.notify
30
+
31
+ another_notification = NewPostNotification.new({target: user})
32
+
33
+ BaseNotification.should_not_receive(:delay_for)
34
+ another_notification.notify
35
+ end
36
+
37
+ describe ".notify_aggregated" do
38
+
39
+ it "sends an aggregated email if more than one notification queued up" do
40
+ Sidekiq::Testing.inline!
41
+
42
+ NewPostNotification.create({target: user})
43
+
44
+ NotificationMailer.should_receive(:aggregate_notifications_email).with(BaseNotification.pending_aggregation_with(notification), anything).and_call_original
45
+ BaseNotification.notify_aggregated(notification.id)
46
+ end
47
+
48
+ it "sends a singular email if no more notifications were queued since the original was delayed" do
49
+ Sidekiq::Testing.inline!
50
+
51
+ NotificationMailer.should_receive(:notification_email).with(notification, anything).and_call_original
52
+ BaseNotification.notify_aggregated(notification.id)
53
+ end
54
+
55
+ end
56
+ end
57
+
58
+ end
59
+
60
+ describe "#notify!" do
61
+
62
+ it "sends immediately, ignoring aggregation" do
63
+ BaseNotification.should_not_receive(:delay_for)
64
+ ActionMailerChannel.should_receive(:deliver)
65
+ notification.notify!
66
+ end
67
+
68
+ end
69
+
70
+ end
71
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe NotifyUser::NotificationSerializer do
4
+
5
+ it { should include_root(:notifications) }
6
+ it { should have_attribute(:message) }
7
+ it { should have_attribute(:id) }
8
+ it { should have_attribute(:read) }
9
+
10
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe "setup initializer" do
4
+
5
+ it "sets a default mailer_sender" do
6
+ NotifyUser.mailer_sender.should eq "please-change-me-at-config-initializers-notify-user@example.com"
7
+ end
8
+
9
+ it "sets an authentication method" do
10
+ NotifyUser.authentication_method.should eq :authenticate_user!
11
+ end
12
+
13
+ it "sets a current user method" do
14
+ NotifyUser.current_user_method.should eq :current_user
15
+ end
16
+
17
+ end
@@ -0,0 +1,46 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH << File.expand_path('../support', __FILE__)
3
+
4
+ # Use Rails 4 by default if you just do 'rspec spec'
5
+ ENV['BUNDLE_GEMFILE'] ||= 'gemfiles/rails40.gemfile'
6
+
7
+ ENV['BUNDLE_GEMFILE'] = File.expand_path(ENV['BUNDLE_GEMFILE'])
8
+ require "bundler"
9
+ Bundler.setup
10
+
11
+ ENV['RAILS_ENV'] = 'test'
12
+ ENV['RAILS_ROOT'] = File.expand_path("../dummy/rails-#{ENV['RAILS_VERSION']}", __FILE__)
13
+
14
+ # Create the test app if it doesn't exists
15
+ unless File.exists?(ENV['RAILS_ROOT'])
16
+ system 'rake setup'
17
+ end
18
+
19
+ require 'rails/all'
20
+ require 'sidekiq'
21
+ require File.expand_path("#{ENV['RAILS_ROOT']}/config/environment.rb", __FILE__)
22
+
23
+ puts "Testing with Rails #{Rails::VERSION::STRING} and Ruby #{RUBY_VERSION}"
24
+
25
+ require 'rspec/rails'
26
+ require 'factory_girl_rails'
27
+ require 'sidekiq/testing'
28
+ Sidekiq::Testing.inline!
29
+
30
+ RSpec.configure do |config|
31
+ config.infer_base_class_for_anonymous_controllers = false
32
+ config.use_transactional_fixtures = true
33
+
34
+ def mailer_should_render_template(mailer, template)
35
+ original_method = mailer.method(:_render_template)
36
+ mailer.should_receive(:_render_template) do |arg|
37
+ arg[:template].virtual_path.should eq template
38
+ original_method.call(arg)
39
+ end
40
+ end
41
+
42
+ def json
43
+ JSON.parse(response.body).with_indifferent_access
44
+ end
45
+
46
+ end
@@ -0,0 +1,8 @@
1
+ generate :model, 'user email:string'
2
+
3
+ generate "notify_user:install"
4
+ generate "notify_user:notification NewPostNotification"
5
+
6
+ # Finalise
7
+ rake "db:migrate"
8
+ rake "db:test:prepare"
metadata ADDED
@@ -0,0 +1,289 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: notify_user
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Tom Spacek
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-01-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &70361717136460 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '3.2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70361717136460
25
+ - !ruby/object:Gem::Dependency
26
+ name: state_machine
27
+ requirement: &70361717135940 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70361717135940
36
+ - !ruby/object:Gem::Dependency
37
+ name: sidekiq
38
+ requirement: &70361717135380 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70361717135380
47
+ - !ruby/object:Gem::Dependency
48
+ name: kaminari
49
+ requirement: &70361717134840 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70361717134840
58
+ - !ruby/object:Gem::Dependency
59
+ name: active_model_serializers
60
+ requirement: &70361717134340 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70361717134340
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: &70361717133820 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70361717133820
80
+ - !ruby/object:Gem::Dependency
81
+ name: rspec-rails
82
+ requirement: &70361717133300 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70361717133300
91
+ - !ruby/object:Gem::Dependency
92
+ name: rspec-sidekiq
93
+ requirement: &70361717132760 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70361717132760
102
+ - !ruby/object:Gem::Dependency
103
+ name: factory_girl_rails
104
+ requirement: &70361717132260 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70361717132260
113
+ description: Drop-in solution for user notifications. Handles notifying by email,
114
+ SMS and APNS, plus per-user notification frequency settings and views for checking
115
+ new notifications.
116
+ email:
117
+ - ts@papercloud.com.au
118
+ executables: []
119
+ extensions: []
120
+ extra_rdoc_files: []
121
+ files:
122
+ - app/assets/javascripts/notify_user/application.js
123
+ - app/assets/stylesheets/notify_user/application.css
124
+ - app/controllers/notify_user/notifications_controller.rb
125
+ - app/helpers/notify_user/application_helper.rb
126
+ - app/mailers/notify_user/notification_mailer.rb
127
+ - app/models/notify_user/base_notification.rb
128
+ - app/serializers/notify_user/notification_serializer.rb
129
+ - app/views/layouts/notify_user/application.html.erb
130
+ - app/views/notify_user/action_mailer/aggregate_notification.html.erb
131
+ - app/views/notify_user/action_mailer/notification.html.erb
132
+ - config/routes.rb
133
+ - lib/generators/notify_user/install/install_generator.rb
134
+ - lib/generators/notify_user/install/templates/initializer.rb
135
+ - lib/generators/notify_user/install/templates/migration.rb
136
+ - lib/generators/notify_user/install/USAGE
137
+ - lib/generators/notify_user/notification/notification_generator.rb
138
+ - lib/generators/notify_user/notification/templates/email_layout_template.html.erb.erb
139
+ - lib/generators/notify_user/notification/templates/email_template.html.erb.erb
140
+ - lib/generators/notify_user/notification/templates/mobile_sdk_template.html.erb.erb
141
+ - lib/generators/notify_user/notification/templates/notification.rb.erb
142
+ - lib/generators/notify_user/notification/USAGE
143
+ - lib/notify_user/channels/action_mailer/action_mailer_channel.rb
144
+ - lib/notify_user/engine.rb
145
+ - lib/notify_user/version.rb
146
+ - lib/notify_user.rb
147
+ - MIT-LICENSE
148
+ - Rakefile
149
+ - README.rdoc
150
+ - spec/controllers/notify_user/notifications_controller_spec.rb
151
+ - spec/dummy/rails-4.0.2/app/assets/javascripts/application.js
152
+ - spec/dummy/rails-4.0.2/app/assets/stylesheets/application.css
153
+ - spec/dummy/rails-4.0.2/app/controllers/application_controller.rb
154
+ - spec/dummy/rails-4.0.2/app/helpers/application_helper.rb
155
+ - spec/dummy/rails-4.0.2/app/models/user.rb
156
+ - spec/dummy/rails-4.0.2/app/notifications/new_post_notification.rb
157
+ - spec/dummy/rails-4.0.2/app/views/layouts/application.html.erb
158
+ - spec/dummy/rails-4.0.2/app/views/notify_user/layouts/action_mailer.html.erb
159
+ - spec/dummy/rails-4.0.2/app/views/notify_user/new_post_notification/action_mailer/notification.html.erb
160
+ - spec/dummy/rails-4.0.2/app/views/notify_user/new_post_notification/mobile_sdk/notification.html.erb
161
+ - spec/dummy/rails-4.0.2/bin/bundle
162
+ - spec/dummy/rails-4.0.2/bin/rails
163
+ - spec/dummy/rails-4.0.2/bin/rake
164
+ - spec/dummy/rails-4.0.2/config/application.rb
165
+ - spec/dummy/rails-4.0.2/config/boot.rb
166
+ - spec/dummy/rails-4.0.2/config/database.yml
167
+ - spec/dummy/rails-4.0.2/config/environment.rb
168
+ - spec/dummy/rails-4.0.2/config/environments/development.rb
169
+ - spec/dummy/rails-4.0.2/config/environments/production.rb
170
+ - spec/dummy/rails-4.0.2/config/environments/test.rb
171
+ - spec/dummy/rails-4.0.2/config/initializers/backtrace_silencers.rb
172
+ - spec/dummy/rails-4.0.2/config/initializers/filter_parameter_logging.rb
173
+ - spec/dummy/rails-4.0.2/config/initializers/inflections.rb
174
+ - spec/dummy/rails-4.0.2/config/initializers/mime_types.rb
175
+ - spec/dummy/rails-4.0.2/config/initializers/notify_user.rb
176
+ - spec/dummy/rails-4.0.2/config/initializers/secret_token.rb
177
+ - spec/dummy/rails-4.0.2/config/initializers/session_store.rb
178
+ - spec/dummy/rails-4.0.2/config/initializers/wrap_parameters.rb
179
+ - spec/dummy/rails-4.0.2/config/locales/en.yml
180
+ - spec/dummy/rails-4.0.2/config/routes.rb
181
+ - spec/dummy/rails-4.0.2/config.ru
182
+ - spec/dummy/rails-4.0.2/db/migrate/20140105070446_create_users.rb
183
+ - spec/dummy/rails-4.0.2/db/migrate/20140105070448_create_notify_user_notifications.rb
184
+ - spec/dummy/rails-4.0.2/db/schema.rb
185
+ - spec/dummy/rails-4.0.2/db/seeds.rb
186
+ - spec/dummy/rails-4.0.2/db/test.sqlite3
187
+ - spec/dummy/rails-4.0.2/Gemfile
188
+ - spec/dummy/rails-4.0.2/log/test.log
189
+ - spec/dummy/rails-4.0.2/public/404.html
190
+ - spec/dummy/rails-4.0.2/public/422.html
191
+ - spec/dummy/rails-4.0.2/public/500.html
192
+ - spec/dummy/rails-4.0.2/public/favicon.ico
193
+ - spec/dummy/rails-4.0.2/public/robots.txt
194
+ - spec/dummy/rails-4.0.2/Rakefile
195
+ - spec/dummy/rails-4.0.2/README.rdoc
196
+ - spec/dummy/rails-4.0.2/test/fixtures/users.yml
197
+ - spec/dummy/rails-4.0.2/test/models/user_test.rb
198
+ - spec/dummy/rails-4.0.2/test/test_helper.rb
199
+ - spec/factories/notify_user_notifications.rb
200
+ - spec/fixtures/notify_user/notification_mailer/notification_email
201
+ - spec/mailers/notify_user/notification_mailer_spec.rb
202
+ - spec/models/notify_user/notification_spec.rb
203
+ - spec/serializers/notify_user/notification_serializer_spec.rb
204
+ - spec/setup_spec.rb
205
+ - spec/spec_helper.rb
206
+ - spec/support/rails_template.rb
207
+ homepage: http://www.papercloud.com.au
208
+ licenses: []
209
+ post_install_message:
210
+ rdoc_options: []
211
+ require_paths:
212
+ - lib
213
+ required_ruby_version: !ruby/object:Gem::Requirement
214
+ none: false
215
+ requirements:
216
+ - - ! '>='
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ required_rubygems_version: !ruby/object:Gem::Requirement
220
+ none: false
221
+ requirements:
222
+ - - ! '>='
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ requirements: []
226
+ rubyforge_project:
227
+ rubygems_version: 1.8.15
228
+ signing_key:
229
+ specification_version: 3
230
+ summary: A Rails engine for user notifications.
231
+ test_files:
232
+ - spec/controllers/notify_user/notifications_controller_spec.rb
233
+ - spec/dummy/rails-4.0.2/app/assets/javascripts/application.js
234
+ - spec/dummy/rails-4.0.2/app/assets/stylesheets/application.css
235
+ - spec/dummy/rails-4.0.2/app/controllers/application_controller.rb
236
+ - spec/dummy/rails-4.0.2/app/helpers/application_helper.rb
237
+ - spec/dummy/rails-4.0.2/app/models/user.rb
238
+ - spec/dummy/rails-4.0.2/app/notifications/new_post_notification.rb
239
+ - spec/dummy/rails-4.0.2/app/views/layouts/application.html.erb
240
+ - spec/dummy/rails-4.0.2/app/views/notify_user/layouts/action_mailer.html.erb
241
+ - spec/dummy/rails-4.0.2/app/views/notify_user/new_post_notification/action_mailer/notification.html.erb
242
+ - spec/dummy/rails-4.0.2/app/views/notify_user/new_post_notification/mobile_sdk/notification.html.erb
243
+ - spec/dummy/rails-4.0.2/bin/bundle
244
+ - spec/dummy/rails-4.0.2/bin/rails
245
+ - spec/dummy/rails-4.0.2/bin/rake
246
+ - spec/dummy/rails-4.0.2/config/application.rb
247
+ - spec/dummy/rails-4.0.2/config/boot.rb
248
+ - spec/dummy/rails-4.0.2/config/database.yml
249
+ - spec/dummy/rails-4.0.2/config/environment.rb
250
+ - spec/dummy/rails-4.0.2/config/environments/development.rb
251
+ - spec/dummy/rails-4.0.2/config/environments/production.rb
252
+ - spec/dummy/rails-4.0.2/config/environments/test.rb
253
+ - spec/dummy/rails-4.0.2/config/initializers/backtrace_silencers.rb
254
+ - spec/dummy/rails-4.0.2/config/initializers/filter_parameter_logging.rb
255
+ - spec/dummy/rails-4.0.2/config/initializers/inflections.rb
256
+ - spec/dummy/rails-4.0.2/config/initializers/mime_types.rb
257
+ - spec/dummy/rails-4.0.2/config/initializers/notify_user.rb
258
+ - spec/dummy/rails-4.0.2/config/initializers/secret_token.rb
259
+ - spec/dummy/rails-4.0.2/config/initializers/session_store.rb
260
+ - spec/dummy/rails-4.0.2/config/initializers/wrap_parameters.rb
261
+ - spec/dummy/rails-4.0.2/config/locales/en.yml
262
+ - spec/dummy/rails-4.0.2/config/routes.rb
263
+ - spec/dummy/rails-4.0.2/config.ru
264
+ - spec/dummy/rails-4.0.2/db/migrate/20140105070446_create_users.rb
265
+ - spec/dummy/rails-4.0.2/db/migrate/20140105070448_create_notify_user_notifications.rb
266
+ - spec/dummy/rails-4.0.2/db/schema.rb
267
+ - spec/dummy/rails-4.0.2/db/seeds.rb
268
+ - spec/dummy/rails-4.0.2/db/test.sqlite3
269
+ - spec/dummy/rails-4.0.2/Gemfile
270
+ - spec/dummy/rails-4.0.2/log/test.log
271
+ - spec/dummy/rails-4.0.2/public/404.html
272
+ - spec/dummy/rails-4.0.2/public/422.html
273
+ - spec/dummy/rails-4.0.2/public/500.html
274
+ - spec/dummy/rails-4.0.2/public/favicon.ico
275
+ - spec/dummy/rails-4.0.2/public/robots.txt
276
+ - spec/dummy/rails-4.0.2/Rakefile
277
+ - spec/dummy/rails-4.0.2/README.rdoc
278
+ - spec/dummy/rails-4.0.2/test/fixtures/users.yml
279
+ - spec/dummy/rails-4.0.2/test/models/user_test.rb
280
+ - spec/dummy/rails-4.0.2/test/test_helper.rb
281
+ - spec/factories/notify_user_notifications.rb
282
+ - spec/fixtures/notify_user/notification_mailer/notification_email
283
+ - spec/mailers/notify_user/notification_mailer_spec.rb
284
+ - spec/models/notify_user/notification_spec.rb
285
+ - spec/serializers/notify_user/notification_serializer_spec.rb
286
+ - spec/setup_spec.rb
287
+ - spec/spec_helper.rb
288
+ - spec/support/rails_template.rb
289
+ has_rdoc: