rails_app_generator 0.2.22 → 0.2.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/after_templates/addons/devise/_.rb +43 -0
  4. data/after_templates/addons/devise/app/controllers/home_controller.rb +4 -0
  5. data/after_templates/addons/devise/app/controllers/posts_controller.rb +81 -0
  6. data/after_templates/addons/devise/app/models/post.rb +11 -0
  7. data/after_templates/addons/devise/app/models/user.rb +17 -0
  8. data/after_templates/addons/devise/app/views/home/index.html.erb +40 -0
  9. data/after_templates/addons/devise/app/views/layouts/_footer.html.erb +1 -0
  10. data/after_templates/addons/devise/app/views/layouts/_navbar.html.erb +10 -0
  11. data/after_templates/addons/devise/app/views/layouts/application.html.erb +38 -0
  12. data/after_templates/addons/devise/app/views/posts/_form.html.erb +27 -0
  13. data/after_templates/addons/devise/app/views/posts/_post.html.erb +14 -0
  14. data/after_templates/addons/devise/app/views/posts/index.html.erb +12 -0
  15. data/after_templates/addons/devise/app/views/posts/show.html.erb +8 -0
  16. data/after_templates/addons/devise/db/seeds.rb +11 -0
  17. data/after_templates/addons/devise_masquerade/_.rb +36 -0
  18. data/after_templates/addons/devise_masquerade/app/controllers/application_controller.rb +3 -0
  19. data/after_templates/addons/devise_masquerade/app/controllers/home_controller.rb +4 -0
  20. data/after_templates/addons/devise_masquerade/app/controllers/users/masquerades_controller.rb +10 -0
  21. data/after_templates/addons/devise_masquerade/app/models/user.rb +17 -0
  22. data/after_templates/addons/devise_masquerade/app/views/home/index.html.erb +66 -0
  23. data/after_templates/addons/devise_masquerade/app/views/layouts/_footer.html.erb +1 -0
  24. data/after_templates/addons/devise_masquerade/app/views/layouts/_navbar.html.erb +6 -0
  25. data/after_templates/addons/devise_masquerade/app/views/layouts/application.html.erb +57 -0
  26. data/after_templates/addons/devise_masquerade/db/seeds.rb +3 -0
  27. data/after_templates/addons/minimal_css/_.rb +62 -0
  28. data/after_templates/addons/minimal_css/app/controllers/home_controller.rb +4 -0
  29. data/after_templates/addons/minimal_css/app/views/home/index.html.erb +140 -0
  30. data/after_templates/addons/minimal_css/app/views/layouts/_footer.html.erb +1 -0
  31. data/after_templates/addons/minimal_css/app/views/layouts/_navbar.html.erb +3 -0
  32. data/after_templates/addons/minimal_css/app/views/layouts/application.html.erb +29 -0
  33. data/after_templates/addons/minimal_css/db/seeds.rb +5 -0
  34. data/after_templates/rag/devise/_.rb +14 -17
  35. data/after_templates/rag/devise/app/controllers/home_controller.rb +4 -0
  36. data/after_templates/rag/devise/{post → app/controllers}/posts_controller.rb +0 -0
  37. data/after_templates/rag/devise/{post → app/models}/post.rb +0 -0
  38. data/after_templates/rag/devise/app/views/home/index.html.erb +3 -0
  39. data/after_templates/rag/devise/app/views/layouts/_footer.html.erb +3 -0
  40. data/after_templates/rag/devise/app/views/layouts/_navbar.html.erb +8 -0
  41. data/after_templates/rag/devise/app/views/layouts/application.html.erb +24 -0
  42. data/after_templates/rag/devise/{post → app/views/post}/_post.html.erb +0 -0
  43. data/after_templates/rag/test/_.rb +64 -0
  44. data/after_templates/rag/test/app/controllers/home_controller.rb +4 -0
  45. data/after_templates/rag/test/app/views/home/index.html.erb +3 -0
  46. data/after_templates/rag/test/app/views/layouts/_footer.html.erb +1 -0
  47. data/after_templates/rag/test/app/views/layouts/_navbar.html.erb +5 -0
  48. data/after_templates/rag/test/app/views/layouts/application.html.erb +29 -0
  49. data/after_templates/rag/test/db/seeds.rb +7 -0
  50. data/after_templates/rag/testy/_.rb +64 -0
  51. data/after_templates/rag/testy/app/controllers/home_controller.rb +4 -0
  52. data/after_templates/rag/testy/app/views/home/index.html.erb +3 -0
  53. data/after_templates/rag/testy/app/views/layouts/_footer.html.erb +1 -0
  54. data/after_templates/rag/testy/app/views/layouts/_navbar.html.erb +5 -0
  55. data/after_templates/rag/testy/app/views/layouts/application.html.erb +29 -0
  56. data/after_templates/rag/testy/db/seeds.rb +7 -0
  57. data/docs/last_run/app_generator_class.json +25 -1
  58. data/docs/last_run/app_generator_data.json +10 -7
  59. data/docs/last_run/rails_options_class.json +25 -1
  60. data/docs/last_run/rails_options_data.json +12 -8
  61. data/lib/rails_app_generator/addon.rb +30 -2
  62. data/lib/rails_app_generator/addons/devise.rb +119 -0
  63. data/lib/rails_app_generator/addons/devise_masquerade.rb +23 -0
  64. data/lib/rails_app_generator/addons/minimal_css.rb +70 -0
  65. data/lib/rails_app_generator/app_generator.rb +11 -1
  66. data/lib/rails_app_generator/gem_query.rb +34 -0
  67. data/lib/rails_app_generator/rag_initializer.rb +4 -0
  68. data/lib/rails_app_generator/version.rb +1 -1
  69. data/lib/rails_app_generator.rb +1 -0
  70. data/package-lock.json +2 -2
  71. data/package.json +1 -1
  72. data/profiles/addons/devise.json +16 -0
  73. data/profiles/addons/devise_masquerade.json +17 -0
  74. data/profiles/addons/minimal_css.json +15 -0
  75. data/profiles/rag/testy.json +12 -0
  76. data/tasks/addon.thor +7 -3
  77. data/tasks/profile.thor +3 -3
  78. data/templates/Gemfile.erb +1 -0
  79. data/{after_templates/rag/devise/turbo_controller.rb → templates/addons/devise/app/controllers/turbo_devise_controller.rb} +4 -10
  80. data/templates/addons/devise/app/controllers/users/registrations_controller.rb +62 -0
  81. data/templates/addons/devise/app/views/devise/registrations/edit.html.erb +40 -54
  82. data/templates/addons/devise/app/views/devise/registrations/new.html.erb +32 -43
  83. data/templates/addons/devise/app/views/layouts/_alerts.html.erb +2 -0
  84. data/{after_templates/rag → templates/addons}/devise/config/initializers/devise_turbo.rb +1 -1
  85. data/templates/thor_task/profile/after_template.rb +1 -1
  86. data/templates/thor_task/profile/app/views/layouts/_footer.html.erb.tt +1 -3
  87. data/templates/thor_task/profile/app/views/layouts/_navbar.html.erb +5 -8
  88. data/templates/thor_task/profile/app/views/layouts/application.html.erb.tt +8 -2
  89. data/templates/thor_task/profile/db/seeds.rb +2 -11
  90. metadata +67 -18
  91. data/after_templates/rag/devise/application.html.erb +0 -20
  92. data/lib/rails_app_generator/addons/devise_old.rb +0 -61
  93. data/tasks/gem_info.rb +0 -47
  94. data/templates/addons/devise/app/views/devise/confirmations/new.html.erb +0 -24
  95. data/templates/addons/devise/app/views/devise/passwords/edit.html.erb +0 -34
  96. data/templates/addons/devise/app/views/devise/passwords/new.html.erb +0 -23
  97. data/templates/addons/devise/app/views/devise/sessions/new.html.erb +0 -33
  98. data/templates/addons/devise/app/views/devise/shared/_error_messages.html.erb +0 -15
  99. data/templates/addons/devise/app/views/devise/shared/_form_wrap.html.erb +0 -5
  100. data/templates/addons/devise/app/views/devise/shared/_links.html.erb +0 -25
  101. data/templates/addons/devise/app/views/devise/unlocks/new.html.erb +0 -22
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RailsAppGenerator
4
- # Custom add-ons for RailsAppGenerator
5
- module AddOns
6
- # Add Devise authentication to rails application
7
- class Devise < RailsAppGenerator::Addon
8
- depends_on :active_record
9
-
10
- required_gem gem.version('devise', '4.8.1', 'Flexible authentication solution for Rails with Warden')
11
-
12
- # Requires Testing
13
- def apply
14
- generate('devise:install', capture: true)
15
- generate(:devise, 'User', 'name', 'admin:boolean', capture: true)
16
-
17
- directory('app/views/devise', 'app/views/devise') if uses?(:views)
18
-
19
- generate('devise:controllers', 'users', capture: true)
20
-
21
- update_development_rb
22
- gsub_file 'config/initializers/devise.rb', /# config.pepper = .+/, " # config.pepper = 'pepper'"
23
- gsub_file 'config/initializers/devise.rb', /# config.secret_key = .+/, " # config.secret_key = 'secret_key'"
24
- db_changes
25
- create_seed
26
- end
27
-
28
- private
29
-
30
- def update_development_rb
31
- inject_into_file 'config/environments/development.rb', before: /^end/ do
32
- <<-RUBY
33
-
34
- # Enable devise mailer
35
- config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
36
- RUBY
37
- end
38
- end
39
-
40
- def db_changes
41
- in_root do
42
- migration = Dir.glob('db/migrate/*').max_by { |f| File.mtime(f) }
43
- gsub_file migration, /:admin/, ':admin, default: false'
44
- end
45
- end
46
-
47
- def create_seed
48
- insert_into_file 'db/seeds.rb' do
49
- <<~RUBY
50
- # Create an initial admin user for development
51
- User.find_or_create_by(email: "admin@admin.com") do |user|
52
- user.name = 'Admin'
53
- user.password = 'password'
54
- user.admin = true
55
- end
56
- RUBY
57
- end
58
- end
59
- end
60
- end
61
- end
data/tasks/gem_info.rb DELETED
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Retrieve GemInfo from RubyGems.org
4
- class GemInfo
5
- attr_reader :name
6
- attr_reader :version
7
- attr_reader :description
8
-
9
- def initialize(name, version, description)
10
- @name = name
11
- @version = version
12
- @description = description
13
- end
14
-
15
- def debug
16
- puts "name: #{name}"
17
- puts "version: #{version}"
18
- puts "description: #{description}"
19
- end
20
-
21
- class << self
22
- def get(name)
23
- gem_info = query_ruby_gems(name)
24
-
25
- return gem_info if gem_info
26
-
27
- return query_ruby_gems(name.gsub('_', '-')) if name.include?('_')
28
- return query_ruby_gems(name.gsub('-', '_')) if name.include?('-')
29
-
30
- abort "Cannot find GEM (#{name}) on RubyGems.org"
31
- end
32
-
33
- private
34
-
35
- def query_ruby_gems(name)
36
- link = "https://rubygems.org/api/v1/gems/#{name.downcase}.json"
37
- info = Net::HTTP.get(URI.parse(link))
38
- json = JSON.parse(info)
39
-
40
- new(json['name'], json['version'], json['info'])
41
- rescue SocketError
42
- abort 'Internet connection cannot be established to RubyGems.org'
43
- rescue JSON::ParserError
44
- nil
45
- end
46
- end
47
- end
@@ -1,24 +0,0 @@
1
- <% content_for :devise_form do %>
2
-
3
- <h2 class="pt-4 mb-8 text-4xl font-bold heading">Resend confirmation instructions</h2>
4
-
5
- <%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %>
6
- <%= render "devise/shared/error_messages", resource: resource %>
7
-
8
- <div class="input-group">
9
- <%= f.label :email, class: "label" %>
10
- <%= f.email_field :email, autofocus: true, autocomplete: "email", value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email), class: "input" %>
11
- </div>
12
-
13
- <div class="input-group">
14
- <%= f.submit "Resend confirmation instructions", class: "btn btn-default" %>
15
- </div>
16
- <% end %>
17
-
18
- <hr class="mt-6 border" />
19
-
20
- <%= render "devise/shared/links" %>
21
-
22
- <% end %>
23
-
24
- <%= render "devise/shared/form_wrap" %>
@@ -1,34 +0,0 @@
1
- <% content_for :devise_form do %>
2
- <h2 class="pt-4 mb-8 text-4xl font-bold heading">Change your password</h2>
3
-
4
- <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
5
- <%= render "devise/shared/error_messages", resource: resource %>
6
- <%= f.hidden_field :reset_password_token %>
7
-
8
- <div class="input-group">
9
- <div class="flex">
10
- <%= f.label :password, "New password", class:"label" %>
11
- <% if @minimum_password_length %>
12
- <em>(<%= @minimum_password_length %> characters minimum)</em>
13
- <% end %>
14
- </div>
15
- <%= f.password_field :password, autofocus: true, autocomplete: "new-password", class: "input" %>
16
- </div>
17
-
18
- <div class="input-group">
19
- <%= f.label :password_confirmation, "Confirm new password", class: "label" %>
20
- <%= f.password_field :password_confirmation, autocomplete: "off", class: "input" %>
21
- </div>
22
-
23
- <div class="input-group">
24
- <%= f.submit "Change my password", class: "btn btn-default" %>
25
- </div>
26
- <% end %>
27
-
28
- <hr class="mt-6 border" />
29
-
30
- <%= render "devise/shared/links" %>
31
-
32
- <% end %>
33
-
34
- <%= render "devise/shared/form_wrap" %>
@@ -1,23 +0,0 @@
1
- <% content_for :devise_form do %>
2
-
3
- <h2 class="pt-4 mb-8 text-4xl font-bold heading">Forgot your password?</h2>
4
-
5
- <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
6
- <%= render "devise/shared/error_messages", resource: resource %>
7
-
8
- <div class="input-group">
9
- <%= f.label :email, class: "label" %>
10
- <%= f.email_field :email, autofocus: true, autocomplete: "email", class: "input" %>
11
- </div>
12
-
13
- <div class="input-group">
14
- <%= f.submit "Send me reset password instructions", class: "btn btn-default" %>
15
- </div>
16
- <% end %>
17
-
18
- <hr class="mt-6 border" />
19
-
20
- <%= render "devise/shared/links" %>
21
- <% end %>
22
-
23
- <%= render "devise/shared/form_wrap" %>
@@ -1,33 +0,0 @@
1
- <% content_for :devise_form do %>
2
- <h2 class="pt-4 mb-8 text-4xl font-bold heading">Log in</h2>
3
- <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
4
-
5
- <div class="input-group">
6
- <%= f.label :email, class:"label" %>
7
- <%= f.email_field :email, autofocus: true, autocomplete: "email", class: "input" %>
8
- </div>
9
-
10
- <div class="input-group">
11
- <%= f.label :password, class:"label" %>
12
- <%= f.password_field :password, autocomplete: "current-password", class: "input" %>
13
- </div>
14
-
15
- <div class="mb-6 input-checkbox">
16
- <% if devise_mapping.rememberable? -%>
17
- <%= f.check_box :remember_me %>
18
- <%= f.label :remember_me, class:"label" %>
19
- <% end -%>
20
- </div>
21
-
22
- <div class="input-group">
23
- <%= f.submit "Log in", class: "btn btn-default" %>
24
- </div>
25
-
26
- <% end %>
27
-
28
- <hr class="mt-6 border" />
29
-
30
- <%= render "devise/shared/links" %>
31
- <% end %>
32
-
33
- <%= render "devise/shared/form_wrap" %>
@@ -1,15 +0,0 @@
1
- <% if resource.errors.any? %>
2
- <div id="error_explanation" class="text-red-500">
3
- <h2 class="font-semibold text-lg">
4
- <%= I18n.t("errors.messages.not_saved",
5
- count: resource.errors.count,
6
- resource: resource.class.model_name.human.downcase)
7
- %>
8
- </h2>
9
- <ul class="list-none p-0">
10
- <% resource.errors.full_messages.each do |message| %>
11
- <li><%= message %></li>
12
- <% end %>
13
- </ul>
14
- </div>
15
- <% end %>
@@ -1,5 +0,0 @@
1
- <div class="w-full max-w-md mx-auto my-8">
2
- <div class="bg-white border border-gray-300 rounded-lg px-8 pt-6 pb-8">
3
- <%= yield :devise_form %>
4
- </div>
5
- </div>
@@ -1,25 +0,0 @@
1
- <%- if controller_name != 'sessions' %>
2
- <div class="flex flex-wrap"><%= link_to "Log in", new_session_path(resource_name), class: "block py-2 text-gray-700 underline hover:no-underline" %></div>
3
- <% end -%>
4
-
5
- <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
6
- <%= link_to "Sign up", new_registration_path(resource_name), class: "block py-2 text-gray-700 underline hover:no-underline" %>
7
- <% end -%>
8
-
9
- <%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
10
- <%= link_to "Forgot your password?", new_password_path(resource_name), class: "block py-2 text-gray-700 underline hover:no-underline" %>
11
- <% end -%>
12
-
13
- <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
14
- <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name), class: "block py-2 text-gray-700 underline hover:no-underline"%>
15
- <% end -%>
16
-
17
- <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
18
- <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name), class: "block py-2 text-gray-700 underline hover:no-underline" %>
19
- <% end -%>
20
-
21
- <%- if devise_mapping.omniauthable? %>
22
- <%- resource_class.omniauth_providers.each do |provider| %>
23
- <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider), class: "btn btn-default my-4" %>
24
- <% end -%>
25
- <% end -%>
@@ -1,22 +0,0 @@
1
- <% content_for :devise_form do %>
2
- <h2 class="pt-4 mb-8 text-4xl font-bold heading">Resend unlock instructions</h2>
3
-
4
- <%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %>
5
- <%= render "devise/shared/error_messages", resource: resource %>
6
-
7
- <div class="input-group">
8
- <%= f.label :email, class: "label" %>
9
- <%= f.email_field :email, autofocus: true, autocomplete: "email", class: "input" %>
10
- </div>
11
-
12
- <div class="input-group">
13
- <%= f.submit "Resend unlock instructions", class: "btn btn-default" %>
14
- </div>
15
- <% end %>
16
-
17
- <hr class="mt-6 border"/>
18
-
19
- <%= render "devise/shared/links" %>
20
- <% end %>
21
-
22
- <%= render "devise/shared/form_wrap" %>