nifty-generators-improved 0.5

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 (112) hide show
  1. data/CHANGELOG +198 -0
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +111 -0
  4. data/LICENSE +20 -0
  5. data/README.rdoc +109 -0
  6. data/Rakefile +10 -0
  7. data/features/nifty_authentication.feature +80 -0
  8. data/features/nifty_config.feature +17 -0
  9. data/features/nifty_layout.feature +20 -0
  10. data/features/nifty_scaffold.feature +80 -0
  11. data/features/step_definitions/common_steps.rb +62 -0
  12. data/features/step_definitions/rails_setup_steps.rb +6 -0
  13. data/features/support/env.rb +6 -0
  14. data/features/support/matchers.rb +7 -0
  15. data/lib/generators/nifty.rb +28 -0
  16. data/lib/generators/nifty/authentication/USAGE +50 -0
  17. data/lib/generators/nifty/authentication/authentication_generator.rb +154 -0
  18. data/lib/generators/nifty/authentication/templates/authlogic_session.rb +2 -0
  19. data/lib/generators/nifty/authentication/templates/controller_authentication.rb +60 -0
  20. data/lib/generators/nifty/authentication/templates/fixtures.yml +24 -0
  21. data/lib/generators/nifty/authentication/templates/migration.rb +20 -0
  22. data/lib/generators/nifty/authentication/templates/sessions_controller.rb +41 -0
  23. data/lib/generators/nifty/authentication/templates/sessions_helper.rb +2 -0
  24. data/lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb +39 -0
  25. data/lib/generators/nifty/authentication/templates/tests/rspec/user.rb +83 -0
  26. data/lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb +56 -0
  27. data/lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb +40 -0
  28. data/lib/generators/nifty/authentication/templates/tests/shoulda/user.rb +85 -0
  29. data/lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb +61 -0
  30. data/lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb +36 -0
  31. data/lib/generators/nifty/authentication/templates/tests/testunit/user.rb +88 -0
  32. data/lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb +53 -0
  33. data/lib/generators/nifty/authentication/templates/user.rb +38 -0
  34. data/lib/generators/nifty/authentication/templates/users_controller.rb +32 -0
  35. data/lib/generators/nifty/authentication/templates/users_helper.rb +2 -0
  36. data/lib/generators/nifty/authentication/templates/views/erb/_form.html.erb +20 -0
  37. data/lib/generators/nifty/authentication/templates/views/erb/edit.html.erb +3 -0
  38. data/lib/generators/nifty/authentication/templates/views/erb/login.html.erb +30 -0
  39. data/lib/generators/nifty/authentication/templates/views/erb/signup.html.erb +5 -0
  40. data/lib/generators/nifty/authentication/templates/views/haml/_form.html.haml +16 -0
  41. data/lib/generators/nifty/authentication/templates/views/haml/edit.html.haml +3 -0
  42. data/lib/generators/nifty/authentication/templates/views/haml/login.html.haml +26 -0
  43. data/lib/generators/nifty/authentication/templates/views/haml/signup.html.haml +5 -0
  44. data/lib/generators/nifty/config/USAGE +23 -0
  45. data/lib/generators/nifty/config/config_generator.rb +24 -0
  46. data/lib/generators/nifty/config/templates/config.yml +8 -0
  47. data/lib/generators/nifty/config/templates/load_config.rb +2 -0
  48. data/lib/generators/nifty/layout/USAGE +25 -0
  49. data/lib/generators/nifty/layout/layout_generator.rb +29 -0
  50. data/lib/generators/nifty/layout/templates/error_messages_helper.rb +23 -0
  51. data/lib/generators/nifty/layout/templates/layout.html.erb +19 -0
  52. data/lib/generators/nifty/layout/templates/layout.html.haml +17 -0
  53. data/lib/generators/nifty/layout/templates/layout_helper.rb +17 -0
  54. data/lib/generators/nifty/layout/templates/stylesheet.css +83 -0
  55. data/lib/generators/nifty/layout/templates/stylesheet.css.scss +88 -0
  56. data/lib/generators/nifty/scaffold/USAGE +51 -0
  57. data/lib/generators/nifty/scaffold/scaffold_generator.rb +318 -0
  58. data/lib/generators/nifty/scaffold/templates/actions/create.rb +8 -0
  59. data/lib/generators/nifty/scaffold/templates/actions/destroy.rb +5 -0
  60. data/lib/generators/nifty/scaffold/templates/actions/edit.rb +3 -0
  61. data/lib/generators/nifty/scaffold/templates/actions/index.rb +3 -0
  62. data/lib/generators/nifty/scaffold/templates/actions/new.rb +3 -0
  63. data/lib/generators/nifty/scaffold/templates/actions/show.rb +3 -0
  64. data/lib/generators/nifty/scaffold/templates/actions/update.rb +8 -0
  65. data/lib/generators/nifty/scaffold/templates/controller.rb +3 -0
  66. data/lib/generators/nifty/scaffold/templates/fixtures.yml +9 -0
  67. data/lib/generators/nifty/scaffold/templates/helper.rb +2 -0
  68. data/lib/generators/nifty/scaffold/templates/migration.rb +16 -0
  69. data/lib/generators/nifty/scaffold/templates/model.rb +4 -0
  70. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb +11 -0
  71. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
  72. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb +4 -0
  73. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb +4 -0
  74. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb +4 -0
  75. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb +4 -0
  76. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb +11 -0
  77. data/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb +8 -0
  78. data/lib/generators/nifty/scaffold/templates/tests/rspec/model.rb +7 -0
  79. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb +13 -0
  80. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
  81. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
  82. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb +6 -0
  83. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb +6 -0
  84. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb +6 -0
  85. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb +13 -0
  86. data/lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb +5 -0
  87. data/lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb +7 -0
  88. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb +11 -0
  89. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
  90. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb +4 -0
  91. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb +4 -0
  92. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb +4 -0
  93. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb +4 -0
  94. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb +11 -0
  95. data/lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb +5 -0
  96. data/lib/generators/nifty/scaffold/templates/tests/testunit/model.rb +7 -0
  97. data/lib/generators/nifty/scaffold/templates/views/erb/_form.html.erb +10 -0
  98. data/lib/generators/nifty/scaffold/templates/views/erb/edit.html.erb +14 -0
  99. data/lib/generators/nifty/scaffold/templates/views/erb/index.html.erb +29 -0
  100. data/lib/generators/nifty/scaffold/templates/views/erb/new.html.erb +7 -0
  101. data/lib/generators/nifty/scaffold/templates/views/erb/show.html.erb +20 -0
  102. data/lib/generators/nifty/scaffold/templates/views/haml/_form.html.haml +9 -0
  103. data/lib/generators/nifty/scaffold/templates/views/haml/edit.html.haml +14 -0
  104. data/lib/generators/nifty/scaffold/templates/views/haml/index.html.haml +25 -0
  105. data/lib/generators/nifty/scaffold/templates/views/haml/new.html.haml +7 -0
  106. data/lib/generators/nifty/scaffold/templates/views/haml/show.html.haml +20 -0
  107. data/test/test_helper.rb +119 -0
  108. data/test/test_nifty_authentication_generator.rb +274 -0
  109. data/test/test_nifty_config_generator.rb +37 -0
  110. data/test/test_nifty_layout_generator.rb +42 -0
  111. data/test/test_nifty_scaffold_generator.rb +534 -0
  112. metadata +231 -0
@@ -0,0 +1,61 @@
1
+ require 'test_helper'
2
+
3
+ class <%= user_plural_class_name %>ControllerTest < ActionController::TestCase
4
+ context "new action" do
5
+ should "render new template" do
6
+ get :new
7
+ assert_template 'new'
8
+ end
9
+ end
10
+
11
+ context "create action" do
12
+ should "render new template when <%= user_singular_name %> is invalid" do
13
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
14
+ post :create
15
+ assert_template 'new'
16
+ end
17
+
18
+ should "redirect when <%= user_singular_name %> is valid" do
19
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
20
+ post :create
21
+ assert_redirected_to root_url
22
+ <%- unless options[:authlogic] -%>
23
+ assert_equal assigns['<%= user_singular_name %>'].id, session['<%= user_singular_name %>_id']
24
+ <%- end -%>
25
+ end
26
+ end
27
+
28
+ context "edit action" do
29
+ should "redirect when not logged in" do
30
+ get :edit, :id => "ignored"
31
+ assert_redirected_to login_url
32
+ end
33
+
34
+ should "render edit template" do
35
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
36
+ get :edit, :id => "ignored"
37
+ assert_template 'edit'
38
+ end
39
+ end
40
+
41
+ context "update action" do
42
+ should "redirect when not logged in" do
43
+ put :update, :id => "ignored"
44
+ assert_redirected_to login_url
45
+ end
46
+
47
+ should "render edit template when <%= user_singular_name %> is invalid" do
48
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
49
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
50
+ put :update, :id => "ignored"
51
+ assert_template 'edit'
52
+ end
53
+
54
+ should "redirect when <%= user_singular_name %> is valid" do
55
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
56
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
57
+ put :update, :id => "ignored"
58
+ assert_redirected_to root_url
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,36 @@
1
+ require 'test_helper'
2
+
3
+ class <%= session_plural_class_name %>ControllerTest < ActionController::TestCase
4
+ def test_new
5
+ get :new
6
+ assert_template 'new'
7
+ end
8
+
9
+ <%- if options[:authlogic] -%>
10
+ def test_create_invalid
11
+ post :create, :<%= session_singular_name %> => { :username => "foo", :password => "badpassword" }
12
+ assert_template 'new'
13
+ assert_nil <%= session_class_name %>.find
14
+ end
15
+
16
+ def test_create_valid
17
+ post :create, :<%= session_singular_name %> => { :username => "foo", :password => "secret" }
18
+ assert_redirected_to root_url
19
+ assert_equal <%= user_plural_name %>(:foo), <%= session_class_name %>.find.<%= user_singular_name %>
20
+ end
21
+ <%- else -%>
22
+ def test_create_invalid
23
+ <%= user_class_name %>.stubs(:authenticate).returns(nil)
24
+ post :create
25
+ assert_template 'new'
26
+ assert_nil session['<%= user_singular_name %>_id']
27
+ end
28
+
29
+ def test_create_valid
30
+ <%= user_class_name %>.stubs(:authenticate).returns(<%= user_class_name %>.first)
31
+ post :create
32
+ assert_redirected_to root_url
33
+ assert_equal <%= user_class_name %>.first.id, session['<%= user_singular_name %>_id']
34
+ end
35
+ <%- end -%>
36
+ end
@@ -0,0 +1,88 @@
1
+ require 'test_helper'
2
+
3
+ class <%= user_class_name %>Test < ActiveSupport::TestCase
4
+ <%- unless options[:authlogic] -%>
5
+ def new_<%= user_singular_name %>(attributes = {})
6
+ attributes[:username] ||= 'foo'
7
+ attributes[:email] ||= 'foo@example.com'
8
+ attributes[:password] ||= 'abc123'
9
+ attributes[:password_confirmation] ||= attributes[:password]
10
+ <%= user_singular_name %> = <%= user_class_name %>.new(attributes)
11
+ <%= user_singular_name %>.valid? # run validations
12
+ <%= user_singular_name %>
13
+ end
14
+
15
+ def setup
16
+ <%= user_class_name %>.delete_all
17
+ end
18
+
19
+ def test_valid
20
+ assert new_<%= user_singular_name %>.valid?
21
+ end
22
+
23
+ def test_require_username
24
+ assert_equal ["can't be blank"], new_<%= user_singular_name %>(:username => '').errors[:username]
25
+ end
26
+
27
+ def test_require_password
28
+ assert_equal ["can't be blank"], new_<%= user_singular_name %>(:password => '').errors[:password]
29
+ end
30
+
31
+ def test_require_well_formed_email
32
+ assert_equal ["is invalid"], new_<%= user_singular_name %>(:email => 'foo@bar@example.com').errors[:email]
33
+ end
34
+
35
+ def test_validate_uniqueness_of_email
36
+ new_<%= user_singular_name %>(:email => 'bar@example.com').save!
37
+ assert_equal ["has already been taken"], new_<%= user_singular_name %>(:email => 'bar@example.com').errors[:email]
38
+ end
39
+
40
+ def test_validate_uniqueness_of_username
41
+ new_<%= user_singular_name %>(:username => 'uniquename').save!
42
+ assert_equal ["has already been taken"], new_<%= user_singular_name %>(:username => 'uniquename').errors[:username]
43
+ end
44
+
45
+ def test_validate_odd_characters_in_username
46
+ assert_equal ["should only contain letters, numbers, or .-_@"], new_<%= user_singular_name %>(:username => 'odd ^&(@)').errors[:username]
47
+ end
48
+
49
+ def test_validate_password_length
50
+ assert_equal ["is too short (minimum is 4 characters)"], new_<%= user_singular_name %>(:password => 'bad').errors[:password]
51
+ end
52
+
53
+ def test_require_matching_password_confirmation
54
+ assert_equal ["doesn't match confirmation"], new_<%= user_singular_name %>(:password_confirmation => 'nonmatching').errors[:password]
55
+ end
56
+
57
+ def test_generate_password_hash_and_salt_on_create
58
+ <%= user_singular_name %> = new_<%= user_singular_name %>
59
+ <%= user_singular_name %>.save!
60
+ assert <%= user_singular_name %>.password_hash
61
+ assert <%= user_singular_name %>.password_salt
62
+ end
63
+
64
+ def test_authenticate_by_username
65
+ <%= user_class_name %>.delete_all
66
+ <%= user_singular_name %> = new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret')
67
+ <%= user_singular_name %>.save!
68
+ assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foobar', 'secret')
69
+ end
70
+
71
+ def test_authenticate_by_email
72
+ <%= user_class_name %>.delete_all
73
+ <%= user_singular_name %> = new_<%= user_singular_name %>(:email => 'foo@bar.com', :password => 'secret')
74
+ <%= user_singular_name %>.save!
75
+ assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foo@bar.com', 'secret')
76
+ end
77
+
78
+ def test_authenticate_bad_username
79
+ assert_nil <%= user_class_name %>.authenticate('nonexisting', 'secret')
80
+ end
81
+
82
+ def test_authenticate_bad_password
83
+ <%= user_class_name %>.delete_all
84
+ new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret').save!
85
+ assert_nil <%= user_class_name %>.authenticate('foobar', 'badpassword')
86
+ end
87
+ <%- end -%>
88
+ end
@@ -0,0 +1,53 @@
1
+ require 'test_helper'
2
+
3
+ class <%= user_plural_class_name %>ControllerTest < ActionController::TestCase
4
+ def test_new
5
+ get :new
6
+ assert_template 'new'
7
+ end
8
+
9
+ def test_create_invalid
10
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
11
+ post :create
12
+ assert_template 'new'
13
+ end
14
+
15
+ def test_create_valid
16
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
17
+ post :create
18
+ assert_redirected_to root_url
19
+ <%- unless options[:authlogic] -%>
20
+ assert_equal assigns['<%= user_singular_name %>'].id, session['<%= user_singular_name %>_id']
21
+ <%- end -%>
22
+ end
23
+
24
+ def test_edit_without_user
25
+ get :edit, :id => "ignored"
26
+ assert_redirected_to login_url
27
+ end
28
+
29
+ def test_edit
30
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
31
+ get :edit, :id => "ignored"
32
+ assert_template 'edit'
33
+ end
34
+
35
+ def test_update_without_user
36
+ put :update, :id => "ignored"
37
+ assert_redirected_to login_url
38
+ end
39
+
40
+ def test_update_invalid
41
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
42
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
43
+ put :update, :id => "ignored"
44
+ assert_template 'edit'
45
+ end
46
+
47
+ def test_update_valid
48
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
49
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
50
+ put :update, :id => "ignored"
51
+ assert_redirected_to root_url
52
+ end
53
+ end
@@ -0,0 +1,38 @@
1
+ class <%= user_class_name %> < ActiveRecord::Base
2
+ <%- if options[:authlogic] -%>
3
+ acts_as_authentic
4
+ <%- else -%>
5
+ # new columns need to be added here to be writable through mass assignment
6
+ attr_accessible :username, :email, :password, :password_confirmation
7
+
8
+ attr_accessor :password
9
+ before_save :prepare_password
10
+
11
+ validates_presence_of :username
12
+ validates_uniqueness_of :username, :email, :allow_blank => true
13
+ validates_format_of :username, :with => /^[-\w\._@]+$/i, :allow_blank => true, :message => "should only contain letters, numbers, or .-_@"
14
+ validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
15
+ validates_presence_of :password, :on => :create
16
+ validates_confirmation_of :password
17
+ validates_length_of :password, :minimum => 4, :allow_blank => true
18
+
19
+ # login can be either username or email address
20
+ def self.authenticate(login, pass)
21
+ <%= user_singular_name %> = find_by_username(login) || find_by_email(login)
22
+ return <%= user_singular_name %> if <%= user_singular_name %> && <%= user_singular_name %>.password_hash == <%= user_singular_name %>.encrypt_password(pass)
23
+ end
24
+
25
+ def encrypt_password(pass)
26
+ BCrypt::Engine.hash_secret(pass, password_salt)
27
+ end
28
+
29
+ private
30
+
31
+ def prepare_password
32
+ unless password.blank?
33
+ self.password_salt = BCrypt::Engine.generate_salt
34
+ self.password_hash = encrypt_password(password)
35
+ end
36
+ end
37
+ <%- end -%>
38
+ end
@@ -0,0 +1,32 @@
1
+ class <%= user_plural_class_name %>Controller < ApplicationController
2
+ before_filter :login_required, :except => [:new, :create]
3
+
4
+ def new
5
+ @<%= user_singular_name %> = <%= user_class_name %>.new
6
+ end
7
+
8
+ def create
9
+ @<%= user_singular_name %> = <%= user_class_name %>.new(params[:<%= user_singular_name %>])
10
+ if @<%= user_singular_name %>.save
11
+ <%- unless options[:authlogic] -%>
12
+ session[:<%= user_singular_name %>_id] = @<%= user_singular_name %>.id
13
+ <%- end -%>
14
+ redirect_to root_url, :notice => "Thank you for signing up! You are now logged in."
15
+ else
16
+ render :new
17
+ end
18
+ end
19
+
20
+ def edit
21
+ @<%= user_singular_name %> = current_<%= user_singular_name %>
22
+ end
23
+
24
+ def update
25
+ @<%= user_singular_name %> = current_<%= user_singular_name %>
26
+ if @<%= user_singular_name %>.update_attributes(params[:<%= user_singular_name %>])
27
+ redirect_to root_url, :notice => "Your profile has been updated."
28
+ else
29
+ render :edit
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,2 @@
1
+ module <%= user_plural_class_name %>Helper
2
+ end
@@ -0,0 +1,20 @@
1
+ <%%= form_for @<%= user_singular_name %> do |f| %>
2
+ <%%= f.error_messages %>
3
+ <div class="field">
4
+ <%%= f.label :username %>
5
+ <%%= f.text_field :username %>
6
+ </div>
7
+ <div class="field">
8
+ <%%= f.label :email, "Email Address" %>
9
+ <%%= f.text_field :email %>
10
+ </div>
11
+ <div class="field">
12
+ <%%= f.label :password %>
13
+ <%%= f.password_field :password %>
14
+ </div>
15
+ <div class="field">
16
+ <%%= f.label :password_confirmation, "Confirm Password" %>
17
+ <%%= f.password_field :password_confirmation %>
18
+ </div>
19
+ <div class="actions"><%%= f.submit (@<%= user_singular_name %>.new_record? ? "Sign up" : "Update") %></div>
20
+ <%% end %>
@@ -0,0 +1,3 @@
1
+ <%% title "Update Profile" %>
2
+
3
+ <%%= render "form" %>
@@ -0,0 +1,30 @@
1
+ <%% title "Log in" %>
2
+
3
+ <p>Don't have an account? <%%= link_to "Sign up!", signup_path %></p>
4
+
5
+ <%- if options[:authlogic] -%>
6
+ <%%= form_for @<%= session_singular_name %> do |f| %>
7
+ <%%= f.error_messages %>
8
+ <div class="field">
9
+ <%%= f.label :username %>
10
+ <%%= f.text_field :username %>
11
+ </div>
12
+ <div class="field">
13
+ <%%= f.label :password %>
14
+ <%%= f.password_field :password %>
15
+ </div>
16
+ <div class="actions"><%%= f.submit "Log in" %></div>
17
+ <%% end %>
18
+ <%- else -%>
19
+ <%%= form_tag <%= session_plural_name %>_path do %>
20
+ <div class="field">
21
+ <%%= label_tag :login, "Username or Email Address" %>
22
+ <%%= text_field_tag :login, params[:login] %>
23
+ </div>
24
+ <div class="field">
25
+ <%%= label_tag :password %>
26
+ <%%= password_field_tag :password %>
27
+ </div>
28
+ <div class="actions"><%%= submit_tag "Log in" %></div>
29
+ <%% end %>
30
+ <%- end -%>
@@ -0,0 +1,5 @@
1
+ <%% title "Sign up" %>
2
+
3
+ <p>Already have an account? <%%= link_to "Log in", login_path %>.</p>
4
+
5
+ <%%= render "form" %>
@@ -0,0 +1,16 @@
1
+ = form_for @<%= user_singular_name %> do |f|
2
+ = f.error_messages
3
+ .field
4
+ = f.label :username
5
+ = f.text_field :username
6
+ .field
7
+ = f.label :email, "Email Address"
8
+ = f.text_field :email
9
+ .field
10
+ = f.label :password
11
+ = f.password_field :password
12
+ .field
13
+ = f.label :password_confirmation, "Confirm Password"
14
+ = f.password_field :password_confirmation
15
+ .actions
16
+ = f.submit (@<%= user_singular_name %>.new_record? ? "Sign up" : "Update")
@@ -0,0 +1,3 @@
1
+ - title "Sign up"
2
+
3
+ = render "form"
@@ -0,0 +1,26 @@
1
+ - title "Log in"
2
+
3
+ %p== Don't have an account? #{link_to "Sign up!", signup_path}
4
+
5
+ <%- if options[:authlogic] -%>
6
+ = form_for @<%= session_singular_name %> do |f|
7
+ = f.error_messages
8
+ .field
9
+ = f.label :username
10
+ = f.text_field :username
11
+ .field
12
+ = f.label :password
13
+ = f.password_field :password
14
+ .actions
15
+ = f.submit "Log in"
16
+ <%- else -%>
17
+ - form_tag <%= session_plural_name %>_path do
18
+ .field
19
+ = label_tag :login, "Username or Email Address"
20
+ = text_field_tag :login, params[:login]
21
+ .field
22
+ = label_tag :password
23
+ = password_field_tag :password
24
+ .actions
25
+ = submit_tag "Log in"
26
+ <%- end -%>
@@ -0,0 +1,5 @@
1
+ - title "Sign up"
2
+
3
+ %p== Already have an account? #{link_to "Log in", login_path}.
4
+
5
+ = render "form"
@@ -0,0 +1,23 @@
1
+ Description:
2
+ The nifty_config generator creates YAML file in your config
3
+ directory and an initializer to load this config. The config has a
4
+ separate section for each environment. This is a great place to put
5
+ any config settings you don't want in your app.
6
+
7
+ The config is loaded into a constant called APP_CONFIG by default,
8
+ this changes depending on the name you choose to pass the generator.
9
+ Use this constant to access the config settings like this.
10
+
11
+ APP_CONFIG[:some_setting]
12
+
13
+
14
+ Examples:
15
+ rails generate nifty:config
16
+
17
+ Config: config/app_config.yml
18
+ Initializer: config/initializers/load_app_config.rb
19
+
20
+ rails generate nifty:config passwords
21
+
22
+ Config: config/passwords_config.yml
23
+ Initializer: config/initializers/load_passwords_config.rb