raygun 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
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