rails_app_generator 0.2.37 → 0.2.38

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f4ca958feef477475984a4ba7c07c2bacca73ab9e08c3bfa6159230b9e5da13
4
- data.tar.gz: d0d6cb5bdfbcc3cf808e99f6d28e55752353ac359981495684f63c373e1002f7
3
+ metadata.gz: acc731854bb8ac95ec84859705ef81a8b9858802d9675a54dc02a6af5a9ee676
4
+ data.tar.gz: 3be6aedc699c1f8078aaa54e465658b17ed4e9b66f56e63832e187c0119e9afa
5
5
  SHA512:
6
- metadata.gz: 9fe692be0b91354f45d868b6e5180110547895fb812dd01470babd91d1282f06e33abc615d9b332ba0ae0c5ed8d04da6fc6d73db280e5031f246eb4ef239b6ca
7
- data.tar.gz: 03b60799b0a908b6cbc54dd354cd8a58f4ae0f56d276359080f9482ce27e6cab675bba980218366136d48c5dc561b8e0767e0aad89a394e058b037d497d911e2
6
+ metadata.gz: 520c0072f1fa27c043d4af71667cc486e67cae7606d19daa558482c6e7892322f1b7ab89d2ce685098d635b4d307d3f34ab035ce132b0eb131e625f2071f1f39
7
+ data.tar.gz: 57781bbb63ea180fb25aac7727d5ae0c88e8f2948d46e2d14635accb78a750c589462075cdfb2368f95eac8eb1da416150644370497e4c4c56b25b39a5bd5ee8
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [0.2.37](https://github.com/klueless-io/rails_app_generator/compare/v0.2.36...v0.2.37) (2022-08-22)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add friendly_id addon ([e6fc42e](https://github.com/klueless-io/rails_app_generator/commit/e6fc42e7d4ef017775c6b33850fb22aabc156ca5))
7
+
1
8
  ## [0.2.36](https://github.com/klueless-io/rails_app_generator/compare/v0.2.35...v0.2.36) (2022-08-22)
2
9
 
3
10
 
@@ -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,5 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ @posts = Post.all
4
+ end
5
+ end
@@ -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,16 @@
1
+ class Post < ApplicationRecord
2
+ extend FriendlyId
3
+
4
+ # friendly_id :title, use: :slugged
5
+
6
+ friendly_id :title_fallbacks, use: :slugged
7
+
8
+ private
9
+
10
+ def title_fallbacks
11
+ [
12
+ :title,
13
+ [:title, :category]
14
+ ]
15
+ end
16
+ 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>
@@ -0,0 +1,3 @@
1
+ <%= link_to 'Home', root_path %>
2
+ | <%= link_to 'Posts', posts_path %>
3
+ <hr />
@@ -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,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,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",
@@ -32,22 +32,23 @@
32
32
  "test": "rspec",
33
33
  "add_acts_as_list": false,
34
34
  "add_administrate": false,
35
- "add_annotate": true,
36
- "add_avo": true,
35
+ "add_annotate": false,
36
+ "add_avo": false,
37
37
  "add_bcrypt": false,
38
38
  "add_brakeman": false,
39
39
  "add_browser": false,
40
40
  "add_bundler_audit": false,
41
41
  "add_chartkick": false,
42
- "add_devise": true,
42
+ "add_devise": false,
43
43
  "add_devise_masquerade": false,
44
44
  "add_dotenv": false,
45
45
  "add_faker": true,
46
+ "add_friendly_id": true,
46
47
  "add_groupdate": false,
47
48
  "add_hexapdf": false,
48
49
  "add_httparty": false,
49
50
  "add_honeybadger": false,
50
- "add_image_processing": true,
51
+ "add_image_processing": false,
51
52
  "add_kaminari": false,
52
53
  "add_lograge": false,
53
54
  "add_minimal_css": true,
@@ -58,11 +59,11 @@
58
59
  "add_pretender": false,
59
60
  "add_public_suffix": false,
60
61
  "add_rails_html_sanitizer": false,
61
- "add_ransack": true,
62
+ "add_ransack": false,
62
63
  "add_redcarpet": false,
63
64
  "add_rolify": false,
64
- "add_rubocop": true,
65
+ "add_rubocop": false,
65
66
  "add_twilio_ruby": false,
66
- "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/avo/_.rb"
67
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/friendly_id/_.rb"
67
68
  }
68
69
  }
@@ -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": "",
@@ -7,7 +7,7 @@
7
7
  "quiet": false,
8
8
  "skip": false,
9
9
  "ruby": "/Users/davidcruwys/.asdf/installs/ruby/3.1.1/bin/ruby",
10
- "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/avo/_.rb",
10
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/friendly_id/_.rb",
11
11
  "database": "sqlite3",
12
12
  "skip_git": true,
13
13
  "skip_keeps": false,
@@ -42,22 +42,23 @@
42
42
  "test": "rspec",
43
43
  "add_acts_as_list": false,
44
44
  "add_administrate": false,
45
- "add_annotate": true,
46
- "add_avo": true,
45
+ "add_annotate": false,
46
+ "add_avo": false,
47
47
  "add_bcrypt": false,
48
48
  "add_brakeman": false,
49
49
  "add_browser": false,
50
50
  "add_bundler_audit": false,
51
51
  "add_chartkick": false,
52
- "add_devise": true,
52
+ "add_devise": false,
53
53
  "add_devise_masquerade": false,
54
54
  "add_dotenv": false,
55
55
  "add_faker": true,
56
+ "add_friendly_id": true,
56
57
  "add_groupdate": false,
57
58
  "add_hexapdf": false,
58
59
  "add_httparty": false,
59
60
  "add_honeybadger": false,
60
- "add_image_processing": true,
61
+ "add_image_processing": false,
61
62
  "add_kaminari": false,
62
63
  "add_lograge": false,
63
64
  "add_minimal_css": true,
@@ -68,10 +69,10 @@
68
69
  "add_pretender": false,
69
70
  "add_public_suffix": false,
70
71
  "add_rails_html_sanitizer": false,
71
- "add_ransack": true,
72
+ "add_ransack": false,
72
73
  "add_redcarpet": false,
73
74
  "add_rolify": false,
74
- "add_rubocop": true,
75
+ "add_rubocop": false,
75
76
  "add_twilio_ruby": false
76
77
  }
77
78
  }
@@ -5,9 +5,10 @@ module RailsAppGenerator
5
5
  module AddOns
6
6
  # Add FriendlyId to rails application
7
7
  class FriendlyId < RailsAppGenerator::Addon
8
- required_gem gem.version('friendly_id', '5.4.2', '')
8
+ required_gem gem.version('friendly_id', '5.4.2', 'FriendlyId provides slugging and permalink support for Active Record.')
9
9
 
10
10
  def apply
11
+ bundle_install
11
12
  generate('friendly_id')
12
13
  end
13
14
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.2.37'
4
+ VERSION = '0.2.38'
5
5
  end
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.2.37",
3
+ "version": "0.2.38",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.2.37",
9
+ "version": "0.2.38",
10
10
  "dependencies": {
11
11
  "daisyui": "^2.20.0"
12
12
  },
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.2.37",
3
+ "version": "0.2.38",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
@@ -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
- <%# link_to 'Products', products_path %>
3
- <%# link_to 'Posts', posts_path %>
4
- <%# link_to 'People', people_path %>
2
+ | <%= link_to 'Products', products_path %>
3
+ | <%= link_to 'Posts', posts_path %>
4
+ | <%= link_to 'People', people_path %>
5
5
  <hr />
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.37
4
+ version: 0.2.38
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
@@ -299,6 +299,16 @@ files:
299
299
  - after_templates/addons/faker/app/views/layouts/_footer.html.erb
300
300
  - after_templates/addons/faker/app/views/layouts/_navbar.html.erb
301
301
  - after_templates/addons/faker/app/views/layouts/application.html.erb
302
+ - after_templates/addons/friendly_id/_.rb
303
+ - after_templates/addons/friendly_id/app/controllers/home_controller.rb
304
+ - after_templates/addons/friendly_id/app/controllers/posts_controller.rb
305
+ - after_templates/addons/friendly_id/app/models/post.rb
306
+ - after_templates/addons/friendly_id/app/views/home/index.html.erb
307
+ - after_templates/addons/friendly_id/app/views/layouts/_footer.html.erb
308
+ - after_templates/addons/friendly_id/app/views/layouts/_navbar.html.erb
309
+ - after_templates/addons/friendly_id/app/views/layouts/application.html.erb
310
+ - after_templates/addons/friendly_id/app/views/posts/show.html.erb
311
+ - after_templates/addons/friendly_id/db/seeds.rb
302
312
  - after_templates/addons/hexapdf/_.rb
303
313
  - after_templates/addons/hexapdf/app/controllers/home_controller.rb
304
314
  - after_templates/addons/hexapdf/app/views/home/index.html.erb
@@ -727,6 +737,7 @@ files:
727
737
  - profiles/addons/devise_masquerade.json
728
738
  - profiles/addons/dotenv.json
729
739
  - profiles/addons/faker.json
740
+ - profiles/addons/friendly_id.json
730
741
  - profiles/addons/hexapdf.json
731
742
  - profiles/addons/honeybadger.json
732
743
  - profiles/addons/httparty.json