johnhenry 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/mailers/user_mailer.rb +14 -0
- data/app/models/user.rb +7 -0
- data/app/views/user_mailer/signup.html.haml +44 -0
- data/lib/Gemfile +1 -0
- data/lib/johnhenry/version.rb +1 -1
- data/lib/tasks/johnhenry_tasks.rake +76 -44
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92f77c92449e3fde78b20a4fd4f76ceef79120fc
|
4
|
+
data.tar.gz: 789c9bdb98150f1762652efec16f1ec1b2254c86
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44bd98b2a747e5ba526f8a54f5d232a7d428aad40f3fa6b864a36ceaabe12a20e070c08ab882ed9e39865b190d52c107eee0402146b215daa4d70e659a3c4506
|
7
|
+
data.tar.gz: 0359057958f604bab7dc8151b63755430ac1d61417b63c2ab3cf840564ba61cdda6442b1955f1ba5c6799b826013fb3227c2e614cd898600595b0a2ee8b8aaac
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class UserMailer < ActionMailer::Base
|
2
|
+
default from: 'No Reply <no-reply@example.com>'
|
3
|
+
default bcc: ENV['BCC_EMAILS'] if ENV['BCC_EMAILS'].present?
|
4
|
+
|
5
|
+
def signup(user)
|
6
|
+
@user = user
|
7
|
+
@name = @user.email.split('@').first.try(:titleize)
|
8
|
+
subject = "Thanks for trying the JohnHenry Rails toolkit"
|
9
|
+
subject += ", #{ @name }" unless @name.blank?
|
10
|
+
Rails.logger.info "Sending signup notification to #{ user.email }"
|
11
|
+
mail to: user.email,
|
12
|
+
subject: subject
|
13
|
+
end
|
14
|
+
end
|
data/app/models/user.rb
CHANGED
@@ -3,4 +3,11 @@ class User < ActiveRecord::Base
|
|
3
3
|
# :confirmable, :lockable, :timeoutable and :omniauthable
|
4
4
|
devise :database_authenticatable, :registerable,
|
5
5
|
:recoverable, :rememberable, :trackable, :validatable
|
6
|
+
after_save :send_signup_email
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def send_signup_email
|
11
|
+
UserMailer.signup(self).deliver
|
12
|
+
end
|
6
13
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
- unless @name.blank?
|
2
|
+
Hi #{ @name },
|
3
|
+
|
4
|
+
%p
|
5
|
+
Thanks for trying the
|
6
|
+
%a{ href: 'http://www.johnhenryrails.com' } JohnHenry Rails
|
7
|
+
toolkit!
|
8
|
+
|
9
|
+
%p
|
10
|
+
This is the default user signup email that users will receive after
|
11
|
+
registering for an account. It's a great place for an onboarding email where
|
12
|
+
you introduce the new user to:
|
13
|
+
|
14
|
+
%ul
|
15
|
+
%li how they can access their profile
|
16
|
+
%li= link_to 'A password reset link', new_password_path(@user)
|
17
|
+
%li other helpful information.
|
18
|
+
|
19
|
+
%p
|
20
|
+
We've got a few reminders for you too, site admin:
|
21
|
+
|
22
|
+
%ul
|
23
|
+
%li
|
24
|
+
provision the SendGrid starter package to Heroku with:
|
25
|
+
%br
|
26
|
+
%code `heroku addons:add sendgrid:starter`
|
27
|
+
%br
|
28
|
+
%br
|
29
|
+
%li
|
30
|
+
set an environment variable of one or more recipients to be BCC'ed on every
|
31
|
+
email:
|
32
|
+
%br
|
33
|
+
%code `heroku config:set BCC_EMAILS='user@example.com[,user2@examples.com]'`
|
34
|
+
%br
|
35
|
+
%br
|
36
|
+
%li
|
37
|
+
on your development server, you can access the
|
38
|
+
%a{ href: 'http://localhost:3000/email_preview' } Email Preview
|
39
|
+
gem, which helps you build your emails quickly before you even send a test
|
40
|
+
message.
|
41
|
+
|
42
|
+
%p Finally, end with a thank you for trying your product.
|
43
|
+
|
44
|
+
%p <3
|
data/lib/Gemfile
CHANGED
data/lib/johnhenry/version.rb
CHANGED
@@ -11,6 +11,8 @@ namespace :johnhenry do
|
|
11
11
|
install_javascript
|
12
12
|
install_stylesheets
|
13
13
|
install_stripe
|
14
|
+
install_sendgrid
|
15
|
+
install_email_preview
|
14
16
|
|
15
17
|
success_message
|
16
18
|
end
|
@@ -44,69 +46,99 @@ namespace :johnhenry do
|
|
44
46
|
end
|
45
47
|
end
|
46
48
|
|
49
|
+
def create_file(blob_array, contents)
|
50
|
+
target = File.join(Rails.root, *blob_array)
|
51
|
+
Rails.logger.info "Creating #{ target }..."
|
52
|
+
File.open(target, 'w') { |f| f.write(contents) }
|
53
|
+
end
|
54
|
+
|
55
|
+
def insert_into_file_after(blob_array, line_no, lines)
|
56
|
+
target = File.join(Rails.root, *blob_array)
|
57
|
+
file_contents = File.readlines(target)
|
58
|
+
prepend = file_contents[0..(line_no-1)]
|
59
|
+
append = file_contents[line_no..-1]
|
60
|
+
contents = (prepend + lines + append)
|
61
|
+
Rails.logger.info "Inserting into #{ target } at line #{ line_no }..."
|
62
|
+
File.open(target, 'w') { |f| f.write contents.join }
|
63
|
+
end
|
64
|
+
|
47
65
|
def update_gemfile
|
48
66
|
source = File.join(johnhenry_root, *%w(lib Gemfile))
|
49
67
|
target = File.join(Rails.root, *%w(Gemfile))
|
50
68
|
|
51
|
-
|
69
|
+
Rails.logger.info "Removing sqlite3 and turbolinks from Gemfile..."
|
52
70
|
gemfile_lines = File.readlines(target).reject do |line|
|
53
71
|
line =~ /(sqlite3|turbolinks)/
|
54
72
|
end
|
55
|
-
|
56
|
-
|
57
|
-
|
73
|
+
File.open(target, 'w') { |f| f.write(gemfile_lines.join) }
|
74
|
+
|
75
|
+
insert_into_file_after(%w(Gemfile), 5, File.readlines(source))
|
58
76
|
end
|
59
77
|
|
60
78
|
def install_javascript
|
61
|
-
|
62
|
-
|
63
|
-
File.open(source, 'w') do |f|
|
64
|
-
# replace turbolinks with johnhenry/application
|
65
|
-
app = application_js[0..13] +
|
66
|
-
["//= require johnhenry/application\n"] +
|
67
|
-
application_js[15..-1]
|
68
|
-
Rails.logger.info "Adding dependencies to application.js..."
|
69
|
-
f.write(app.join(""))
|
70
|
-
end
|
79
|
+
code = ["//= require johnhenry/application\n"]
|
80
|
+
insert_into_file_after(%w(app assets javascripts application.js), 12, code)
|
71
81
|
end
|
72
82
|
|
73
83
|
def install_stylesheets
|
74
|
-
|
75
|
-
|
76
|
-
File.open(source, 'w') do |f|
|
77
|
-
app = application_css[0..11] +
|
78
|
-
[" *= require johnhenry/application\n"] +
|
79
|
-
application_css[12..-1]
|
80
|
-
Rails.logger.info "Adding dependencies to application.css..."
|
81
|
-
f.write(app.join(""))
|
82
|
-
end
|
84
|
+
code = [" *= require johnhenry/application\n"]
|
85
|
+
insert_into_file_after(%w(app assets stylesheets application.css), 10, code)
|
83
86
|
end
|
84
87
|
|
85
88
|
def install_stripe
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
end
|
89
|
+
code = <<-EOS
|
90
|
+
Stripe.api_key = ENV['STRIPE_SECRET_KEY']
|
91
|
+
STRIPE_PUBLISHABLE_KEY = ENV['STRIPE_PUBLISHABLE_KEY']
|
92
|
+
EOS
|
93
|
+
create_file(%w(config initializers stripe.rb), code)
|
92
94
|
end
|
93
95
|
|
94
|
-
def
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
96
|
+
def install_sendgrid
|
97
|
+
code = <<-EOS
|
98
|
+
ActionMailer::Base.smtp_settings = {
|
99
|
+
:address => 'smtp.sendgrid.net',
|
100
|
+
:port => '587',
|
101
|
+
:authentication => :plain,
|
102
|
+
:user_name => ENV['SENDGRID_USERNAME'],
|
103
|
+
:password => ENV['SENDGRID_PASSWORD'],
|
104
|
+
:domain => 'heroku.com',
|
105
|
+
:enable_starttls_auto => true
|
104
106
|
}
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
107
|
+
EOS
|
108
|
+
target = File.join(Rails.root, *%w(config environment.rb))
|
109
|
+
Rails.logger.info "Creating config/environment.rb..."
|
110
|
+
File.open(target, 'a+') { |f| f.write(code) }
|
111
|
+
|
112
|
+
code = [" config.action_mailer.default_url_options = { host: 'localhost:3000' }"]
|
113
|
+
insert_into_file_after(%w(config environments development.rb), 26, code)
|
114
|
+
|
115
|
+
code = [" config.action_mailer.default_url_options = { host: 'www.johnhenryrails.com' }"]
|
116
|
+
insert_into_file_after(%w(config environments production.rb), 39, code)
|
117
|
+
end
|
118
|
+
|
119
|
+
def install_email_preview
|
120
|
+
code = <<-EOS
|
121
|
+
if Rails.env.development?
|
122
|
+
EmailPreview.register 'Signup' do
|
123
|
+
user = User.new email: 'johnny.cage@gmail.com'
|
124
|
+
UserMailer.signup(user)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
EOS
|
128
|
+
create_file(%w(config initializers email_preview.rb), code)
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
def update_routes
|
133
|
+
code = <<-EOS
|
134
|
+
root 'johnhenry/home#welcome'
|
135
|
+
devise_for :users, controllers: {
|
136
|
+
registrations: 'johnhenry/registrations',
|
137
|
+
sessions: 'johnhenry/sessions'
|
138
|
+
}
|
139
|
+
resources :payments, controller: 'johnhenry/payments'
|
140
|
+
EOS
|
141
|
+
insert_into_file_after(%w(config routes.rb), 1, [code])
|
110
142
|
end
|
111
143
|
|
112
144
|
def success_message
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: johnhenry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Derewecki
|
@@ -184,6 +184,7 @@ files:
|
|
184
184
|
- app/controllers/johnhenry/registrations_controller.rb
|
185
185
|
- app/controllers/johnhenry/sessions_controller.rb
|
186
186
|
- app/helpers/johnhenry/application_helper.rb
|
187
|
+
- app/mailers/user_mailer.rb
|
187
188
|
- app/models/payment.rb
|
188
189
|
- app/models/user.rb
|
189
190
|
- app/views/johnhenry/devise/confirmations/new.html.haml
|
@@ -211,6 +212,7 @@ files:
|
|
211
212
|
- app/views/johnhenry/shared/_signin_form.html.haml
|
212
213
|
- app/views/johnhenry/shared/_signup_form.html.haml
|
213
214
|
- app/views/layouts/johnhenry/application.html.haml
|
215
|
+
- app/views/user_mailer/signup.html.haml
|
214
216
|
- config/initializers/devise.rb
|
215
217
|
- config/routes.rb
|
216
218
|
- db/development.sqlite3
|