hotwire_crud 0.1.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/hotwire_crud.gemspec +7 -3
- data/lib/generators/hotwire_crud/USAGE +1 -1
- data/lib/generators/hotwire_crud/hotwire_crud_generator.rb +80 -7
- data/lib/generators/hotwire_crud/templates/constants.erb +0 -0
- data/lib/generators/hotwire_crud/templates/controller.erb +1 -3
- data/lib/generators/hotwire_crud/templates/controller_spec.erb +0 -2
- data/lib/generators/hotwire_crud/templates/static_controller.erb +5 -1
- data/lib/generators/hotwire_crud/templates/views/edit.html.erb +2 -0
- data/lib/generators/hotwire_crud/templates/views/index.html.erb +2 -1
- data/lib/generators/hotwire_crud/templates/views/new.html.erb +2 -0
- data/lib/generators/hotwire_crud/templates/views/show.html.erb +2 -0
- data/lib/generators/hotwire_crud/templates/views/static_edit.html.erb +2 -0
- data/lib/generators/hotwire_crud/templates/views/static_index.html.erb +2 -1
- data/lib/generators/hotwire_crud/templates/views/static_new.html.erb +2 -0
- data/lib/generators/hotwire_crud/templates/views/static_show.html.erb +2 -0
- metadata +22 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7440b0ff951cbd011abf2479b8842efeb4d57c42ec7533ec596f494da015d777
|
4
|
+
data.tar.gz: 07d704e527c643a27991621454a34650ae64f53aee1e25104f2fc3425c4bf64d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f09512f8c327c1019a11ee1ca47c289b3e5a1b316bfdf7d26f541c516b3bf85c83cd947ec16f51e9c91433b9df4a18deea8a840e8a5a7ad72568fc89572d8737
|
7
|
+
data.tar.gz: 2d95ec09a6a80539a692981d2db5660b61d40a0a834cb46d95897edcb75c2954f25f3c46ea07359b36733f383d36eb011df4603d45de22377304df029429e08a
|
data/hotwire_crud.gemspec
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
Gem::Specification.new do |spec|
|
2
4
|
spec.name = 'hotwire_crud'
|
3
|
-
spec.version = '
|
5
|
+
spec.version = '1.1.0'
|
4
6
|
spec.summary = 'crud generator with hotwire approach and static routes'
|
5
7
|
spec.description = 'Crud generator with static routes which lazy loads content using content routes'
|
6
8
|
spec.authors = ['Umair Azam']
|
@@ -10,10 +12,12 @@ Gem::Specification.new do |spec|
|
|
10
12
|
|
11
13
|
spec.files = Dir['lib/**/*', 'templates/**/*', '*.gemspec']
|
12
14
|
spec.require_paths = ['lib']
|
13
|
-
|
15
|
+
spec.required_ruby_version = '3.1.2'
|
14
16
|
spec.add_runtime_dependency 'rails', '>= 6.0'
|
15
17
|
# Add other dependencies if needed
|
16
18
|
|
17
19
|
# Specify the custom generator file(s)
|
18
20
|
spec.add_development_dependency 'railties'
|
19
|
-
|
21
|
+
spec.add_development_dependency 'rubocop', '~> 1.0'
|
22
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
23
|
+
end
|
@@ -1,30 +1,58 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# A Rails generator that creates a CRUD (Create, Read, Update, Delete) controller
|
4
|
+
# with Hotwire support.
|
5
|
+
#
|
6
|
+
# This generator creates a controller file, view files, and sets up the
|
7
|
+
# routes for the CRUD operations. It is designed to be used with Hotwire
|
8
|
+
# for a more interactive and dynamic user interface.
|
9
|
+
#
|
10
|
+
# Usage:
|
11
|
+
# rails generate hotwire_crud resource_controller_name
|
12
|
+
#
|
13
|
+
# Example:
|
14
|
+
# rails generate hotwire_crud products
|
15
|
+
#
|
16
|
+
# This will generate a Products controller with actions for index, show, new, edit,
|
17
|
+
# create, update, and destroy, along with corresponding view templates.
|
18
|
+
#
|
19
|
+
|
20
|
+
# lib/generators/hotwire_crud_generator.rb
|
21
|
+
require 'English'
|
3
22
|
class HotwireCrudGenerator < Rails::Generators::NamedBase
|
4
|
-
source_root File.expand_path(
|
23
|
+
source_root File.expand_path('templates', __dir__)
|
5
24
|
|
6
25
|
argument :actions, type: :array, default: %w[index edit new show]
|
7
26
|
|
8
27
|
def create_static_controller_file
|
9
|
-
|
28
|
+
file_name_singular = file_name.singularize
|
29
|
+
|
30
|
+
@actions_data_paths = {
|
31
|
+
index: "#{file_name}_path",
|
32
|
+
new: "new_#{file_name_singular}_path",
|
33
|
+
edit: "edit_#{file_name_singular}_path",
|
34
|
+
show: "#{file_name_singular}_path"
|
35
|
+
}
|
36
|
+
|
37
|
+
template 'static_controller.erb', File.join('app/controllers/static', "#{file_name}_controller.rb")
|
10
38
|
end
|
11
39
|
|
12
40
|
def create_static_controller_test
|
13
|
-
template
|
41
|
+
template 'static_controller_spec.erb', File.join('spec/controllers/static', "#{file_name}_controller_spec.rb")
|
14
42
|
end
|
15
43
|
|
16
44
|
def create_controller_file
|
17
|
-
template
|
45
|
+
template 'controller.erb', File.join('app/controllers', "#{file_name}_controller.rb")
|
18
46
|
end
|
19
47
|
|
20
48
|
def create_controller_test
|
21
|
-
template
|
49
|
+
template 'controller_spec.erb', File.join('spec/controllers', "#{file_name}_controller_spec.rb")
|
22
50
|
end
|
23
51
|
|
24
52
|
def create_views
|
25
53
|
actions.each do |action|
|
26
|
-
template "views/static_#{action}.html.erb", File.join(
|
27
|
-
template "views/#{action}.html.erb", File.join(
|
54
|
+
template "views/static_#{action}.html.erb", File.join('app/views/static', file_name, "#{action}.html.haml")
|
55
|
+
template "views/#{action}.html.erb", File.join('app/views', file_name, "#{action}.html.haml")
|
28
56
|
end
|
29
57
|
end
|
30
58
|
|
@@ -34,4 +62,49 @@ class HotwireCrudGenerator < Rails::Generators::NamedBase
|
|
34
62
|
route_namespace = 'static'
|
35
63
|
route "namespace :#{route_namespace} do\n resources :#{file_name}, only: #{actions.map(&:to_sym).inspect}\nend"
|
36
64
|
end
|
65
|
+
|
66
|
+
def generate_constants
|
67
|
+
constants_file_path = File.join('app', 'controllers', 'static', 'hotwire_crud_static_constants.rb')
|
68
|
+
|
69
|
+
create_file(constants_file_path) unless File.exist?(constants_file_path)
|
70
|
+
file_content = File.read(constants_file_path)
|
71
|
+
|
72
|
+
actions.each do |action|
|
73
|
+
const_name = "#{const_prefix}_#{action.upcase}_TURBO_FRAME_TAG_NAME"
|
74
|
+
const_value = "#{const_prefix.downcase}_#{action}"
|
75
|
+
next if file_content.include?(const_name)
|
76
|
+
|
77
|
+
append_to_file constants_file_path do
|
78
|
+
constants_content(const_name, const_value)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# if File.exist?(constants_file_path)
|
83
|
+
load constants_file_path
|
84
|
+
# end
|
85
|
+
end
|
86
|
+
|
87
|
+
def run_rubocop_with_auto_correct
|
88
|
+
rubocop_command = 'bundle exec rubocop -A'
|
89
|
+
|
90
|
+
system(rubocop_command)
|
91
|
+
|
92
|
+
if $CHILD_STATUS.success?
|
93
|
+
say('RuboCop auto-corrections applied successfully.', :green)
|
94
|
+
else
|
95
|
+
say('RuboCop auto-corrections failed.', :red)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
def constants_content(const_name, const_value)
|
102
|
+
<<~RUBY
|
103
|
+
#{const_name} = '#{const_value}'
|
104
|
+
RUBY
|
105
|
+
end
|
106
|
+
|
107
|
+
def const_prefix
|
108
|
+
file_name.pluralize.upcase
|
109
|
+
end
|
37
110
|
end
|
File without changes
|
@@ -2,9 +2,7 @@
|
|
2
2
|
class <%= class_name %>Controller < ApplicationController
|
3
3
|
<% actions.each do |action|%>
|
4
4
|
def <%= action %>
|
5
|
-
|
5
|
+
@turbo_frame_tag_name = <%= class_name.pluralize.upcase %>_<%= action.upcase%>_TURBO_FRAME_TAG_NAME
|
6
6
|
end
|
7
7
|
<% end %>
|
8
|
-
|
9
|
-
# Define other actions here if needed
|
10
8
|
end
|
@@ -2,7 +2,11 @@
|
|
2
2
|
class Static::<%= class_name %>Controller < ApplicationController
|
3
3
|
<% actions.each do |action|%>
|
4
4
|
def <%= action %>
|
5
|
-
|
5
|
+
http_cache_forever(public: true) do
|
6
|
+
@turbo_frame_tag_name = <%= class_name.pluralize.upcase %>_<%= action.upcase%>_TURBO_FRAME_TAG_NAME
|
7
|
+
@data_path = <%= @actions_data_paths[action.to_sym] %>
|
8
|
+
render "static/books/<%= action%>"
|
9
|
+
end
|
6
10
|
end
|
7
11
|
<% end %>
|
8
12
|
end
|
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
= turbo_frame_tag @turbo_frame_tag_name do
|
2
|
+
%h hello index listing
|
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
= turbo_frame_tag @turbo_frame_tag_name, src: @data_path do
|
2
|
+
%p loading...
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hotwire_crud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Umair Azam
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-09-
|
11
|
+
date: 2023-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
41
55
|
description: Crud generator with static routes which lazy loads content using content
|
42
56
|
routes
|
43
57
|
email:
|
@@ -49,6 +63,7 @@ files:
|
|
49
63
|
- hotwire_crud.gemspec
|
50
64
|
- lib/generators/hotwire_crud/USAGE
|
51
65
|
- lib/generators/hotwire_crud/hotwire_crud_generator.rb
|
66
|
+
- lib/generators/hotwire_crud/templates/constants.erb
|
52
67
|
- lib/generators/hotwire_crud/templates/controller.erb
|
53
68
|
- lib/generators/hotwire_crud/templates/controller_spec.erb
|
54
69
|
- lib/generators/hotwire_crud/templates/static_controller.erb
|
@@ -64,23 +79,24 @@ files:
|
|
64
79
|
homepage: https://github.com/omairrazam/hotwire_crud.git
|
65
80
|
licenses:
|
66
81
|
- MIT
|
67
|
-
metadata:
|
82
|
+
metadata:
|
83
|
+
rubygems_mfa_required: 'true'
|
68
84
|
post_install_message:
|
69
85
|
rdoc_options: []
|
70
86
|
require_paths:
|
71
87
|
- lib
|
72
88
|
required_ruby_version: !ruby/object:Gem::Requirement
|
73
89
|
requirements:
|
74
|
-
- -
|
90
|
+
- - '='
|
75
91
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
92
|
+
version: 3.1.2
|
77
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
94
|
requirements:
|
79
95
|
- - ">="
|
80
96
|
- !ruby/object:Gem::Version
|
81
97
|
version: '0'
|
82
98
|
requirements: []
|
83
|
-
rubygems_version: 3.3.
|
99
|
+
rubygems_version: 3.3.7
|
84
100
|
signing_key:
|
85
101
|
specification_version: 4
|
86
102
|
summary: crud generator with hotwire approach and static routes
|