raygun 0.0.13 → 0.0.14

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 (56) hide show
  1. data/CHANGES.md +11 -0
  2. data/README.md +14 -9
  3. data/app_prototype/.rbenv-version +1 -0
  4. data/app_prototype/Gemfile +6 -0
  5. data/app_prototype/Guardfile +10 -2
  6. data/app_prototype/README.md +1 -1
  7. data/app_prototype/app/controllers/password_resets_controller.rb +6 -8
  8. data/app_prototype/app/controllers/registrations_controller.rb +1 -1
  9. data/app_prototype/app/mailers/user_mailer.rb +0 -3
  10. data/app_prototype/app/models/user.rb +5 -2
  11. data/app_prototype/app/views/layouts/application.html.slim +1 -1
  12. data/app_prototype/app/views/password_resets/edit.html.slim +2 -3
  13. data/app_prototype/app/views/password_resets/new.html.slim +2 -2
  14. data/app_prototype/app/views/registrations/new.html.slim +1 -2
  15. data/app_prototype/app/views/user_mailer/activation_needed_email.html.erb +2 -2
  16. data/app_prototype/app/views/user_mailer/activation_needed_email.text.erb +2 -2
  17. data/app_prototype/app/views/user_mailer/activation_success_email.html.erb +2 -2
  18. data/app_prototype/app/views/user_mailer/activation_success_email.text.erb +2 -2
  19. data/app_prototype/app/views/user_mailer/reset_password_email.html.erb +2 -2
  20. data/app_prototype/app/views/user_mailer/reset_password_email.text.erb +2 -2
  21. data/app_prototype/app/views/user_sessions/new.html.slim +2 -2
  22. data/app_prototype/app/views/users/show.html.slim +1 -1
  23. data/app_prototype/config/application.rb +2 -2
  24. data/app_prototype/config/environments/acceptance.rb +1 -1
  25. data/app_prototype/config/environments/development.rb +1 -1
  26. data/app_prototype/config/environments/production.rb +1 -1
  27. data/app_prototype/config/environments/test.rb +2 -0
  28. data/app_prototype/config/initializers/email.rb +11 -0
  29. data/app_prototype/config/initializers/secret_token.rb +1 -1
  30. data/app_prototype/config/routes.rb +10 -10
  31. data/app_prototype/config.ru +12 -2
  32. data/app_prototype/db/sample_data.rb +4 -4
  33. data/app_prototype/lib/templates/rspec/scaffold/controller_spec.rb +21 -21
  34. data/app_prototype/public/index.html +3 -3
  35. data/app_prototype/spec/controllers/user_sessions_controller_spec.rb +7 -7
  36. data/app_prototype/spec/controllers/users_controller_spec.rb +22 -22
  37. data/app_prototype/spec/factories/users.rb +2 -0
  38. data/app_prototype/spec/features/activation_spec.rb +18 -0
  39. data/app_prototype/spec/features/password_reset_spec.rb +41 -0
  40. data/app_prototype/spec/features/registration_spec.rb +39 -0
  41. data/app_prototype/spec/features/sign_in_spec.rb +30 -0
  42. data/app_prototype/spec/mailers/user_mailer_spec.rb +16 -16
  43. data/app_prototype/spec/models/user_spec.rb +13 -6
  44. data/app_prototype/spec/spec_helper.rb +8 -12
  45. data/app_prototype/spec/support/user_sessions_feature_helper.rb +2 -2
  46. data/app_prototype/spec/views/users/edit.html.slim_spec.rb +0 -1
  47. data/app_prototype/spec/views/users/index.html.slim_spec.rb +0 -1
  48. data/app_prototype/spec/views/users/new.html.slim_spec.rb +0 -1
  49. data/app_prototype/spec/views/users/show.html.slim_spec.rb +2 -3
  50. data/bin/raygun +8 -1
  51. data/cleanup.sh +8 -0
  52. data/lib/raygun/version.rb +1 -1
  53. data/raygun.gemspec +1 -3
  54. metadata +13 -21
  55. data/app_prototype/spec/features/user_sessions_spec.rb +0 -32
  56. data/app_prototype/spec/helpers/users_helper_spec.rb +0 -15
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>Project_prototype</title>
4
+ <title>App Prototype</title>
5
5
  <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css"/>
6
6
  <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
7
7
  <script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
@@ -15,7 +15,7 @@
15
15
  <div class="container">
16
16
  <div class="brand">Project_prototype</div>
17
17
  <ul class="nav pull-right">
18
- <li><a href="/sign_in">Sign in</a></li>
18
+ <li><a href="/sign_in">Sign In</a></li>
19
19
  </ul>
20
20
  </div>
21
21
  </nav>
@@ -29,7 +29,7 @@
29
29
  <p>Custom generator templates create views that are bootstrap compatible and specs that are factory-aware and follow best practices.</p>
30
30
  <p>This application also includes authentication and an example of authorization (sign in as user@example.com / password).</p>
31
31
 
32
- <p><a class="btn btn-primary btn-large" href="sign_in">Sign in</a></p>
32
+ <p><a class="btn btn-primary btn-large" href="sign_in">Sign In</a></p>
33
33
  </div>
34
34
  </div>
35
35
  <div class="push"></div>
@@ -2,19 +2,19 @@ require 'spec_helper'
2
2
 
3
3
  describe UserSessionsController do
4
4
 
5
- describe "GET new" do
5
+ describe "#new" do
6
6
  it "assigns a new user as @user" do
7
7
  get :new
8
- assigns(:user_session).should_not be_nil
8
+ expect(assigns(:user_session)).to_not be_nil
9
9
  end
10
10
  end
11
11
 
12
- describe "POST create" do
12
+ describe "#create" do
13
13
  describe "with valid params" do
14
14
  it "redirect to the target page" do
15
15
  subject.stub(:login) { build_stubbed :user }
16
16
  post :create, { user_session: { email: 'valid', password: 'valid' } }, { return_to_url: 'url' }
17
- response.should redirect_to('url')
17
+ expect(response).to redirect_to('url')
18
18
  end
19
19
  end
20
20
 
@@ -22,12 +22,12 @@ describe UserSessionsController do
22
22
  it "re-renders the 'new' template" do
23
23
  subject.stub(:login) { nil }
24
24
  post :create, { user_session: { email: 'invalid', password: 'invalid' } }
25
- response.should render_template('new')
25
+ expect(response).to render_template('new')
26
26
  end
27
27
  end
28
28
  end
29
29
 
30
- describe "DELETE destroy" do
30
+ describe "#destroy" do
31
31
  it "destroys the requested user session" do
32
32
  subject.should_receive(:logout)
33
33
  delete :destroy
@@ -35,7 +35,7 @@ describe UserSessionsController do
35
35
 
36
36
  it "redirects to the sign in page" do
37
37
  delete :destroy
38
- response.should redirect_to(sign_in_url)
38
+ expect(response).to redirect_to(sign_in_url)
39
39
  end
40
40
  end
41
41
 
@@ -9,7 +9,7 @@ describe UsersController do
9
9
  attributes_for :user
10
10
  end
11
11
 
12
- # This should return the minimal set of values that should be in the session
12
+ # This returns the minimal set of values that should be in the session
13
13
  # in order to pass any filters (e.g. authentication) defined in
14
14
  # UsersController. Be sure to keep this updated too.
15
15
  def valid_session
@@ -20,38 +20,38 @@ describe UsersController do
20
20
  login_user build :admin
21
21
  end
22
22
 
23
- describe "GET index" do
23
+ describe "#index" do
24
24
  it "assigns all users as @users" do
25
25
  user = User.create! valid_attributes
26
26
  get :index, {}, valid_session
27
- assigns(:users).should eq([user])
27
+ expect(assigns(:users)).to eq([user])
28
28
  end
29
29
  end
30
30
 
31
- describe "GET show" do
31
+ describe "#show" do
32
32
  it "assigns the requested user as @user" do
33
33
  user = User.create! valid_attributes
34
34
  get :show, { id: user.to_param }, valid_session
35
- assigns(:user).should eq(user)
35
+ expect(assigns(:user)).to eq(user)
36
36
  end
37
37
  end
38
38
 
39
- describe "GET new" do
39
+ describe "#new" do
40
40
  it "assigns a new user as @user" do
41
41
  get :new, {}, valid_session
42
- assigns(:user).should be_a_new(User)
42
+ expect(assigns(:user)).to be_a_new(User)
43
43
  end
44
44
  end
45
45
 
46
- describe "GET edit" do
46
+ describe "#edit" do
47
47
  it "assigns the requested user as @user" do
48
48
  user = User.create! valid_attributes
49
49
  get :edit, { id: user.to_param }, valid_session
50
- assigns(:user).should eq(user)
50
+ expect(assigns(:user)).to eq(user)
51
51
  end
52
52
  end
53
53
 
54
- describe "POST create" do
54
+ describe "#create" do
55
55
  describe "with valid params" do
56
56
  it "creates a new User" do
57
57
  expect {
@@ -61,13 +61,13 @@ describe UsersController do
61
61
 
62
62
  it "assigns a newly created user as @user" do
63
63
  post :create, {user: valid_attributes }, valid_session
64
- assigns(:user).should be_a(User)
65
- assigns(:user).should be_persisted
64
+ expect(assigns(:user)).to be_a(User)
65
+ expect(assigns(:user)).to be_persisted
66
66
  end
67
67
 
68
68
  it "redirects to the created user" do
69
69
  post :create, { user: valid_attributes }, valid_session
70
- response.should redirect_to(User.last)
70
+ expect(response).to redirect_to(User.last)
71
71
  end
72
72
  end
73
73
 
@@ -76,19 +76,19 @@ describe UsersController do
76
76
  # Trigger the behavior that occurs when invalid params are submitted
77
77
  User.any_instance.stub(:save).and_return(false)
78
78
  post :create, { user: { "email" => "invalid value" } }, valid_session
79
- assigns(:user).should be_a_new(User)
79
+ expect(assigns(:user)).to be_a_new(User)
80
80
  end
81
81
 
82
82
  it "re-renders the 'new' template" do
83
83
  # Trigger the behavior that occurs when invalid params are submitted
84
84
  User.any_instance.stub(:save).and_return(false)
85
85
  post :create, { user: { "email" => "invalid value" } }, valid_session
86
- response.should render_template("new")
86
+ expect(response).to render_template("new")
87
87
  end
88
88
  end
89
89
  end
90
90
 
91
- describe "PUT update" do
91
+ describe "#update" do
92
92
  describe "with valid params" do
93
93
  it "updates the requested user" do
94
94
  user = User.create! valid_attributes
@@ -103,13 +103,13 @@ describe UsersController do
103
103
  it "assigns the requested user as @user" do
104
104
  user = User.create! valid_attributes
105
105
  put :update, { id: user.to_param, user: valid_attributes }, valid_session
106
- assigns(:user).should eq(user)
106
+ expect(assigns(:user)).to eq(user)
107
107
  end
108
108
 
109
109
  it "redirects to the user" do
110
110
  user = User.create! valid_attributes
111
111
  put :update, { id: user.to_param, user: valid_attributes }, valid_session
112
- response.should redirect_to(user)
112
+ expect(response).to redirect_to(user)
113
113
  end
114
114
  end
115
115
 
@@ -119,7 +119,7 @@ describe UsersController do
119
119
  # Trigger the behavior that occurs when invalid params are submitted
120
120
  User.any_instance.stub(:save).and_return(false)
121
121
  put :update, { id: user.to_param, user: { "email" => "invalid value" } }, valid_session
122
- assigns(:user).should eq(user)
122
+ expect(assigns(:user)).to eq(user)
123
123
  end
124
124
 
125
125
  it "re-renders the 'edit' template" do
@@ -127,12 +127,12 @@ describe UsersController do
127
127
  # Trigger the behavior that occurs when invalid params are submitted
128
128
  User.any_instance.stub(:save).and_return(false)
129
129
  put :update, { id: user.to_param, user: { "email" => "invalid value" } }, valid_session
130
- response.should render_template("edit")
130
+ expect(response).to render_template("edit")
131
131
  end
132
132
  end
133
133
  end
134
134
 
135
- describe "DELETE destroy" do
135
+ describe "#destroy" do
136
136
  it "destroys the requested user" do
137
137
  user = User.create! valid_attributes
138
138
  expect {
@@ -143,7 +143,7 @@ describe UsersController do
143
143
  it "redirects to the users list" do
144
144
  user = User.create! valid_attributes
145
145
  delete :destroy, { id: user.to_param }, valid_session
146
- response.should redirect_to(users_url)
146
+ expect(response).to redirect_to(users_url)
147
147
  end
148
148
  end
149
149
 
@@ -1,3 +1,5 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
1
3
  FactoryGirl.define do
2
4
  factory :user do
3
5
  sequence(:email) { |n| "person#{n}@example.com" }
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ feature "Activation" do
4
+ scenario "with a valid token should activate the user and sign them in" do
5
+ @user = create(:user)
6
+ visit activation_path(@user.activation_token)
7
+
8
+ expect(current_path).to eq sign_in_path
9
+ expect(page).to have_content "Your account has been activated and you're now signed in."
10
+ end
11
+
12
+ scenario "with an invalid token should send the user to sign in" do
13
+ visit activation_path('BOGUS')
14
+
15
+ expect(current_path).to eq sign_in_path
16
+ expect(page).to have_content "Please sign in first."
17
+ end
18
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ feature "Password Reset" do
4
+ background do
5
+ clear_emails
6
+ @user = create(:user)
7
+ @user.activate!
8
+
9
+ visit sign_in_path
10
+ click_link 'Reset Password'
11
+
12
+ fill_in 'Email', with: @user.email
13
+ click_button 'Reset My Password'
14
+
15
+ @user.reload
16
+ end
17
+
18
+ after do
19
+ @user.destroy
20
+ end
21
+
22
+ scenario "displays a message about the password reset email" do
23
+ expect(page).to have_content "Password reset instructions have been sent to your email."
24
+ expect(current_path).to eq sign_in_path
25
+ end
26
+
27
+ scenario "sends a password reset email with url" do
28
+ expect(open_email(@user.email)).to_not be_nil
29
+ expect(current_email).to have_content reset_password_path(@user.reset_password_token)
30
+ end
31
+
32
+ scenario "resets the password" do
33
+ visit reset_password_path(@user.reset_password_token)
34
+
35
+ fill_in 'New Password', with: 'som3_g00d_p@ssword'
36
+ click_button 'Reset Password'
37
+
38
+ expect(page).to have_content "Password was successfully updated."
39
+ expect(current_path).to eq sign_in_path
40
+ end
41
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ # http://www.elabs.se/blog/51-simple-tricks-to-clean-up-your-capybara-tests
4
+
5
+ feature "Registration" do
6
+ background do
7
+ clear_emails
8
+
9
+ @email = 'stan@example.com'
10
+
11
+ visit sign_up_path
12
+
13
+ within '#new_user' do
14
+ fill_in 'Email', with: @email
15
+ fill_in 'Name', with: 'Stan'
16
+ fill_in 'Password', with: 'p@ssword'
17
+ click_button 'Sign Up'
18
+ end
19
+
20
+ @user = User.find_by_email(@email)
21
+ end
22
+
23
+ after do
24
+ @user.destroy
25
+ end
26
+
27
+ it "creates a new user" do
28
+ expect(@user).to_not be_nil
29
+ end
30
+
31
+ it "displays a message about activation" do
32
+ expect(find('.alert')).to have_content "Thanks for signing up. Please check your email for activation instructions."
33
+ end
34
+
35
+ it "sends the activation email with url" do
36
+ expect(open_email(@email)).to_not be_nil
37
+ expect(current_email).to have_content activation_path(@user.activation_token)
38
+ end
39
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ feature "Sign In" do
4
+ background(:all) do
5
+ @user = create(:user)
6
+ @user.activate!
7
+ end
8
+
9
+ after(:all) do
10
+ @user.destroy
11
+ end
12
+
13
+ scenario "authenticates with valid credentials" do
14
+ sign_in(@user.email, 'password')
15
+
16
+ expect(find('.alert')).to have_content("Successfully signed in")
17
+ end
18
+
19
+ scenario "displays a generic error message with an invalid email" do
20
+ sign_in('this is not valid', 'password')
21
+
22
+ expect(find('.alert')).to have_content("Sign in failed")
23
+ end
24
+
25
+ scenario "displays a generic error message with an invalid password" do
26
+ sign_in(@user.email, 'this is not valid')
27
+
28
+ expect(find('.alert')).to have_content("Sign in failed")
29
+ end
30
+ end
@@ -1,47 +1,47 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe UserMailer do
4
- let(:user) { build_stubbed(:user) }
4
+ let(:user) { build_stubbed(:user, activation_state: 'pending', activation_token: 'ABC', reset_password_token: 'XYZ') }
5
5
 
6
- describe "activation_needed_email" do
6
+ describe "#activation_needed_email" do
7
7
  let(:mail) { UserMailer.activation_needed_email(user) }
8
8
 
9
9
  it "renders the headers" do
10
- mail.subject.should eq("Welcome to My Awesome Site!")
11
- mail.to.should eq([user.email])
12
- mail.from.should eq(['notifications@example.com'])
10
+ expect(mail.subject).to eq "Welcome to My Awesome Site!"
11
+ expect(mail.to).to eq [user.email]
12
+ expect(mail.from).to eq %w(notifications@example.com)
13
13
  end
14
14
 
15
15
  it "renders the body" do
16
- mail.body.encoded.should match("Welcome to")
16
+ expect(mail.body.encoded).to match "Welcome to"
17
17
  end
18
18
  end
19
19
 
20
- describe "activation_success_email" do
20
+ describe "#activation_success_email" do
21
21
  let(:mail) { UserMailer.activation_success_email(user) }
22
22
 
23
23
  it "renders the headers" do
24
- mail.subject.should eq("Your account has been activated!")
25
- mail.to.should eq([user.email])
26
- mail.from.should eq(['notifications@example.com'])
24
+ expect(mail.subject).to eq "Your account has been activated!"
25
+ expect(mail.to).to eq [user.email]
26
+ expect(mail.from).to eq %w(notifications@example.com)
27
27
  end
28
28
 
29
29
  it "renders the body" do
30
- mail.body.encoded.should match("You have successfully activated")
30
+ expect(mail.body.encoded).to match "You have successfully activated"
31
31
  end
32
32
  end
33
33
 
34
- describe "reset_password_email" do
34
+ describe "#reset_password_email" do
35
35
  let(:mail) { UserMailer.reset_password_email(user) }
36
36
 
37
37
  it "renders the headers" do
38
- mail.subject.should eq("Password reset requested")
39
- mail.to.should eq([user.email])
40
- mail.from.should eq(['notifications@example.com'])
38
+ expect(mail.subject).to eq "Password reset requested"
39
+ expect(mail.to).to eq [user.email]
40
+ expect(mail.from).to eq %w(notifications@example.com)
41
41
  end
42
42
 
43
43
  it "renders the body" do
44
- mail.body.encoded.should match("You have requested to reset your password.")
44
+ expect(mail.body.encoded).to match "You have requested to reset your password."
45
45
  end
46
46
  end
47
47
 
@@ -7,23 +7,30 @@ describe User do
7
7
 
8
8
  describe "name" do
9
9
  it "is required" do
10
- subject.should_not accept_values(:email, nil, '')
10
+ expect(subject).to_not accept_values(:email, nil, '')
11
11
  end
12
12
 
13
- it "should be less than 30 characters"
13
+ it "should be less than 30 characters" do
14
+ expect(subject).to accept_values(:name, 'a' * 30)
15
+ expect(subject).to_not accept_values(:name, 'a' * 31)
16
+ end
14
17
  end
15
18
 
16
19
  describe "email" do
17
20
  it "is required" do
18
- subject.should_not accept_values(:email, nil, '', ' ')
21
+ expect(subject).to_not accept_values(:email, nil, '', ' ')
19
22
  end
20
23
 
21
24
  it "must be properly formatted" do
22
- subject.should accept_values(:email, 'a@b.com', 'a@b.c.com')
23
- subject.should_not accept_values(:email, 'a@b', 'a.b.com')
25
+ expect(subject).to accept_values(:email, 'a@b.com', 'a@b.c.com')
26
+ expect(subject).to_not accept_values(:email, 'a@b', 'a.b.com')
24
27
  end
25
28
 
26
- it "must be unique"
29
+ it "must be unique" do
30
+ subject.save
31
+ stunt_double = subject.dup
32
+ expect(stunt_double).to_not accept_values(:email, subject.email)
33
+ end
27
34
  end
28
35
  end
29
36
  end
@@ -25,25 +25,17 @@ if ENV['COVERAGE']
25
25
  end
26
26
  end
27
27
 
28
- # This file is copied to spec/ when you run 'rails generate rspec:install'
29
- ENV["RAILS_ENV"] ||= 'test'
30
- require File.expand_path("../../config/environment", __FILE__)
28
+ ENV['RAILS_ENV'] ||= 'test'
29
+ require File.expand_path('../../config/environment', __FILE__)
31
30
  require 'rspec/rails'
32
31
  require 'rspec/autorun'
32
+ require 'capybara/email/rspec'
33
33
 
34
34
  # Requires supporting ruby files with custom matchers and macros, etc,
35
35
  # in spec/support/ and its subdirectories.
36
- Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
36
+ Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
37
37
 
38
38
  RSpec.configure do |config|
39
- # ## Mock Framework
40
- #
41
- # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
42
- #
43
- # config.mock_with :mocha
44
- # config.mock_with :flexmock
45
- # config.mock_with :rr
46
-
47
39
  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
48
40
  config.fixture_path = "#{::Rails.root}/spec/fixtures"
49
41
 
@@ -57,6 +49,10 @@ RSpec.configure do |config|
57
49
  # rspec-rails.
58
50
  config.infer_base_class_for_anonymous_controllers = false
59
51
 
52
+ config.expect_with :rspec do |c|
53
+ c.syntax = :expect
54
+ end
55
+
60
56
  # Run specs in random order to surface order dependencies. If you find an
61
57
  # order dependency and want to debug it, you can fix the order by providing
62
58
  # the seed, which is printed after each run.
@@ -10,8 +10,8 @@ module UserSessionsFeatureHelper
10
10
  end
11
11
  end
12
12
 
13
- def sign_out(user = @current_user)
14
- # TODO
13
+ def sign_out
14
+ visit sign_out_path
15
15
  end
16
16
 
17
17
  end
@@ -11,7 +11,6 @@ describe "users/edit" do
11
11
  it "renders the edit user form" do
12
12
  render
13
13
 
14
- # Run the generator again with the --webrat flag if you want to use webrat matchers
15
14
  assert_select "form", action: users_path(@user), method: "post" do
16
15
  assert_select "input#user_email", name: "user[email]"
17
16
  assert_select "input#user_name", name: "user[name]"
@@ -16,7 +16,6 @@ describe "users/index" do
16
16
 
17
17
  it "renders a list of users" do
18
18
  render
19
- # Run the generator again with the --webrat flag if you want to use webrat matchers
20
19
  assert_select "tr>td", text: "Email".to_s, count: 2
21
20
  assert_select "tr>td", text: "Name".to_s, count: 2
22
21
  end
@@ -11,7 +11,6 @@ describe "users/new" do
11
11
  it "renders new user form" do
12
12
  render
13
13
 
14
- # Run the generator again with the --webrat flag if you want to use webrat matchers
15
14
  assert_select "form", action: users_path, method: "post" do
16
15
  assert_select "input#user_email", name: "user[email]"
17
16
  assert_select "input#user_name", name: "user[name]"
@@ -10,8 +10,7 @@ describe "users/show" do
10
10
 
11
11
  it "renders attributes in <p>" do
12
12
  render
13
- # Run the generator again with the --webrat flag if you want to use webrat matchers
14
- rendered.should match(/Email/)
15
- rendered.should match(/Name/)
13
+ expect(rendered).to match /Email/
14
+ expect(rendered).to match /Name/
16
15
  end
17
16
  end
data/bin/raygun CHANGED
@@ -13,6 +13,12 @@ def titleize(underscored_string)
13
13
  result.gsub(/\b('?[a-z])/) { $1.capitalize }
14
14
  end
15
15
 
16
+ if !ARGV[0]
17
+ puts "Please specify where raygun should generate a project (e.g. projects/my_new_project)."
18
+ puts "usage: raygun new_app_directory"
19
+ exit 1
20
+ end
21
+
16
22
  app_dir = ARGV[0]
17
23
  app_name_snake = File.basename(app_dir)
18
24
  app_name_camel = camelize(app_name_snake)
@@ -28,12 +34,13 @@ Dir.chdir(app_dir) do
28
34
  `find . -type f -print | xargs sed -i '' 's/AppPrototype/#{app_name_camel}/g'`
29
35
  `find . -type f -print | xargs sed -i '' 's/app_prototype/#{app_name_snake}/g'`
30
36
  `sed -i '' 's/App Prototype/#{app_name_title}/' app/views/layouts/application.html.slim`
31
- `sed -i '' 's/SECRET_TOKEN_REPLACE_ME_TODO/#{SecureRandom.hex(128)}/' config/initializers/secret_token.rb`
37
+ `sed -i '' 's/SUPER_SECRET_TOKEN_REPLACE_ME_TODO/#{SecureRandom.hex(128)}/' config/initializers/secret_token.rb`
32
38
 
33
39
  puts "Done! Next steps..."
34
40
  puts ""
35
41
  puts "# Install updated dependencies"
36
42
  puts "$ cd #{ARGV[0]}"
43
+ puts "$ gem install bundler"
37
44
  puts "$ bundle update"
38
45
  puts ""
39
46
  puts "# Prepare the database: schema and reference / sample data"
data/cleanup.sh ADDED
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ git clean -df
4
+ git checkout app_prototype/config/routes.rb app_prototype/db/schema.rb
5
+
6
+ rm -rfv app_prototype/log/*
7
+ rm -rfv app_prototype/tmp/*
8
+ rm -rfv app_prototype/coverage
@@ -1,3 +1,3 @@
1
1
  module Raygun
2
- VERSION = "0.0.13"
2
+ VERSION = "0.0.14"
3
3
  end
data/raygun.gemspec CHANGED
@@ -7,7 +7,7 @@ require 'raygun/version'
7
7
  Gem::Specification.new do |gem|
8
8
  gem.name = "raygun"
9
9
  gem.version = Raygun::VERSION
10
- gem.authors = ["Christian Nelson"]
10
+ gem.authors = ["Christian Nelson", "Jonah Williams", "Jason Wadsworth"]
11
11
  gem.email = ["christian@carbonfive.com"]
12
12
  gem.description = %q{Carbon Five Rails application generator}
13
13
  gem.summary = %q{Generates and customizes Rails applications with Carbon Five best practices baked in.}
@@ -17,6 +17,4 @@ Gem::Specification.new do |gem|
17
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
-
21
- gem.add_dependency 'bundler', '>= 1.2'
22
20
  end