rails_app_generator 0.2.36 → 0.2.39
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 +21 -0
- data/after_templates/addons/avo/_.rb +11 -3
- data/after_templates/addons/avo/app/avo/resources/post_resource.rb +3 -0
- data/after_templates/addons/avo/app/avo/resources/user_resource.rb +1 -0
- data/after_templates/addons/avo/app/controllers/home_controller.rb +4 -0
- data/after_templates/addons/avo/app/models/post.rb +3 -2
- data/after_templates/addons/avo/app/models/user.rb +6 -0
- data/after_templates/addons/avo/app/services/seed_service.rb +9 -0
- data/after_templates/addons/avo/app/views/home/index.html.erb +4 -2
- data/after_templates/addons/avo/app/views/layouts/_navbar.html.erb +7 -1
- data/after_templates/addons/avo/db/seeds.rb +1 -1
- data/after_templates/addons/friendly_id/_.rb +68 -0
- data/after_templates/addons/friendly_id/app/controllers/home_controller.rb +5 -0
- data/after_templates/addons/friendly_id/app/controllers/posts_controller.rb +66 -0
- data/after_templates/addons/friendly_id/app/models/post.rb +16 -0
- data/after_templates/addons/friendly_id/app/views/home/index.html.erb +22 -0
- data/after_templates/addons/friendly_id/app/views/layouts/_footer.html.erb +0 -0
- data/after_templates/addons/friendly_id/app/views/layouts/_navbar.html.erb +3 -0
- data/after_templates/addons/friendly_id/app/views/layouts/application.html.erb +29 -0
- data/after_templates/addons/friendly_id/app/views/posts/_form.html.erb +32 -0
- data/after_templates/addons/friendly_id/app/views/posts/_post.html.erb +17 -0
- data/after_templates/addons/friendly_id/app/views/posts/_post.json.jbuilder +2 -0
- data/after_templates/addons/friendly_id/app/views/posts/edit.html.erb +10 -0
- data/after_templates/addons/friendly_id/app/views/posts/index.html.erb +14 -0
- data/after_templates/addons/friendly_id/app/views/posts/index.json.jbuilder +1 -0
- data/after_templates/addons/friendly_id/app/views/posts/new.html.erb +9 -0
- data/after_templates/addons/friendly_id/app/views/posts/show.html.erb +19 -0
- data/after_templates/addons/friendly_id/app/views/posts/show.json.jbuilder +1 -0
- data/after_templates/addons/friendly_id/db/seeds.rb +47 -0
- data/docs/last_run/app_generator_class.json +8 -0
- data/docs/last_run/app_generator_data.json +1 -0
- data/docs/last_run/rails_options_class.json +8 -0
- data/docs/last_run/rails_options_data.json +1 -0
- data/lib/rails_app_generator/addons/factory_bot_rails.rb +15 -0
- data/lib/rails_app_generator/addons/friendly_id.rb +16 -0
- data/lib/rails_app_generator/app_generator.rb +10 -0
- data/lib/rails_app_generator/rag_initializer.rb +2 -0
- data/lib/rails_app_generator/version.rb +1 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/profiles/addons/avo.json +1 -1
- data/profiles/addons/friendly_id.json +14 -0
- data/templates/thor_task/profile/app/views/layouts/_navbar.html.erb +3 -3
- metadata +25 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: be981683729c562f221e7f00120145d345ea0111fbe80aa5f4cf9f2d03eaff03
|
|
4
|
+
data.tar.gz: 4a1a65620ae0fcecd12f0c27cd88fe0cb51da1c57843fc7afced0508cf31dfb1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d1fe4dfc123fb768fde98d6e40ed82e51955f3612751afa0241a05868d31d7fe7e209036bac26f42573cd7b7ef2f099415ab4e6e8177cd00322c59746f11e486
|
|
7
|
+
data.tar.gz: f79cefc7816b714aac7717d35b7a6d64ccc3302d5b90c31e7747e4e0897bd0c1a2820f87017ca86de4221ca9c593735e34eb8d52bd55a85906e08fcef5652fb9
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
## [0.2.38](https://github.com/klueless-io/rails_app_generator/compare/v0.2.37...v0.2.38) (2022-08-22)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* add friendly_id addon ([5c34df5](https://github.com/klueless-io/rails_app_generator/commit/5c34df5fdbca8bc6810bd3cc9343d8b799d63ac3))
|
|
7
|
+
|
|
8
|
+
## [0.2.37](https://github.com/klueless-io/rails_app_generator/compare/v0.2.36...v0.2.37) (2022-08-22)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* add friendly_id addon ([e6fc42e](https://github.com/klueless-io/rails_app_generator/commit/e6fc42e7d4ef017775c6b33850fb22aabc156ca5))
|
|
14
|
+
|
|
15
|
+
## [0.2.36](https://github.com/klueless-io/rails_app_generator/compare/v0.2.35...v0.2.36) (2022-08-22)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* update avo profile ([f02ee7f](https://github.com/klueless-io/rails_app_generator/commit/f02ee7f7e6e5e25842a023f210674d9602edfe58))
|
|
21
|
+
|
|
1
22
|
## [0.2.35](https://github.com/klueless-io/rails_app_generator/compare/v0.2.34...v0.2.35) (2022-08-20)
|
|
2
23
|
|
|
3
24
|
|
|
@@ -18,13 +18,19 @@ after_bundle do
|
|
|
18
18
|
setup_customizations
|
|
19
19
|
setup_db
|
|
20
20
|
setup_avo
|
|
21
|
+
|
|
22
|
+
swap1 = ' resources :users'
|
|
23
|
+
swap2 = " devise_for :users, controllers: { sessions: 'users/sessions', registrations: 'users/registrations' }"
|
|
24
|
+
|
|
25
|
+
swap_lines('config/routes.rb', swap1, swap2)
|
|
21
26
|
end
|
|
22
27
|
|
|
23
28
|
def scaffolds
|
|
24
29
|
add_scaffold_controller('users', 'name', 'email')
|
|
25
|
-
# add_scaffold('author', 'name', 'email', 'bio:text')
|
|
26
30
|
add_scaffold('category', 'title', 'description:text')
|
|
27
|
-
add_scaffold('post', 'title content:text', 'published:boolean', 'user:references', 'category:references')
|
|
31
|
+
add_scaffold('post', 'title', 'content:text', 'published:boolean', 'user:references', 'category:references')
|
|
32
|
+
add_scaffold('comment', 'body:text', 'commentable:references{polymorphic}', 'user:references')
|
|
33
|
+
|
|
28
34
|
add_scaffold('location', 'name', 'description:text') #, 'photo:file')
|
|
29
35
|
add_scaffold('room', 'name', 'description:text', 'location:references') #, 'photo:file'
|
|
30
36
|
add_scaffold('booking', 'user:references', 'room:references', 'booked_at:datetime', 'booked_for:integer')
|
|
@@ -35,11 +41,12 @@ def setup_customizations
|
|
|
35
41
|
|
|
36
42
|
force_copy
|
|
37
43
|
|
|
38
|
-
add_controller('home', 'index', 'quick_signin')
|
|
44
|
+
add_controller('home', 'index', 'quick_signin', 'reseed')
|
|
39
45
|
|
|
40
46
|
directory "app/controllers"
|
|
41
47
|
directory "app/models"
|
|
42
48
|
directory "app/views"
|
|
49
|
+
directory "app/services"
|
|
43
50
|
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
|
44
51
|
end
|
|
45
52
|
|
|
@@ -55,6 +62,7 @@ def setup_avo
|
|
|
55
62
|
|
|
56
63
|
generate('avo:resource Category')
|
|
57
64
|
generate('avo:resource Post')
|
|
65
|
+
generate('avo:resource Comment')
|
|
58
66
|
generate('avo:resource Location')
|
|
59
67
|
generate('avo:resource Room')
|
|
60
68
|
generate('avo:resource Booking')
|
|
@@ -22,4 +22,7 @@ class PostResource < Avo::BaseResource
|
|
|
22
22
|
|
|
23
23
|
# tutorial (related category): https://youtu.be/WgNK-oINFww?t=328
|
|
24
24
|
field :category, as: :belongs_to
|
|
25
|
+
|
|
26
|
+
# tutorial (related category with custom name): https://youtu.be/WgNK-oINFww?t=722
|
|
27
|
+
field :user, name: "Author", as: :belongs_to
|
|
25
28
|
end
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
class Post < ApplicationRecord
|
|
2
|
-
belongs_to :author, class_name: 'User', foreign_key: :user_id
|
|
2
|
+
# belongs_to :author, class_name: 'User', foreign_key: :user_id
|
|
3
|
+
belongs_to :user
|
|
3
4
|
belongs_to :category
|
|
4
5
|
|
|
5
6
|
# tutorial: https://youtu.be/WgNK-oINFww?t=209
|
|
6
7
|
def excerpt
|
|
7
|
-
ActionView::Base.full_sanitizer.sanitize(content).truncate(
|
|
8
|
+
ActionView::Base.full_sanitizer.sanitize(content).truncate(50)
|
|
8
9
|
end
|
|
9
10
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
<h1
|
|
1
|
+
<h1><%= I18n.t('application_name') %></h1>
|
|
2
2
|
|
|
3
|
-
<p>Avo abstracts away the common parts of building apps, letting your engineers work on your app's essential components
|
|
3
|
+
<p>Avo abstracts away the common parts of building apps, letting your engineers work on your app's essential components.</p>
|
|
4
|
+
|
|
5
|
+
<p>The result is a full-featured admin panel that works out of the box, ready to give to your end-users.</p>
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
<%= link_to 'Home', root_path %> |
|
|
2
|
+
<%= link_to 'Re-Seed', home_reseed_path %> |
|
|
2
3
|
<%= link_to 'Quick Sign In', home_quick_signin_path %> |
|
|
3
4
|
<%= link_to 'AVO', avo_path %>
|
|
5
|
+
<% if current_user %>
|
|
6
|
+
<br>
|
|
4
7
|
(
|
|
5
|
-
<%= link_to 'Posts', posts_path, class: 'simple_scaffold' %> |
|
|
6
8
|
<%= link_to 'Categories', categories_path, class: 'simple_scaffold' %> |
|
|
9
|
+
<%= link_to 'Posts', posts_path, class: 'simple_scaffold' %> |
|
|
10
|
+
<%= link_to 'Comments', comments_path, class: 'simple_scaffold' %> |
|
|
7
11
|
<%= link_to 'Authors', users_path, class: 'simple_scaffold' %>
|
|
8
12
|
)
|
|
9
13
|
(
|
|
10
14
|
<%= link_to 'Locations', locations_path, class: 'simple_scaffold' %> |
|
|
11
15
|
<%= link_to 'Rooms', rooms_path, class: 'simple_scaffold' %> |
|
|
16
|
+
<%= link_to 'Comments', comments_path, class: 'simple_scaffold' %> |
|
|
12
17
|
<%= link_to 'Bookings', bookings_path, class: 'simple_scaffold' %>
|
|
13
18
|
)
|
|
19
|
+
<% end %>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# FriendlyId provides slugging and permalink support for Active Record. It lets you create pretty URLs and work with human-friendly strings as if they were numeric ids.
|
|
4
|
+
#
|
|
5
|
+
# exe/rag addons/friendly_id
|
|
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
|
+
scaffolds
|
|
15
|
+
setup_customizations
|
|
16
|
+
setup_db
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def scaffolds
|
|
20
|
+
add_scaffold('post', 'title', 'category', 'body:text', 'slug:uniq')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def setup_customizations
|
|
24
|
+
route("root 'home#index'")
|
|
25
|
+
|
|
26
|
+
force_copy
|
|
27
|
+
|
|
28
|
+
add_controller('home', 'index')
|
|
29
|
+
|
|
30
|
+
directory "app/controllers"
|
|
31
|
+
directory "app/models"
|
|
32
|
+
directory "app/views"
|
|
33
|
+
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def setup_db
|
|
37
|
+
template 'db/seeds.rb' , 'db/seeds.rb'
|
|
38
|
+
|
|
39
|
+
db_migrate
|
|
40
|
+
db_seed
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Other template command examples
|
|
44
|
+
# prepare_environment
|
|
45
|
+
# bundle_install
|
|
46
|
+
# css_install('tailwind')
|
|
47
|
+
# rails_command('db:migrate')
|
|
48
|
+
# rails_command('db:migrate')
|
|
49
|
+
# bundle_add('hotwire-rails')
|
|
50
|
+
# rails_command('hotwire:install')
|
|
51
|
+
# run('bin/importmap pin sortablejs')
|
|
52
|
+
# run('npm install daisyui')
|
|
53
|
+
# rubocop
|
|
54
|
+
#
|
|
55
|
+
# directory 'app/assets/images'
|
|
56
|
+
# create_file 'app/assets/stylesheets/custom-bootstrap-import.scss' , read_template('custom-bootstrap-import.scss')
|
|
57
|
+
# append_to_file 'app/assets/config/manifest.js' , read_template('manifest.js')
|
|
58
|
+
# insert_into_file 'app/views/layouts/application.html.erb', read_template('application.html.erb'),
|
|
59
|
+
# before: %( <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>)
|
|
60
|
+
# gsub_file 'app/views/layouts/application.html.erb', %(container mx-auto mt-28 px-5 flex), 'container mx-auto px-5'
|
|
61
|
+
# template 'home.css', 'app/assets/stylesheets/home.css'
|
|
62
|
+
#
|
|
63
|
+
# add_controller('page', 'benefits', 'faq', 'terms', 'privacy', '--skip-routes')
|
|
64
|
+
# route(<<-'RUBY')
|
|
65
|
+
# PageController.action_methods.each do |action|
|
|
66
|
+
# get "/#{action}", to: "page##{action}", as: "page_#{action}"
|
|
67
|
+
# end
|
|
68
|
+
# RUBY
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
class PostsController < ApplicationController
|
|
2
|
+
before_action :set_post, only: %i[ edit update destroy ]
|
|
3
|
+
|
|
4
|
+
def index
|
|
5
|
+
@posts = Post.all
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
# GET /posts/1 or /posts/some-friendly-slug
|
|
9
|
+
def show
|
|
10
|
+
@post = Post.friendly.find(params[:id])
|
|
11
|
+
@friendly = @post.slug == params[:id]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def new
|
|
15
|
+
@post = Post.new
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def edit
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def create
|
|
22
|
+
@post = Post.new(post_params)
|
|
23
|
+
|
|
24
|
+
respond_to do |format|
|
|
25
|
+
if @post.save
|
|
26
|
+
format.html { redirect_to post_url(@post), notice: "Post was successfully created." }
|
|
27
|
+
format.json { render :show, status: :created, location: @post }
|
|
28
|
+
else
|
|
29
|
+
format.html { render :new, status: :unprocessable_entity }
|
|
30
|
+
format.json { render json: @post.errors, status: :unprocessable_entity }
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def update
|
|
36
|
+
respond_to do |format|
|
|
37
|
+
if @post.update(post_params)
|
|
38
|
+
format.html { redirect_to post_url(@post), notice: "Post was successfully updated." }
|
|
39
|
+
format.json { render :show, status: :ok, location: @post }
|
|
40
|
+
else
|
|
41
|
+
format.html { render :edit, status: :unprocessable_entity }
|
|
42
|
+
format.json { render json: @post.errors, status: :unprocessable_entity }
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def destroy
|
|
48
|
+
@post.destroy
|
|
49
|
+
|
|
50
|
+
respond_to do |format|
|
|
51
|
+
format.html { redirect_to posts_url, notice: "Post was successfully destroyed." }
|
|
52
|
+
format.json { head :no_content }
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
# Use callbacks to share common setup or constraints between actions.
|
|
58
|
+
def set_post
|
|
59
|
+
@post = Post.find(params[:id])
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Only allow a list of trusted parameters through.
|
|
63
|
+
def post_params
|
|
64
|
+
params.require(:post).permit(:title, :body)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<h1>Friendly</h1>
|
|
2
|
+
|
|
3
|
+
<p>FriendlyId provides slugging and permalink support for Active Record. It lets you create pretty URLs and work with human-friendly strings as if they were numeric ids.</p>
|
|
4
|
+
|
|
5
|
+
<table>
|
|
6
|
+
<thead>
|
|
7
|
+
<tr>
|
|
8
|
+
<td>Title</td>
|
|
9
|
+
<td style='width: 100px;'>Category</td>
|
|
10
|
+
<td>Friendly URL</td>
|
|
11
|
+
</tr>
|
|
12
|
+
</thead>
|
|
13
|
+
<tbody>
|
|
14
|
+
<% @posts.each do |post| %>
|
|
15
|
+
<tr>
|
|
16
|
+
<td><%= post.title %></td>
|
|
17
|
+
<td style='width: 100px;'><%= post.category %></td>
|
|
18
|
+
<td><%= link_to post.slug, post %></td>
|
|
19
|
+
</tr>
|
|
20
|
+
<% end %>
|
|
21
|
+
</tbody>
|
|
22
|
+
</table>
|
|
File without changes
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
</head>
|
|
15
|
+
|
|
16
|
+
<body>
|
|
17
|
+
<header>
|
|
18
|
+
<%%= render 'layouts/navbar' %>
|
|
19
|
+
<hr />
|
|
20
|
+
</header>
|
|
21
|
+
<main>
|
|
22
|
+
<%%= yield %>
|
|
23
|
+
</main>
|
|
24
|
+
<footer>
|
|
25
|
+
<%%= render 'layouts/footer' %>
|
|
26
|
+
</footer>
|
|
27
|
+
</body>
|
|
28
|
+
</html>
|
|
29
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<%= form_with(model: post) do |form| %>
|
|
2
|
+
<% if post.errors.any? %>
|
|
3
|
+
<div style="color: red">
|
|
4
|
+
<h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2>
|
|
5
|
+
|
|
6
|
+
<ul>
|
|
7
|
+
<% post.errors.each do |error| %>
|
|
8
|
+
<li><%= error.full_message %></li>
|
|
9
|
+
<% end %>
|
|
10
|
+
</ul>
|
|
11
|
+
</div>
|
|
12
|
+
<% end %>
|
|
13
|
+
|
|
14
|
+
<div>
|
|
15
|
+
<%= form.label :title, style: "display: block" %>
|
|
16
|
+
<%= form.text_field :title %>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div>
|
|
20
|
+
<%= form.label :body, style: "display: block" %>
|
|
21
|
+
<%= form.text_area :body %>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
<div>
|
|
25
|
+
<%= form.label :slug, style: "display: block" %>
|
|
26
|
+
<%= form.text_field :slug %>
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
<div>
|
|
30
|
+
<%= form.submit %>
|
|
31
|
+
</div>
|
|
32
|
+
<% end %>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<p style="color: green"><%= notice %></p>
|
|
2
|
+
|
|
3
|
+
<h1>Posts</h1>
|
|
4
|
+
|
|
5
|
+
<div id="posts">
|
|
6
|
+
<% @posts.each do |post| %>
|
|
7
|
+
<%= render post %>
|
|
8
|
+
<p>
|
|
9
|
+
<%= link_to "Show this post", post %>
|
|
10
|
+
</p>
|
|
11
|
+
<% end %>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<%= link_to "New post", new_post_path %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
json.array! @posts, partial: "posts/post", as: :post
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<% if @friendly %>
|
|
2
|
+
|
|
3
|
+
<h1><%= @post.title %></h1>
|
|
4
|
+
<p><%= @post.body %></p>
|
|
5
|
+
|
|
6
|
+
<% else %>
|
|
7
|
+
|
|
8
|
+
<p style="color: green"><%= notice %></p>
|
|
9
|
+
|
|
10
|
+
<%= render @post %>
|
|
11
|
+
|
|
12
|
+
<div>
|
|
13
|
+
<%= link_to "Edit this post", edit_post_path(@post) %> |
|
|
14
|
+
<%= link_to "Back to posts", posts_path %>
|
|
15
|
+
|
|
16
|
+
<%= button_to "Destroy this post", @post, method: :delete %>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<% end %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
json.partial! "posts/post", post: @post
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
posts = [
|
|
2
|
+
'can ruby on rails run on windows',
|
|
3
|
+
'can ruby on rails be used for mobile apps',
|
|
4
|
+
'does ruby on rails have a future',
|
|
5
|
+
'what does ruby on rails do',
|
|
6
|
+
'how does ruby on rails work',
|
|
7
|
+
'what is rails ruby',
|
|
8
|
+
'where ruby on rails',
|
|
9
|
+
'what ruby on rails is used for',
|
|
10
|
+
'where ruby on rails active record',
|
|
11
|
+
'where ruby on rails performance',
|
|
12
|
+
'which companies use ruby on rails',
|
|
13
|
+
'what is ruby on rails developer',
|
|
14
|
+
'who created ruby on rails',
|
|
15
|
+
'what is ruby on rails good for',
|
|
16
|
+
'is ruby on rails worth learning',
|
|
17
|
+
'is ruby on rails hard to learn',
|
|
18
|
+
'is ruby on rails backend or frontend',
|
|
19
|
+
'is ruby on rails a programming language',
|
|
20
|
+
'is ruby on rails easy to learn',
|
|
21
|
+
'who uses ruby on rails',
|
|
22
|
+
'who created ruby on rails',
|
|
23
|
+
'is ruby rails dead',
|
|
24
|
+
'what is rails ruby',
|
|
25
|
+
'when to use ruby on rails',
|
|
26
|
+
'why ruby on rails is good',
|
|
27
|
+
'where ruby on rails is used',
|
|
28
|
+
'where ruby on rails',
|
|
29
|
+
'where ruby on rails active record',
|
|
30
|
+
'where ruby on rails performance',
|
|
31
|
+
'query where ruby on rails'
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
categories = [
|
|
35
|
+
'ruby',
|
|
36
|
+
'rails',
|
|
37
|
+
'ruby on rails',
|
|
38
|
+
'ror',
|
|
39
|
+
'rails 7',
|
|
40
|
+
'full stack',
|
|
41
|
+
'web',
|
|
42
|
+
'web app'
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
posts.each do |post|
|
|
46
|
+
Post.create(title: post.capitalize, category: categories.sample, body: Faker::Lorem.paragraphs(number: 20).join(' '))
|
|
47
|
+
end
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"add_devise_masquerade",
|
|
54
54
|
"add_dotenv",
|
|
55
55
|
"add_faker",
|
|
56
|
+
"add_friendly_id",
|
|
56
57
|
"add_groupdate",
|
|
57
58
|
"add_hexapdf",
|
|
58
59
|
"add_httparty",
|
|
@@ -446,6 +447,13 @@
|
|
|
446
447
|
"default": false,
|
|
447
448
|
"required": false
|
|
448
449
|
},
|
|
450
|
+
{
|
|
451
|
+
"name": "add_friendly_id",
|
|
452
|
+
"description": "Indicates when to generate add friendly",
|
|
453
|
+
"type": "boolean",
|
|
454
|
+
"default": false,
|
|
455
|
+
"required": false
|
|
456
|
+
},
|
|
449
457
|
{
|
|
450
458
|
"name": "add_groupdate",
|
|
451
459
|
"description": "Indicates when to generate add groupdate",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"add_devise_masquerade",
|
|
54
54
|
"add_dotenv",
|
|
55
55
|
"add_faker",
|
|
56
|
+
"add_friendly_id",
|
|
56
57
|
"add_groupdate",
|
|
57
58
|
"add_hexapdf",
|
|
58
59
|
"add_httparty",
|
|
@@ -446,6 +447,13 @@
|
|
|
446
447
|
"default": false,
|
|
447
448
|
"required": false
|
|
448
449
|
},
|
|
450
|
+
{
|
|
451
|
+
"name": "add_friendly_id",
|
|
452
|
+
"description": "",
|
|
453
|
+
"type": "boolean",
|
|
454
|
+
"default": false,
|
|
455
|
+
"required": false
|
|
456
|
+
},
|
|
449
457
|
{
|
|
450
458
|
"name": "add_groupdate",
|
|
451
459
|
"description": "",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RailsAppGenerator
|
|
4
|
+
# Custom add-ons for RailsAppGenerator
|
|
5
|
+
module AddOns
|
|
6
|
+
# Add FactoryBotRails to rails application
|
|
7
|
+
class FactoryBotRails < RailsAppGenerator::Addon
|
|
8
|
+
required_gem gem.version('factory_bot_rails', '6.2.0', 'Provides Rails integration for factory_bot.')
|
|
9
|
+
|
|
10
|
+
def apply
|
|
11
|
+
say 'Setting up FactoryBotRails'
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RailsAppGenerator
|
|
4
|
+
# Custom add-ons for RailsAppGenerator
|
|
5
|
+
module AddOns
|
|
6
|
+
# Add FriendlyId to rails application
|
|
7
|
+
class FriendlyId < RailsAppGenerator::Addon
|
|
8
|
+
required_gem gem.version('friendly_id', '5.4.2', 'FriendlyId provides slugging and permalink support for Active Record.')
|
|
9
|
+
|
|
10
|
+
def apply
|
|
11
|
+
bundle_install
|
|
12
|
+
generate('friendly_id')
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -184,7 +184,9 @@ module RailsAppGenerator
|
|
|
184
184
|
# docker
|
|
185
185
|
add_if(:dotenv) # tested
|
|
186
186
|
add_if(:factory_bot) # TODO: needs testing
|
|
187
|
+
add_if(:factory_bot_rails) # tested
|
|
187
188
|
add_if(:faker) # tested
|
|
189
|
+
add_if(:friendly_id) # tested
|
|
188
190
|
add_if(:generators) # TODO: needs testing
|
|
189
191
|
add_if(:groupdate) # TODO: does not have a profile
|
|
190
192
|
add_if(:hexapdf) # tested
|
|
@@ -364,6 +366,14 @@ module RailsAppGenerator
|
|
|
364
366
|
template_files.map { |template_file| read_template(template_file) }.join(join)
|
|
365
367
|
end
|
|
366
368
|
|
|
369
|
+
# swap two lines using the gsub_file
|
|
370
|
+
def swap_lines(file, swap1, swap2)
|
|
371
|
+
swap_temp = '##SWAP_IT##'
|
|
372
|
+
gsub_file(file, swap1, swap_temp)
|
|
373
|
+
gsub_file(file, swap2, swap1)
|
|
374
|
+
gsub_file(file, swap_temp, swap2)
|
|
375
|
+
end
|
|
376
|
+
|
|
367
377
|
# Moves a file at given location, to another location. Both files are relative to the destination_root
|
|
368
378
|
#
|
|
369
379
|
# ==== Parameters
|
|
@@ -118,7 +118,9 @@ KConfig.configure do |config|
|
|
|
118
118
|
# docker
|
|
119
119
|
rag.add_option :add_dotenv , type: :boolean, default: false
|
|
120
120
|
# factory_bot
|
|
121
|
+
rag.add_option :add_factory_bot_rails , type: :boolean, default: false
|
|
121
122
|
rag.add_option :add_faker , type: :boolean, default: false
|
|
123
|
+
rag.add_option :add_friendly_id , type: :boolean, default: false
|
|
122
124
|
# generators
|
|
123
125
|
rag.add_option :add_groupdate , type: :boolean, default: false
|
|
124
126
|
rag.add_option :add_hexapdf , type: :boolean, default: false
|
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.39",
|
|
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.39",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"daisyui": "^2.20.0"
|
|
12
12
|
},
|
data/package.json
CHANGED
data/profiles/addons/avo.json
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"args": {
|
|
3
|
+
"app_path": "r7_friendly_id",
|
|
4
|
+
"destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons"
|
|
5
|
+
},
|
|
6
|
+
"opts": {
|
|
7
|
+
"skip_git": true,
|
|
8
|
+
"skip_test": true,
|
|
9
|
+
"add_minimal_css": true,
|
|
10
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/friendly_id/_.rb",
|
|
11
|
+
"add_faker": true,
|
|
12
|
+
"add_friendly_id": true
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<%= link_to 'Home', root_path %>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
| <%= link_to 'Products', products_path %>
|
|
3
|
+
| <%= link_to 'Posts', posts_path %>
|
|
4
|
+
| <%= link_to 'People', people_path %>
|
|
5
5
|
<hr />
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
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.39
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Cruwys
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-08-
|
|
11
|
+
date: 2022-08-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bootsnap
|
|
@@ -214,6 +214,8 @@ files:
|
|
|
214
214
|
- after_templates/addons/avo/app/controllers/home_controller.rb
|
|
215
215
|
- after_templates/addons/avo/app/models/category.rb
|
|
216
216
|
- after_templates/addons/avo/app/models/post.rb
|
|
217
|
+
- after_templates/addons/avo/app/models/user.rb
|
|
218
|
+
- after_templates/addons/avo/app/services/seed_service.rb
|
|
217
219
|
- after_templates/addons/avo/app/views/home/index.html.erb
|
|
218
220
|
- after_templates/addons/avo/app/views/home/quick_signin.html.erb
|
|
219
221
|
- after_templates/addons/avo/app/views/layouts/_footer.html.erb
|
|
@@ -299,6 +301,24 @@ files:
|
|
|
299
301
|
- after_templates/addons/faker/app/views/layouts/_footer.html.erb
|
|
300
302
|
- after_templates/addons/faker/app/views/layouts/_navbar.html.erb
|
|
301
303
|
- after_templates/addons/faker/app/views/layouts/application.html.erb
|
|
304
|
+
- after_templates/addons/friendly_id/_.rb
|
|
305
|
+
- after_templates/addons/friendly_id/app/controllers/home_controller.rb
|
|
306
|
+
- after_templates/addons/friendly_id/app/controllers/posts_controller.rb
|
|
307
|
+
- after_templates/addons/friendly_id/app/models/post.rb
|
|
308
|
+
- after_templates/addons/friendly_id/app/views/home/index.html.erb
|
|
309
|
+
- after_templates/addons/friendly_id/app/views/layouts/_footer.html.erb
|
|
310
|
+
- after_templates/addons/friendly_id/app/views/layouts/_navbar.html.erb
|
|
311
|
+
- after_templates/addons/friendly_id/app/views/layouts/application.html.erb
|
|
312
|
+
- after_templates/addons/friendly_id/app/views/posts/_form.html.erb
|
|
313
|
+
- after_templates/addons/friendly_id/app/views/posts/_post.html.erb
|
|
314
|
+
- after_templates/addons/friendly_id/app/views/posts/_post.json.jbuilder
|
|
315
|
+
- after_templates/addons/friendly_id/app/views/posts/edit.html.erb
|
|
316
|
+
- after_templates/addons/friendly_id/app/views/posts/index.html.erb
|
|
317
|
+
- after_templates/addons/friendly_id/app/views/posts/index.json.jbuilder
|
|
318
|
+
- after_templates/addons/friendly_id/app/views/posts/new.html.erb
|
|
319
|
+
- after_templates/addons/friendly_id/app/views/posts/show.html.erb
|
|
320
|
+
- after_templates/addons/friendly_id/app/views/posts/show.json.jbuilder
|
|
321
|
+
- after_templates/addons/friendly_id/db/seeds.rb
|
|
302
322
|
- after_templates/addons/hexapdf/_.rb
|
|
303
323
|
- after_templates/addons/hexapdf/app/controllers/home_controller.rb
|
|
304
324
|
- after_templates/addons/hexapdf/app/views/home/index.html.erb
|
|
@@ -644,8 +664,10 @@ files:
|
|
|
644
664
|
- lib/rails_app_generator/addons/docker_compose.rb
|
|
645
665
|
- lib/rails_app_generator/addons/dotenv.rb
|
|
646
666
|
- lib/rails_app_generator/addons/factory_bot.rb
|
|
667
|
+
- lib/rails_app_generator/addons/factory_bot_rails.rb
|
|
647
668
|
- lib/rails_app_generator/addons/faker.rb
|
|
648
669
|
- lib/rails_app_generator/addons/foreman.rb
|
|
670
|
+
- lib/rails_app_generator/addons/friendly_id.rb
|
|
649
671
|
- lib/rails_app_generator/addons/generators.rb
|
|
650
672
|
- lib/rails_app_generator/addons/groupdate.rb
|
|
651
673
|
- lib/rails_app_generator/addons/hexapdf.rb
|
|
@@ -726,6 +748,7 @@ files:
|
|
|
726
748
|
- profiles/addons/devise_masquerade.json
|
|
727
749
|
- profiles/addons/dotenv.json
|
|
728
750
|
- profiles/addons/faker.json
|
|
751
|
+
- profiles/addons/friendly_id.json
|
|
729
752
|
- profiles/addons/hexapdf.json
|
|
730
753
|
- profiles/addons/honeybadger.json
|
|
731
754
|
- profiles/addons/httparty.json
|