rails_app_generator 0.2.25 → 0.2.28
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/after_templates/addons/devise_masquerade/_.rb +7 -7
- data/after_templates/addons/devise_masquerade/app/views/home/index.html.erb +2 -6
- data/after_templates/addons/pretender/_.rb +36 -0
- data/after_templates/addons/pretender/app/controllers/application_controller.rb +3 -0
- data/after_templates/addons/pretender/app/controllers/home_controller.rb +4 -0
- data/after_templates/addons/pretender/app/models/user.rb +15 -0
- data/after_templates/addons/pretender/app/views/home/index.html.erb +67 -0
- data/after_templates/addons/pretender/app/views/layouts/_footer.html.erb +1 -0
- data/after_templates/addons/pretender/app/views/layouts/_navbar.html.erb +8 -0
- data/after_templates/addons/pretender/app/views/layouts/application.html.erb +58 -0
- data/after_templates/addons/pretender/db/seeds.rb +3 -0
- data/docs/last_run/app_generator_class.json +13 -5
- data/docs/last_run/app_generator_data.json +4 -3
- data/docs/last_run/rails_options_class.json +11 -3
- data/docs/last_run/rails_options_data.json +5 -5
- data/lib/rails_app_generator/addon.rb +6 -0
- data/lib/rails_app_generator/addons/devise.rb +9 -2
- data/lib/rails_app_generator/addons/devise_masquerade.rb +0 -6
- data/lib/rails_app_generator/addons/pretender.rb +18 -0
- data/lib/rails_app_generator/addons/rolify.rb +37 -0
- data/lib/rails_app_generator/app_generator.rb +3 -1
- data/lib/rails_app_generator/rag_initializer.rb +3 -1
- data/lib/rails_app_generator/version.rb +1 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/profiles/addons/pretender.json +16 -0
- data/templates/addons/pretender/app/controllers/pretender_controller.rb +14 -0
- data/templates/thor_task/profile/after_template.rb +22 -16
- data/templates/thor_task/profile/profile.json.tt +1 -1
- metadata +14 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99e66536aa70b641a6bd5186f7aaf1416befa8790c29a6112c858471ae733c4b
|
4
|
+
data.tar.gz: b820d4051f8ff1ad8560520d52b4e5d9cf7303278b2bae4e9ed624b3dfb1efc1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4461f08a275460d565a8ec5fc22e7e8e806bd42d09dfd9ee5e6291927ce4db23b1056a12146a51c218714340d87a6fcd9ddf968a7cb027539fcbe5766268435b
|
7
|
+
data.tar.gz: e7a7977c103c67bb38b512c8f6bfbd3384bd3b4100cca4c2f14a0c0743f261c0e7a2b6b89f47f93eb59c3475bb1cc72b975b644de3794b44f293b02a793261cb
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
## [0.2.27](https://github.com/klueless-io/rails_app_generator/compare/v0.2.26...v0.2.27) (2022-08-17)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add pretender profile ([25abb2b](https://github.com/klueless-io/rails_app_generator/commit/25abb2b5b4a187db13d62d9747b7a8e283298a88))
|
7
|
+
* add pretender profile ([5d24dfc](https://github.com/klueless-io/rails_app_generator/commit/5d24dfcd5f0420e7e1004a30de33e9003f1e9d5c))
|
8
|
+
|
9
|
+
## [0.2.26](https://github.com/klueless-io/rails_app_generator/compare/v0.2.25...v0.2.26) (2022-08-17)
|
10
|
+
|
11
|
+
|
12
|
+
### Bug Fixes
|
13
|
+
|
14
|
+
* add pretender addon ([e0bda54](https://github.com/klueless-io/rails_app_generator/commit/e0bda54cc74da230a579ff1219b9b2f2172936d1))
|
15
|
+
|
16
|
+
## [0.2.25](https://github.com/klueless-io/rails_app_generator/compare/v0.2.24...v0.2.25) (2022-08-17)
|
17
|
+
|
18
|
+
|
19
|
+
### Bug Fixes
|
20
|
+
|
21
|
+
* add devise_masquerade profile ([d34668c](https://github.com/klueless-io/rails_app_generator/commit/d34668cf2af1103ebee888ef3c78498e8323b1a5))
|
22
|
+
|
1
23
|
## [0.2.24](https://github.com/klueless-io/rails_app_generator/compare/v0.2.23...v0.2.24) (2022-08-16)
|
2
24
|
|
3
25
|
|
@@ -15,13 +15,6 @@ after_bundle do
|
|
15
15
|
setup_db
|
16
16
|
end
|
17
17
|
|
18
|
-
def setup_db
|
19
|
-
template 'db/seeds.rb' , 'db/seeds.rb'
|
20
|
-
|
21
|
-
db_migrate
|
22
|
-
db_seed
|
23
|
-
end
|
24
|
-
|
25
18
|
def setup_customizations
|
26
19
|
route("root 'home#index'")
|
27
20
|
|
@@ -34,3 +27,10 @@ def setup_customizations
|
|
34
27
|
directory "app/views"
|
35
28
|
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
36
29
|
end
|
30
|
+
|
31
|
+
def setup_db
|
32
|
+
template 'db/seeds.rb' , 'db/seeds.rb'
|
33
|
+
|
34
|
+
db_migrate
|
35
|
+
db_seed
|
36
|
+
end
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
<p><b class='alert'>Warning!</b> If <code>masquerade?</code> is never returning <code>true</code> then ensure you have turned on caching in development using <code>rails dev:cache</code> </p>
|
6
6
|
|
7
|
-
<pre><code>
|
7
|
+
<pre><code>true_user => <%= current_user ? true_user.name : 'NOT SIGNED IN' %></code></pre>
|
8
8
|
|
9
9
|
<p>Sign in with an <b>Admin</b> user and then impersonate other users</p>
|
10
10
|
|
@@ -46,7 +46,7 @@
|
|
46
46
|
<% if current_user.user? %>
|
47
47
|
Cannot masquerade
|
48
48
|
<% elsif user.user? %>
|
49
|
-
<%= link_to user.name.capitalize, masquerade_path(user) %>
|
49
|
+
<%= link_to user.name.capitalize, masquerade_path(user), data: { turbo_method: :post } %>
|
50
50
|
<% else %>
|
51
51
|
|
52
52
|
<% end %>
|
@@ -60,7 +60,3 @@
|
|
60
60
|
</tr>
|
61
61
|
<% end %>
|
62
62
|
</table>
|
63
|
-
|
64
|
-
<% if current_user&.user? && !user_masquerade? %>
|
65
|
-
<p class='alert'>Sign in as an admin user</p>
|
66
|
-
<% end %>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Log in as another user in Rails
|
4
|
+
#
|
5
|
+
# exe/rag addons/pretender
|
6
|
+
|
7
|
+
self.local_template_path = File.dirname(__FILE__)
|
8
|
+
|
9
|
+
gac 'base rails 7 image created'
|
10
|
+
|
11
|
+
prepare_environment
|
12
|
+
|
13
|
+
after_bundle do
|
14
|
+
setup_customizations
|
15
|
+
setup_db
|
16
|
+
end
|
17
|
+
|
18
|
+
def setup_customizations
|
19
|
+
route("root 'home#index'")
|
20
|
+
|
21
|
+
force_copy
|
22
|
+
|
23
|
+
add_controller('home', 'index')
|
24
|
+
|
25
|
+
directory "app/controllers"
|
26
|
+
directory "app/models"
|
27
|
+
directory "app/views"
|
28
|
+
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
29
|
+
end
|
30
|
+
|
31
|
+
def setup_db
|
32
|
+
template 'db/seeds.rb' , 'db/seeds.rb'
|
33
|
+
|
34
|
+
db_migrate
|
35
|
+
db_seed
|
36
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class User < ApplicationRecord
|
2
|
+
after_initialize :set_default_role, if: :new_record?
|
3
|
+
|
4
|
+
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable
|
5
|
+
|
6
|
+
has_many :posts
|
7
|
+
|
8
|
+
enum role: { user: 0, moderator: 1, admin: 9 }
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def set_default_role
|
13
|
+
self.role ||= :user
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
<h1>Pretender</h1>
|
2
|
+
|
3
|
+
<h4>Log in as another user in Rails</h4>
|
4
|
+
|
5
|
+
<pre><code>true_user => <%= current_user ? true_user.name : 'NOT SIGNED IN' %></code></pre>
|
6
|
+
|
7
|
+
<p>Sign in with an <b>Admin</b> user and then impersonate other users</p>
|
8
|
+
|
9
|
+
<h3>Sample users and passwords</h3>
|
10
|
+
|
11
|
+
<% if current_user %>
|
12
|
+
<% if current_user.admin? %>
|
13
|
+
<h1 class='admin'><%= current_user.name.capitalize %> - Admininstrator</h1>
|
14
|
+
<% elsif current_user.user? %>
|
15
|
+
<h1 class='user'><%= current_user.name.capitalize %> - User</h1>
|
16
|
+
<% end %>
|
17
|
+
<% else %>
|
18
|
+
<h1 class='not-signed-in'>Not currently signed in</h1>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
<table style='width: 600px;'>
|
22
|
+
<tr>
|
23
|
+
<th>Name</th>
|
24
|
+
<th>Email</th>
|
25
|
+
<th>Role</th>
|
26
|
+
<% if current_user %>
|
27
|
+
<th>Impersonate</th>
|
28
|
+
<% else %>
|
29
|
+
<th>Password</th>
|
30
|
+
<% end %>
|
31
|
+
</tr>
|
32
|
+
|
33
|
+
<% if current_user != true_user %>
|
34
|
+
You (<%= true_user.name %>) are signed in as <%= current_user.name %>
|
35
|
+
<% end %>
|
36
|
+
|
37
|
+
<% User.all.each do |user| %>
|
38
|
+
<tr>
|
39
|
+
<td><%= user.name %></td>
|
40
|
+
<td><%= user.email %></td>
|
41
|
+
<td><%= user.role %></td>
|
42
|
+
<td>
|
43
|
+
<% if current_user %>
|
44
|
+
<% if current_user.admin? %>
|
45
|
+
<% if user.admin? && current_user != true_user %>
|
46
|
+
<%= link_to "Back to #{user.name.capitalize}", stop_impersonating_user_path, data: { turbo_method: :post } %>
|
47
|
+
<% elsif user.user? %>
|
48
|
+
<%= link_to user.name.capitalize, impersonate_user_path(user), data: { turbo_method: :post } %>
|
49
|
+
<% end %>
|
50
|
+
<% else %>
|
51
|
+
<% if user.admin? && current_user != true_user %>
|
52
|
+
<%= link_to "Back to #{user.name.capitalize}", stop_impersonating_user_path, data: { turbo_method: :post } %>
|
53
|
+
<% elsif current_user == true_user %>
|
54
|
+
N/A
|
55
|
+
<% else %>
|
56
|
+
|
57
|
+
<% end %>
|
58
|
+
<% end %>
|
59
|
+
<% else %>
|
60
|
+
password
|
61
|
+
<% end %>
|
62
|
+
|
63
|
+
</td>
|
64
|
+
</td>
|
65
|
+
</tr>
|
66
|
+
<% end %>
|
67
|
+
</table>
|
@@ -0,0 +1 @@
|
|
1
|
+
<hr />
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%= link_to 'Home', root_path %>
|
2
|
+
<% if current_user %>
|
3
|
+
| <%= link_to 'Sign Out', destroy_user_session_path, data: { turbo_method: :delete } %>
|
4
|
+
| Current User: <b><%= current_user.name.capitalize %></b>
|
5
|
+
| True User: <b><%= true_user.name.capitalize %></b>
|
6
|
+
<% else %>
|
7
|
+
| <%= link_to 'Sign In', new_user_session_path %>
|
8
|
+
<% end%>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= camelized %></title>
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
6
|
+
<%%= csrf_meta_tags %>
|
7
|
+
<%%= csp_meta_tag %>
|
8
|
+
|
9
|
+
<%- if options[:skip_hotwire] || options[:skip_javascript] -%>
|
10
|
+
<%%= stylesheet_link_tag "application" %>
|
11
|
+
<%- else -%>
|
12
|
+
<%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
|
13
|
+
<%- end -%>
|
14
|
+
<%%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>
|
15
|
+
<style>
|
16
|
+
.notice {
|
17
|
+
color: green;
|
18
|
+
}
|
19
|
+
.alert {
|
20
|
+
color: red;
|
21
|
+
}
|
22
|
+
table {
|
23
|
+
border-collapse: collapse;
|
24
|
+
}
|
25
|
+
th, td {
|
26
|
+
border: 1px solid #ccc;
|
27
|
+
padding: 5px;
|
28
|
+
}
|
29
|
+
.admin {
|
30
|
+
background-color: pink;
|
31
|
+
}
|
32
|
+
.user {
|
33
|
+
background-color: lightgreen;
|
34
|
+
}
|
35
|
+
.not-signed-in {
|
36
|
+
background-color: lightgrey;
|
37
|
+
}
|
38
|
+
.admin, .user, .not-signed-in {
|
39
|
+
text-align: center;
|
40
|
+
}
|
41
|
+
</style>
|
42
|
+
</head>
|
43
|
+
|
44
|
+
<body>
|
45
|
+
<header>
|
46
|
+
<%%= render 'layouts/navbar' %>
|
47
|
+
<hr />
|
48
|
+
<%%= render 'layouts/alerts' %>
|
49
|
+
</header>
|
50
|
+
<main>
|
51
|
+
<%%= yield %>
|
52
|
+
</main>
|
53
|
+
<footer>
|
54
|
+
<%%= render 'layouts/footer' %>
|
55
|
+
</footer>
|
56
|
+
</body>
|
57
|
+
</html>
|
58
|
+
|
@@ -0,0 +1,3 @@
|
|
1
|
+
User.create(email: 'david@site.com', name: 'david', password: 'password', password_confirmation: 'password', role: :admin)
|
2
|
+
User.create(email: 'james@site.com', name: 'james', password: 'password', password_confirmation: 'password')
|
3
|
+
User.create(email: 'sally@site.com', name: 'sally', password: 'password', password_confirmation: 'password')
|
@@ -60,8 +60,9 @@
|
|
60
60
|
"minimal_css_library",
|
61
61
|
"add_mini_magick",
|
62
62
|
"add_motor_admin",
|
63
|
-
"add_public_suffix",
|
64
63
|
"add_phony_rails",
|
64
|
+
"add_pretender",
|
65
|
+
"add_public_suffix",
|
65
66
|
"add_rails_html_sanitizer",
|
66
67
|
"add_redcarpet",
|
67
68
|
"add_rubocop",
|
@@ -489,15 +490,22 @@
|
|
489
490
|
"required": false
|
490
491
|
},
|
491
492
|
{
|
492
|
-
"name": "
|
493
|
-
"description": "Indicates when to generate add
|
493
|
+
"name": "add_phony_rails",
|
494
|
+
"description": "Indicates when to generate add phony rails",
|
494
495
|
"type": "boolean",
|
495
496
|
"default": false,
|
496
497
|
"required": false
|
497
498
|
},
|
498
499
|
{
|
499
|
-
"name": "
|
500
|
-
"description": "Indicates when to generate add
|
500
|
+
"name": "add_pretender",
|
501
|
+
"description": "Indicates when to generate add pretender",
|
502
|
+
"type": "boolean",
|
503
|
+
"default": false,
|
504
|
+
"required": false
|
505
|
+
},
|
506
|
+
{
|
507
|
+
"name": "add_public_suffix",
|
508
|
+
"description": "Indicates when to generate add public suffix",
|
501
509
|
"type": "boolean",
|
502
510
|
"default": false,
|
503
511
|
"required": false
|
@@ -38,7 +38,7 @@
|
|
38
38
|
"add_browser": false,
|
39
39
|
"add_chartkick": false,
|
40
40
|
"add_devise": true,
|
41
|
-
"add_devise_masquerade":
|
41
|
+
"add_devise_masquerade": false,
|
42
42
|
"add_dotenv": false,
|
43
43
|
"add_faker": false,
|
44
44
|
"add_groupdate": false,
|
@@ -50,12 +50,13 @@
|
|
50
50
|
"minimal_css_library": "water.css",
|
51
51
|
"add_mini_magick": false,
|
52
52
|
"add_motor_admin": false,
|
53
|
-
"add_public_suffix": false,
|
54
53
|
"add_phony_rails": false,
|
54
|
+
"add_pretender": true,
|
55
|
+
"add_public_suffix": false,
|
55
56
|
"add_rails_html_sanitizer": false,
|
56
57
|
"add_redcarpet": false,
|
57
58
|
"add_rubocop": false,
|
58
59
|
"add_twilio_ruby": false,
|
59
|
-
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/
|
60
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/pretender/_.rb"
|
60
61
|
}
|
61
62
|
}
|
@@ -60,8 +60,9 @@
|
|
60
60
|
"minimal_css_library",
|
61
61
|
"add_mini_magick",
|
62
62
|
"add_motor_admin",
|
63
|
-
"add_public_suffix",
|
64
63
|
"add_phony_rails",
|
64
|
+
"add_pretender",
|
65
|
+
"add_public_suffix",
|
65
66
|
"add_rails_html_sanitizer",
|
66
67
|
"add_redcarpet",
|
67
68
|
"add_rubocop",
|
@@ -489,14 +490,21 @@
|
|
489
490
|
"required": false
|
490
491
|
},
|
491
492
|
{
|
492
|
-
"name": "
|
493
|
+
"name": "add_phony_rails",
|
493
494
|
"description": "",
|
494
495
|
"type": "boolean",
|
495
496
|
"default": false,
|
496
497
|
"required": false
|
497
498
|
},
|
498
499
|
{
|
499
|
-
"name": "
|
500
|
+
"name": "add_pretender",
|
501
|
+
"description": "",
|
502
|
+
"type": "boolean",
|
503
|
+
"default": false,
|
504
|
+
"required": false
|
505
|
+
},
|
506
|
+
{
|
507
|
+
"name": "add_public_suffix",
|
500
508
|
"description": "",
|
501
509
|
"type": "boolean",
|
502
510
|
"default": false,
|
@@ -7,7 +7,7 @@
|
|
7
7
|
"quiet": false,
|
8
8
|
"skip": false,
|
9
9
|
"ruby": "/Users/davidcruwys/.asdf/installs/ruby/2.7.6/bin/ruby",
|
10
|
-
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/
|
10
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/pretender/_.rb",
|
11
11
|
"database": "sqlite3",
|
12
12
|
"skip_git": true,
|
13
13
|
"skip_keeps": false,
|
@@ -48,7 +48,7 @@
|
|
48
48
|
"add_browser": false,
|
49
49
|
"add_chartkick": false,
|
50
50
|
"add_devise": true,
|
51
|
-
"add_devise_masquerade":
|
51
|
+
"add_devise_masquerade": false,
|
52
52
|
"add_dotenv": false,
|
53
53
|
"add_faker": false,
|
54
54
|
"add_groupdate": false,
|
@@ -60,12 +60,12 @@
|
|
60
60
|
"minimal_css_library": "water.css",
|
61
61
|
"add_mini_magick": false,
|
62
62
|
"add_motor_admin": false,
|
63
|
-
"add_public_suffix": false,
|
64
63
|
"add_phony_rails": false,
|
64
|
+
"add_pretender": true,
|
65
|
+
"add_public_suffix": false,
|
65
66
|
"add_rails_html_sanitizer": false,
|
66
67
|
"add_redcarpet": false,
|
67
68
|
"add_rubocop": false,
|
68
|
-
"add_twilio_ruby": false
|
69
|
-
"notes": "there is a name conflict if the rails application has the same name as the gem and so devise_masquerade has been renamed to devise_masquerade_sample"
|
69
|
+
"add_twilio_ruby": false
|
70
70
|
}
|
71
71
|
}
|
@@ -94,6 +94,12 @@ module RailsAppGenerator
|
|
94
94
|
::FileUtils.mv(source, target)
|
95
95
|
end
|
96
96
|
# rubocop:enable Metrics/AbcSize
|
97
|
+
|
98
|
+
def bundle_install
|
99
|
+
Util.bundler_environment(environment_style: :unbundled_env) do
|
100
|
+
run('bundle install')
|
101
|
+
end
|
102
|
+
end
|
97
103
|
end
|
98
104
|
# rubocop:enable Metrics/BlockLength
|
99
105
|
|
@@ -10,10 +10,11 @@ module RailsAppGenerator
|
|
10
10
|
required_gem gem.version('devise', '4.8.1', 'Flexible authentication solution for Rails with Warden')
|
11
11
|
|
12
12
|
def apply
|
13
|
+
bundle_install
|
14
|
+
|
13
15
|
generate('devise:install', capture: true)
|
14
|
-
generate(:devise, 'User', 'name', 'role:integer', capture: true)
|
15
16
|
|
16
|
-
|
17
|
+
setup_db
|
17
18
|
|
18
19
|
add_trackable if option?(:devise_has_trackable)
|
19
20
|
add_confirmable if option?(:devise_has_confirmable)
|
@@ -39,6 +40,12 @@ module RailsAppGenerator
|
|
39
40
|
|
40
41
|
private
|
41
42
|
|
43
|
+
def setup_db
|
44
|
+
generate(:devise, 'User', 'name', 'role:integer', capture: true)
|
45
|
+
|
46
|
+
update_migration
|
47
|
+
end
|
48
|
+
|
42
49
|
def update_migration
|
43
50
|
in_root do
|
44
51
|
migration = Dir.glob('db/migrate/*').max_by { |f| File.mtime(f) }
|
@@ -12,12 +12,6 @@ module RailsAppGenerator
|
|
12
12
|
def apply
|
13
13
|
# NOTE: update_routes_with_devise_controllers is being handled in devise.rb addon
|
14
14
|
end
|
15
|
-
|
16
|
-
# def update_routes_with_devise_controllers
|
17
|
-
# in_root do
|
18
|
-
# gsub_file 'config/routes.rb', /registrations: "users\/registrations"/, 'registrations: "users/registrations", masquerades: "users/masquerades"'
|
19
|
-
# end
|
20
|
-
# end
|
21
15
|
end
|
22
16
|
end
|
23
17
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsAppGenerator
|
4
|
+
# Custom add-ons for RailsAppGenerator
|
5
|
+
module AddOns
|
6
|
+
# Add Pretender to rails application
|
7
|
+
class Pretender < RailsAppGenerator::Addon
|
8
|
+
required_gem gem.version('pretender', '0.4.0', 'Log in as another user in Rails')
|
9
|
+
|
10
|
+
def apply
|
11
|
+
copy_file('app/controllers/pretender_controller.rb', 'app/controllers/pretender_controller.rb')
|
12
|
+
|
13
|
+
route("post 'pretender/:user_id/impersonate' , to: 'pretender#impersonate' , :as => :impersonate_user")
|
14
|
+
route("post 'pretender/stop_impersonating' , to: 'pretender#stop_impersonating' , :as => :stop_impersonating_user")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsAppGenerator
|
4
|
+
# Custom add-ons for RailsAppGenerator
|
5
|
+
module AddOns
|
6
|
+
# Add Rolify to rails application
|
7
|
+
class Rolify < RailsAppGenerator::Addon
|
8
|
+
required_gem gem.version('rolify', '6.0.0', 'Role management library with resource scoping.')
|
9
|
+
|
10
|
+
def apply
|
11
|
+
# bundle_install
|
12
|
+
generate('rolify', 'role', 'user')
|
13
|
+
|
14
|
+
say 'Setting up Rolify'
|
15
|
+
# template('rolify_template.rb', 'target/rolify.rb', force: true)
|
16
|
+
# template('app/javascript/stylesheets/components.scss')
|
17
|
+
# create_file('target/rolify.rb', 'put your content here')
|
18
|
+
# directory 'app/template', 'app/target', force: true
|
19
|
+
# empty_directory 'app/target'
|
20
|
+
# inject_into_file('app/application.js', "some content")
|
21
|
+
# rails_command('tailwindcss:install')
|
22
|
+
end
|
23
|
+
|
24
|
+
def before_template
|
25
|
+
say 'Setting up Rolify - before custom template'
|
26
|
+
end
|
27
|
+
|
28
|
+
def before_bundle
|
29
|
+
say 'Setting up Rolify - before bundle install'
|
30
|
+
end
|
31
|
+
|
32
|
+
def after_bundle
|
33
|
+
say 'Setting up Rolify - after bundle install'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -192,12 +192,14 @@ module RailsAppGenerator
|
|
192
192
|
add_if(:minimal_css) # tested (this is NOT a GEM)
|
193
193
|
add_if(:mini_magick) # tested
|
194
194
|
add_if(:motor_magick) # tested
|
195
|
-
add_if(:public_suffix) # tested
|
196
195
|
add_if(:phony_rails) # tested
|
196
|
+
add_if(:pretender) # tested
|
197
|
+
add_if(:public_suffix) # tested
|
197
198
|
add_if(:pundit) # TODO: needs testing
|
198
199
|
add_if(:rails_html_sanitizer) # tested
|
199
200
|
add_if(:rails_app_generator) # TODO: needs testing
|
200
201
|
add_if(:redcarpet) # tested
|
202
|
+
add_if(:rolify) # tested
|
201
203
|
add_if(:services) # TODO: needs testing
|
202
204
|
add_if(:shoulda) # TODO: needs testing
|
203
205
|
add_if(:sidekiq) # TODO: needs testing
|
@@ -128,13 +128,15 @@ KConfig.configure do |config|
|
|
128
128
|
rag.add_option :minimal_css_library , type: :string, default: 'water.css', description: "Minimal CSS library to get you started. [options: water.css (default)]"
|
129
129
|
rag.add_option :add_mini_magick , type: :boolean, default: false
|
130
130
|
rag.add_option :add_motor_admin , type: :boolean, default: false
|
131
|
-
rag.add_option :add_public_suffix , type: :boolean, default: false
|
132
131
|
rag.add_option :add_phony_rails , type: :boolean, default: false
|
132
|
+
rag.add_option :add_pretender , type: :boolean, default: false
|
133
|
+
rag.add_option :add_public_suffix , type: :boolean, default: false
|
133
134
|
# pundit
|
134
135
|
rag.add_option :add_rails_html_sanitizer , type: :boolean, default: false
|
135
136
|
# rails_app_generator
|
136
137
|
# RANSACK
|
137
138
|
rag.add_option :add_redcarpet , type: :boolean, default: false
|
139
|
+
rag.add_option :add_rolify , type: :boolean, default: false
|
138
140
|
# services
|
139
141
|
# shoulda
|
140
142
|
# sidekiq
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "rails_app_generator",
|
3
|
-
"version": "0.2.
|
3
|
+
"version": "0.2.28",
|
4
4
|
"lockfileVersion": 2,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "rails_app_generator",
|
9
|
-
"version": "0.2.
|
9
|
+
"version": "0.2.28",
|
10
10
|
"dependencies": {
|
11
11
|
"daisyui": "^2.20.0"
|
12
12
|
},
|
data/package.json
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
{
|
2
|
+
"args": {
|
3
|
+
"app_path": "r7_pretender",
|
4
|
+
"destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons"
|
5
|
+
},
|
6
|
+
"opts": {
|
7
|
+
"skip_git": true,
|
8
|
+
"skip_test": true,
|
9
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/pretender/_.rb",
|
10
|
+
"javascript": "esbuild",
|
11
|
+
"add_annotate": true,
|
12
|
+
"add_devise": true,
|
13
|
+
"add_pretender": true,
|
14
|
+
"add_minimal_css": true
|
15
|
+
}
|
16
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class PretenderController < ApplicationController
|
2
|
+
before_action :authenticate_user!
|
3
|
+
|
4
|
+
def impersonate
|
5
|
+
user = User.find(params[:user_id])
|
6
|
+
impersonate_user(user)
|
7
|
+
redirect_to root_path
|
8
|
+
end
|
9
|
+
|
10
|
+
def stop_impersonating
|
11
|
+
stop_impersonating_user
|
12
|
+
redirect_to root_path
|
13
|
+
end
|
14
|
+
end
|
@@ -10,30 +10,36 @@ gac 'base rails 7 image created'
|
|
10
10
|
|
11
11
|
prepare_environment
|
12
12
|
|
13
|
-
add_controller('home', 'index')
|
14
|
-
|
15
|
-
route("root 'home#index'")
|
16
|
-
|
17
|
-
force_copy
|
18
|
-
|
19
|
-
directory "app/controllers"
|
20
|
-
directory "app/views/home"
|
21
|
-
directory "app/views/layouts"
|
22
|
-
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
23
|
-
|
24
|
-
template 'db/seeds.rb' , 'db/seeds.rb'
|
25
|
-
|
26
13
|
after_bundle do
|
14
|
+
scaffolds
|
15
|
+
setup_customizations
|
27
16
|
setup_db
|
28
17
|
end
|
29
18
|
|
30
|
-
def
|
19
|
+
def scaffolds
|
31
20
|
# add_scaffold('post', 'title', 'body:text', 'user:references')
|
32
21
|
# add_scaffold('people', 'first_name', 'last_name', 'age:integer', 'address:text')
|
33
22
|
# add_scaffold('product', 'name', 'price:integer')
|
23
|
+
end
|
24
|
+
|
25
|
+
def setup_customizations
|
26
|
+
route("root 'home#index'")
|
27
|
+
|
28
|
+
force_copy
|
29
|
+
|
30
|
+
add_controller('home', 'index')
|
31
|
+
|
32
|
+
directory "app/controllers"
|
33
|
+
directory "app/models"
|
34
|
+
directory "app/views"
|
35
|
+
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
36
|
+
end
|
37
|
+
|
38
|
+
def setup_db
|
39
|
+
template 'db/seeds.rb' , 'db/seeds.rb'
|
34
40
|
|
35
|
-
|
36
|
-
|
41
|
+
db_migrate
|
42
|
+
db_seed
|
37
43
|
end
|
38
44
|
|
39
45
|
# Other template command examples
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_app_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
@@ -327,6 +327,15 @@ files:
|
|
327
327
|
- after_templates/addons/phony_rails/app/controllers/home_controller.rb
|
328
328
|
- after_templates/addons/phony_rails/app/views/home/index.html.erb
|
329
329
|
- after_templates/addons/phony_rails/app/views/layouts/application.html.erb
|
330
|
+
- after_templates/addons/pretender/_.rb
|
331
|
+
- after_templates/addons/pretender/app/controllers/application_controller.rb
|
332
|
+
- after_templates/addons/pretender/app/controllers/home_controller.rb
|
333
|
+
- after_templates/addons/pretender/app/models/user.rb
|
334
|
+
- after_templates/addons/pretender/app/views/home/index.html.erb
|
335
|
+
- after_templates/addons/pretender/app/views/layouts/_footer.html.erb
|
336
|
+
- after_templates/addons/pretender/app/views/layouts/_navbar.html.erb
|
337
|
+
- after_templates/addons/pretender/app/views/layouts/application.html.erb
|
338
|
+
- after_templates/addons/pretender/db/seeds.rb
|
330
339
|
- after_templates/addons/public_suffix/_.rb
|
331
340
|
- after_templates/addons/public_suffix/app/controllers/home_controller.rb
|
332
341
|
- after_templates/addons/public_suffix/app/views/home/index.html.erb
|
@@ -592,10 +601,12 @@ files:
|
|
592
601
|
- lib/rails_app_generator/addons/minimal_css.rb
|
593
602
|
- lib/rails_app_generator/addons/motor_admin.rb
|
594
603
|
- lib/rails_app_generator/addons/phony_rails.rb
|
604
|
+
- lib/rails_app_generator/addons/pretender.rb
|
595
605
|
- lib/rails_app_generator/addons/public_suffix.rb
|
596
606
|
- lib/rails_app_generator/addons/pundit.rb
|
597
607
|
- lib/rails_app_generator/addons/rails_html_sanitizer.rb
|
598
608
|
- lib/rails_app_generator/addons/redcarpet.rb
|
609
|
+
- lib/rails_app_generator/addons/rolify.rb
|
599
610
|
- lib/rails_app_generator/addons/rspec.rb
|
600
611
|
- lib/rails_app_generator/addons/rubocop.rb
|
601
612
|
- lib/rails_app_generator/addons/scaffold.rb
|
@@ -660,6 +671,7 @@ files:
|
|
660
671
|
- profiles/addons/minimal_css.json
|
661
672
|
- profiles/addons/motor_admin.json
|
662
673
|
- profiles/addons/phony_rails.json
|
674
|
+
- profiles/addons/pretender.json
|
663
675
|
- profiles/addons/public_suffix.json
|
664
676
|
- profiles/addons/rails_html_sanitizer.json
|
665
677
|
- profiles/addons/redcarpet.json
|
@@ -709,6 +721,7 @@ files:
|
|
709
721
|
- templates/addons/honeybadger/honeybadger.sample.yml
|
710
722
|
- templates/addons/irbrc/.irbrc.erb
|
711
723
|
- templates/addons/lograge/config/initializers/lograge.rb
|
724
|
+
- templates/addons/pretender/app/controllers/pretender_controller.rb
|
712
725
|
- templates/addons/pundit/app/controllers/authorized_controller.rb.erb
|
713
726
|
- templates/addons/pundit/app/policies/application_policy.rb
|
714
727
|
- templates/addons/rspec/spec/rails_helper.rb
|