beta_invite 0.1.2 → 1.0.0

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: 2cbbd6e8201b97124364c75da584ae86e53ae17d
4
- data.tar.gz: 39d22b03419a455938fd7d90c0a8ba6b7c1d9070
3
+ metadata.gz: 38c94035d41e4bc8e96514edf8a0f3b336647cde
4
+ data.tar.gz: 495a73b6976bd45153f3efd2c105cd6185d089a2
5
5
  SHA512:
6
- metadata.gz: 6278215e4a20fb331619c0db2fd7965176711062bcc6adcfb958a009e615b394af4d93953945be37a2b78ffb55afadeff2cbb507b39513ada3ca972ae54d8ffe
7
- data.tar.gz: eef72e83afb9b97f1e4de7b26f97d2c38b0dcc04368450e423cea1ed345b616bfd620216ae324eff8d631f719b0a45fe5a30b78f8090f5e40e97f826770ab813
6
+ metadata.gz: deca01f33c4a4840c801206d1ec6007a9c8de4325b5b570bb08098aa1b57e18db79fc95f36ecbc85f1211efed44e004cdf6f665cf88a562c6b73597d6c390cd3
7
+ data.tar.gz: b1392ebe030a4e4726c3b04dc12411a1898cfbdde6705567f18a24385e0211ec4e509f54ca148bdaf0bd1768a61a74ed2931c7320ab9c61d97be19d4b87e7db0
@@ -1,4 +1,4 @@
1
- Copyright 2013 YOURNAME
1
+ Copyright 2013 Kaushik Thirthappa
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -2,9 +2,27 @@
2
2
 
3
3
  A simple gem to help you build your __beta_invite__ page up and running in no time
4
4
 
5
- ##Instructions
5
+ * [Features](#features)
6
+ * [Installation](#installation)
7
+ * [Setup](#setup)
8
+ - [Initializer](#initializer)
9
+ - [Migrations](#migrations)
10
+ - [Mount](#mount)
11
+ * [API](#where-are-the-invites-)
12
+ * [Views](#views)
6
13
 
7
- ###Installation
14
+ ## For version >= 1.0.0
15
+
16
+ ##Features
17
+
18
+ * Quick and easy setup of __Beta Invite__ engine and its functionality
19
+ * Random Token stored and generated with each invite
20
+ * Customize and modify all the views and email templates
21
+ * Send emails as notification when someone requests for an invite to the admins
22
+ * Send __Thank you__ emails which can easily be customized by the developer in future.
23
+
24
+
25
+ ##Installation
8
26
 
9
27
  ```ruby
10
28
  gem install beta_invite
@@ -12,9 +30,27 @@ gem install beta_invite
12
30
 
13
31
  or with the use of __Bundler__, you can just write `beta_invite` in your `Gemfile` and run `bundle` command in your CLI.
14
32
 
15
- ###Setup
33
+ Installing from the source:
34
+
35
+ ```
36
+ gem 'beta_invite', :github => 'git://github.com/ktkaushik/beta_invite.git'
37
+ ```
16
38
 
17
- ####Migrations
39
+ If you are living on the edge with `beta_invite` gem, then you should refer [this](https://github.com/ktkaushik/beta_invite/blob/master/living_on_the_edge.md)
40
+
41
+ ##Setup
42
+
43
+ ###Initializer
44
+
45
+ The `beta_invite` gem has a beta_invite installer. First step to setup is to run the __install generator__
46
+
47
+ ```ruby
48
+ rails g beta_invite:install
49
+ ```
50
+
51
+ This would create an __initializer__ named `beta_invite.rb`
52
+
53
+ ###Migrations
18
54
  The setup is very primary as of now. Once installed, you will need to copy the migrations by running this command
19
55
 
20
56
  ```ruby
@@ -29,14 +65,25 @@ rake db:migrate
29
65
 
30
66
  The above migrations would create a `beta_invites` table in your app
31
67
 
32
- ####Mount
68
+
69
+ ###Mount
33
70
  Now mount the `BetaInvite` engine by going into your `routes.rb` file and adding the below line
34
71
 
35
72
  ```ruby
36
73
  mount BetaInvite::Engine, at: '/'
37
74
  ```
38
75
 
39
- ####Views
76
+ ##Where are the invites ?
77
+
78
+ Well, you can fire up your rails console and you will see that all the tables are under `BetaInvite::BetaInvite`
79
+
80
+ This should fetch you all the records
81
+
82
+ ```ruby
83
+ BetaInvite::BetaInvite.all
84
+ ```
85
+
86
+ ##Views
40
87
 
41
88
  ___for version >= 0.1.1___
42
89
 
@@ -56,6 +103,7 @@ Obviously, you can mount it to any route.
56
103
 
57
104
  __You may wanna restart your server__
58
105
 
106
+ ###[Roadmap](https://github.com/ktkaushik/beta_invite/wiki/Roadmap)
59
107
  ###[Changelogs](https://github.com/ktkaushik/beta_invite/wiki/Changelog)
60
108
 
61
109
  ##Contributing
@@ -68,3 +116,7 @@ __You may wanna restart your server__
68
116
  ```
69
117
 
70
118
  Thank you !
119
+
120
+
121
+ [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/ktkaushik/beta_invite/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
122
+
@@ -7,18 +7,28 @@ module BetaInvite
7
7
  @beta_invite = BetaInvite.new
8
8
  end
9
9
 
10
+ # Save the email and a randomly generated token
10
11
  def create
11
12
  email = params[:beta_invite][:email]
12
- beta_invite = BetaInvite.new
13
- beta_invite.email = email
14
- beta_invite.token = SecureRandom.hex(10) #generate a random hex token for all the users
13
+ beta_invite = BetaInvite.new( email: email, token: SecureRandom.hex(10) )
14
+
15
15
  if beta_invite.save
16
16
  flash[:success] = "#{email} has been registered for beta invite"
17
+
18
+ # send an email if configured
19
+ if BetaInviteSetup.send_email_to_admins
20
+ BetaInvite::BetaInviteNotificationMailer.notify_admins( BetaInviteSetup.from_email, BetaInviteSetup.admin_emails, email, BetaInvite.count ).deliver
21
+ end
22
+
23
+ if BetaInviteSetup.send_thank_you_email
24
+ BetaInvite::BetaInviteNotificationMailer.thank_user( BetaInviteSetup.from_email, email ).deliver
25
+ end
17
26
  redirect_to beta_invites_path
18
27
  else
19
28
  flash[:alert] = beta_invite.errors.full_messages
20
29
  redirect_to new_beta_invite_path
21
30
  end
31
+
22
32
  end
23
33
  end
24
34
  end
@@ -0,0 +1,35 @@
1
+ module BetaInvite
2
+
3
+ # The BetaInviteNotificationMailer sends notification emails to users and admins
4
+ # The `from` and `to` emails has to be configured in the initializer.
5
+ #
6
+ # Do not forget to enter the mail configurations in your environments file.
7
+ #
8
+ class BetaInviteNotificationMailer < ActionMailer::Base
9
+
10
+ # send the email with adequate info
11
+ # TODO: Subject in locales
12
+ def notify_admins( from_email, to_email, beta_invite_email, count )
13
+
14
+ @email = beta_invite_email
15
+ @count = count
16
+ subject = "#{@email} has registered for your app"
17
+ mail(
18
+ to: to_email,
19
+ from: from_email,
20
+ subject: subject
21
+ )
22
+ end
23
+
24
+ # Send an email to the user as a thank you
25
+ # TODO: Subject in locales
26
+ def thank_user( from_email, to_email )
27
+ subject = "Thank you for requesting an invite"
28
+ mail(
29
+ to: to_email,
30
+ from: from_email,
31
+ subject: subject
32
+ )
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,9 @@
1
+ Hi,
2
+ <br/>
3
+ <%= @email %> has registered for BetaInvite
4
+ <br/>
5
+
6
+ Total no of BetaInvites <%= @count %>
7
+ <br/>
8
+
9
+ Thanks.
@@ -0,0 +1,6 @@
1
+ Hi,
2
+ <br/>
3
+ Thank you registering an invite, we will get back soon.
4
+ <br/>
5
+
6
+ Thanks.
@@ -1,4 +1,11 @@
1
- <h1>You are in new of beta_invites</h1>
1
+ <% flash.each do |key, msg| %>
2
+ <div class="alert alert-#{name == :notice ? 'success' : 'error' }">
3
+ <% Array(msg).each_with_index do |message, index| %>
4
+ <%= content_tag :div, message %>
5
+ <% end %>
6
+ </div>
7
+ <% end %>
8
+ <h1>Request for a beta invite</h1>
2
9
  <%= form_for @beta_invite do |f| %>
3
10
  <%= f.label :email, 'Email'%>
4
11
  <%= f.text_field :email, placeholder: "Enter your email" %>
@@ -1,4 +1,5 @@
1
1
  require "beta_invite/engine"
2
+ require "beta_invite_setup"
2
3
 
3
4
  module BetaInvite
4
5
  end
@@ -1,3 +1,3 @@
1
1
  module BetaInvite
2
- VERSION = "0.1.2"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -0,0 +1,14 @@
1
+ # Beta Invite setup module
2
+
3
+ module BetaInviteSetup
4
+
5
+ mattr_accessor :from_email
6
+ mattr_accessor :admin_emails
7
+ mattr_accessor :send_email_to_admins
8
+ mattr_accessor :send_thank_you_email
9
+
10
+ def self.setup
11
+ yield self
12
+ end
13
+
14
+ end
@@ -0,0 +1,21 @@
1
+ #
2
+ # TODO: add copy migration file as well. No need for developer to run another command
3
+ #
4
+ module BetaInvite
5
+ module Generators
6
+ class InstallGenerator < Rails::Generators::Base
7
+ source_root File.expand_path("../templates", __FILE__)
8
+
9
+ desc "Creates a BetaInvite initializer"
10
+
11
+ def copy_initializer
12
+ template "beta_invite.rb", "config/initializers/beta_invite.rb"
13
+ end
14
+
15
+ # Display readme when the user installs the gem. inspired from Devise gem :)
16
+ def show_readme
17
+ readme "README" if behavior == :invoke
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ =================================================================================
2
+ Instructions for beta_invite gem
3
+
4
+ An initializer by the name beta_invite.rb has been created in your initializer,
5
+ wherein you will find a few options there with instructions for you to configure
6
+
7
+ You can also generate views by running this comamnd:
8
+
9
+ rails g beta_invite:views
10
+
11
+ Please checkout the README on the below URL for full information:
12
+
13
+ https://github.com/ktkaushik/beta_invite#betainvite
14
+
15
+ Thanks !
16
+ Roadmap: https://github.com/ktkaushik/beta_invite/wiki/Roadmap
17
+
18
+ =================================================================================
@@ -0,0 +1,22 @@
1
+ #
2
+ # Setup your BetaInvite engine in easy steps using this config initializer
3
+ #
4
+
5
+ BetaInviteSetup.setup do |config|
6
+ # Setting this to true would send an email to the admins saying that a
7
+ # particular user with a particular email address has requested for an invite
8
+ config.send_email_to_admins = false
9
+
10
+ # If you have set the above option as true then you should add the email addresses
11
+ # of the admins who should receive a notification about the user having requested
12
+ # for an invite in a comma separated value.
13
+ config.admin_emails = 'email_1@example.org, email_2@example.org'
14
+
15
+ # Configure your mail configuration in the environments file and enter the from email
16
+ # to send emails
17
+ config.from_email = 'from@email.com'
18
+
19
+ # Send thank you emails to the user who has requested for an invite
20
+ # False by default
21
+ config.send_thank_you_email = false
22
+ end
@@ -1,5 +1,6 @@
1
1
  require "rails/generators"
2
2
 
3
+ # Generate View Generator
3
4
  module BetaInvite
4
5
  module Generators
5
6
  class ViewsGenerator < Rails::Generators::Base
@@ -7,6 +8,7 @@ module BetaInvite
7
8
 
8
9
  desc "this generator would copy all the view files for beta_invite engine into your rails app"
9
10
 
11
+ # Generate views from the beta_invite gem
10
12
  def create_views
11
13
  copy_file 'new.html.erb', Rails.root.join('app','views','beta_invite','beta_invites','new.html.erb')
12
14
  copy_file 'index.html.erb', Rails.root.join('app','views','beta_invite','beta_invites','index.html.erb')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beta_invite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kaushik Thirthappa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-27 00:00:00.000000000 Z
11
+ date: 2013-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -39,7 +39,10 @@ files:
39
39
  - app/controllers/beta_invite/beta_invites_controller.rb
40
40
  - app/helpers/beta_invite/application_helper.rb
41
41
  - app/helpers/beta_invite/beta_invites_helper.rb
42
+ - app/mailers/beta_invite/beta_invite_notification_mailer.rb
42
43
  - app/models/beta_invite/beta_invite.rb
44
+ - app/views/beta_invite/beta_invite_notification_mailer/notify_admins.html.erb
45
+ - app/views/beta_invite/beta_invite_notification_mailer/thank_user.html.erb
43
46
  - app/views/beta_invite/beta_invites/index.html.erb
44
47
  - app/views/beta_invite/beta_invites/new.html.erb
45
48
  - app/views/layouts/beta_invite/application.html.erb
@@ -48,6 +51,10 @@ files:
48
51
  - lib/beta_invite/engine.rb
49
52
  - lib/beta_invite/version.rb
50
53
  - lib/beta_invite.rb
54
+ - lib/beta_invite_setup.rb
55
+ - lib/generators/beta_invite/install_generator.rb
56
+ - lib/generators/beta_invite/templates/beta_invite.rb
57
+ - lib/generators/beta_invite/templates/README
51
58
  - lib/generators/beta_invite/views_generator.rb
52
59
  - lib/tasks/beta_invite_tasks.rake
53
60
  - MIT-LICENSE
@@ -80,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
87
  version: '0'
81
88
  requirements: []
82
89
  rubyforge_project:
83
- rubygems_version: 2.1.4
90
+ rubygems_version: 2.1.6
84
91
  signing_key:
85
92
  specification_version: 4
86
93
  summary: Setup beta invite system with ease