rails_app_generator 0.2.37 → 0.2.38

Sign up to get free protection for your applications and to get access to all the features.
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