mint_bot 0.1.0 → 0.1.1
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/lib/generators/composer/USAGE +8 -0
- data/lib/generators/composer/composer_generator.rb +95 -0
- data/lib/generators/composer/templates/controllers/controller.rb.erb +90 -0
- data/lib/generators/composer/templates/controllers/namespace_controller.rb.erb +2 -0
- data/lib/generators/composer/templates/models/model.rb.erb +3 -0
- data/lib/generators/composer/templates/policies/namespace_pundit.rb.erb +29 -0
- data/lib/generators/composer/templates/policies/pundit.rb.erb +29 -0
- data/lib/generators/composer/templates/routes/route.rb.erb +5 -0
- data/lib/generators/composer/templates/serializers/namespace_serializer.rb.erb +5 -0
- data/lib/generators/composer/templates/serializers/serializer.rb.erb +3 -0
- data/lib/generators/composer/templates/views/_form.html.erb +12 -0
- data/lib/generators/composer/templates/views/_record.html.erb +14 -0
- data/lib/generators/composer/templates/views/destroy.html.erb +1 -0
- data/lib/generators/composer/templates/views/edit.html.erb +6 -0
- data/lib/generators/composer/templates/views/index.html.erb +20 -0
- data/lib/generators/composer/templates/views/new.html.erb +5 -0
- data/lib/generators/composer/templates/views/show.html.erb +1 -0
- data/lib/mint_bot/version.rb +1 -1
- metadata +23 -7
- data/lib/tasks/mint_bot_tasks.rake +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3490cf90564223abd179f82057e5912c65d5f5f339cab52780837433534afa68
|
|
4
|
+
data.tar.gz: 7e5bd6e2b665763e0b48cee1606e8d99ea1ca7533d89e31c7da0670faa5a9ff0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4cb30c0c6ce61562e6c1792e6064bf1d5a2fa5f17476f11b63c01db03ea87fbecf5be44ac9a2f816ee1e2c7793345898005ab9ab6feb3589cab1a40d8289f41a
|
|
7
|
+
data.tar.gz: 3e57f9b53f41c69ed5f2a6151d930098fb2557a2b4d9a85939a6c56937f80d8e2ed1d3f8eb4454a664eecf7c8a0172ef38457b89c29ecb0d36905ab5ade3da0b
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
require 'rails/generators/resource_helpers'
|
|
2
|
+
|
|
3
|
+
class ComposerGenerator < Rails::Generators::NamedBase
|
|
4
|
+
include Rails::Generators::ResourceHelpers
|
|
5
|
+
source_root File.expand_path('templates', __dir__)
|
|
6
|
+
|
|
7
|
+
def install
|
|
8
|
+
gen_route if yes?("gen route?")
|
|
9
|
+
gen_model if yes?("gen model?")
|
|
10
|
+
gen_controller if yes?("gen controller?")
|
|
11
|
+
gen_view if yes?("gen view?")
|
|
12
|
+
gen_pundit if yes?("gen pundit?")
|
|
13
|
+
gen_serializer if yes?("gen serializer?")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def gen_route
|
|
19
|
+
inject_into_file 'config/routes.rb', after: "# composer flag\n" do <<-RUBY
|
|
20
|
+
|
|
21
|
+
resources :#{plural_name}
|
|
22
|
+
resources :#{plural_name} do
|
|
23
|
+
get :foo
|
|
24
|
+
get :bar, on: :collection
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
RUBY
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def gen_model
|
|
32
|
+
template 'models/model.rb.erb', File.join("app/models", "#{singular_name}.rb")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def gen_controller
|
|
36
|
+
if yes?("does it need a namespace?")
|
|
37
|
+
@namespace = ask("pls, input namespace name:")
|
|
38
|
+
@namespace = @namespace.split('::').map(&:camelize).join("::")
|
|
39
|
+
template 'controllers/namespace_controller.rb.erb', File.join("app/controllers", @namespace.underscore, "#{singular_name}.rb")
|
|
40
|
+
else
|
|
41
|
+
template 'controllers/controller.rb.erb', File.join("app/controllers", "#{singular_name}.rb")
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def gen_view
|
|
46
|
+
actions = "index show new edit destory _form _record"
|
|
47
|
+
if yes?("does it need a namespace?")
|
|
48
|
+
@namespace = ask("pls, input namespace name:")
|
|
49
|
+
@namespace = @namespace.split('::').map(&:camelize).join("::")
|
|
50
|
+
actions.split(" ").each do |action|
|
|
51
|
+
case action
|
|
52
|
+
when 'destory'
|
|
53
|
+
template "views/destroy.html.erb", File.join("app/views", @namespace.underscore, "destroy.turbo_stream.haml")
|
|
54
|
+
when '_record'
|
|
55
|
+
filename = "_#{singular_name}.html.haml"
|
|
56
|
+
template "views/_record.html.erb", File.join("app/views", @namespace.underscore, filename)
|
|
57
|
+
else
|
|
58
|
+
template "views/#{action}.html.erb", File.join("app/views", @namespace.underscore, "#{action}.html.haml")
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
else
|
|
62
|
+
actions.split(" ").each do |action|
|
|
63
|
+
case action
|
|
64
|
+
when 'destory'
|
|
65
|
+
template "views/destroy.html.erb", File.join("app/views", "destroy.turbo_stream.haml")
|
|
66
|
+
when '_record'
|
|
67
|
+
filename = "_#{singular_name}.html.haml"
|
|
68
|
+
template "views/_record.html.erb", File.join("app/views", filename)
|
|
69
|
+
else
|
|
70
|
+
template "views/#{action}.html.erb", File.join("app/views", "#{action}.html.haml")
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def gen_pundit
|
|
77
|
+
if yes?("does it need a namespace?")
|
|
78
|
+
@namespace = ask("pls, input namespace name:")
|
|
79
|
+
@namespace = @namespace.split('::').map(&:camelize).join("::")
|
|
80
|
+
template 'policies/pundit.rb.erb', File.join("app/policies", @namespace.underscore, "#{singular_name.underscore}_policy.rb")
|
|
81
|
+
else
|
|
82
|
+
template 'policies/pundit.rb.erb', File.join("app/policies", "#{singular_name.underscore}_policy.rb")
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def gen_serializer
|
|
87
|
+
if yes?("does it need a namespace?")
|
|
88
|
+
@namespace = ask("pls, input namespace name:")
|
|
89
|
+
@namespace = @namespace.split('::').map(&:camelize).join("::")
|
|
90
|
+
template 'serializers/namespace_serializer.rb.erb', File.join("app/serializers", @namespace.underscore, "#{singular_name}_serializer.rb")
|
|
91
|
+
else
|
|
92
|
+
template 'serializers/serializer.rb.erb', File.join("app/serializers", "#{singular_name}_serializer.rb")
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
class <%= plural_name.camelize %>Controller < ApplicationController
|
|
2
|
+
before_action :load_<%= singular_name %>, only: %w[show edit update destroy]
|
|
3
|
+
|
|
4
|
+
def index
|
|
5
|
+
authorize <%= singular_name.camelize %>
|
|
6
|
+
|
|
7
|
+
load_<%= plural_name %>
|
|
8
|
+
|
|
9
|
+
skip_policy_scope
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def show
|
|
13
|
+
authorize @<%= singular_name %>
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def new
|
|
17
|
+
authorize <%= singular_name.camelize %>
|
|
18
|
+
|
|
19
|
+
@<%= singular_name %> = <%= singular_name.camelize %>.new
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def create
|
|
23
|
+
authorize <%= singular_name.camelize %>
|
|
24
|
+
|
|
25
|
+
create_params = diary_params.to_hash.deep_symbolize_keys
|
|
26
|
+
@<%= singular_name %> = <%= singular_name %>_scope.new(create_params)
|
|
27
|
+
@<%= singular_name %>.user = current_user
|
|
28
|
+
|
|
29
|
+
respond_to do |format|
|
|
30
|
+
if @<%= singular_name %>.save
|
|
31
|
+
format.turbo_stream { render turbo_stream: turbo_stream.replace(dom_id(@<%= singular_name %>), partial: "<%= plural_name %>/<%= singular_name %>", locals: {<%= singular_name %>: @<%= singular_name %>}) }
|
|
32
|
+
format.html { redirect_to <%= plural_name %>_path, notice: "<%= singular_name %> was successfully created." }
|
|
33
|
+
else
|
|
34
|
+
format.html { render :edit, status: :unprocessable_entity }
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def edit
|
|
40
|
+
authorize @<%= singular_name %>
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def update
|
|
44
|
+
authorize @<%= singular_name %>
|
|
45
|
+
|
|
46
|
+
update_params = <%= singular_name %>_params.to_hash.deep_symbolize_keys
|
|
47
|
+
|
|
48
|
+
respond_to do |format|
|
|
49
|
+
if @<%= singular_name %>.update(update_params)
|
|
50
|
+
format.turbo_stream { render turbo_stream: turbo_stream.replace(dom_id(@<%= singular_name %>), partial: "<%= plural_name %>/<%= singular_name %>", locals: {<%= singular_name %>: @<%= singular_name %>}) }
|
|
51
|
+
format.html { redirect_to <%= plural_name %>_path, notice: "<%= singular_name %> was successfully updated." }
|
|
52
|
+
else
|
|
53
|
+
format.html { render :edit, status: :unprocessable_entity }
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def destroy
|
|
59
|
+
authorize @<%= singular_name %>
|
|
60
|
+
|
|
61
|
+
@<%= singular_name.camelize %>.discard
|
|
62
|
+
|
|
63
|
+
respond_to do |format|
|
|
64
|
+
format.turbo_stream
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
private
|
|
69
|
+
|
|
70
|
+
def load_<%= plural_name %>
|
|
71
|
+
builder = <%= singular_name %>_scope
|
|
72
|
+
builder = builder.where("content ilike ?", "%#{params[:q]}%") if params[:q].present?
|
|
73
|
+
|
|
74
|
+
builder = builder.order(id: :desc)
|
|
75
|
+
|
|
76
|
+
@pagy, @<%= plural_name %> = pagy(builder)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def load_<%= singular_name %>
|
|
80
|
+
@<%= singular_name %> = <%= singular_name %>_scope.find(params[:id] || params[:<%= singular_name %>_id])
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def <%= singular_name %>_scope
|
|
84
|
+
singular_name.camelize
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def <%= singular_name %>_params
|
|
88
|
+
params.require(:<%= singular_name %>).permit(:id)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
class <%= @namespace %>::<%= singular_name.camelize %>Policy < ApplicationPolicy
|
|
2
|
+
def index?
|
|
3
|
+
true
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def show?
|
|
7
|
+
true
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def new?
|
|
11
|
+
true
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def create?
|
|
15
|
+
true
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def edit?
|
|
19
|
+
true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def update?
|
|
23
|
+
true
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def destroy?
|
|
27
|
+
true
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
class <%= singular_name.camelize %>Policy < ApplicationPolicy
|
|
2
|
+
def index?
|
|
3
|
+
true
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def show?
|
|
7
|
+
true
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def new?
|
|
11
|
+
true
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def create?
|
|
15
|
+
true
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def edit?
|
|
19
|
+
true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def update?
|
|
23
|
+
true
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def destroy?
|
|
27
|
+
true
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
= form_with(model: <%= singular_name %>, class: "py-2") do |form|
|
|
2
|
+
- if <%= singular_name %>.errors.any?
|
|
3
|
+
%h2= "#{pluralize(<%= singular_name %>.errors.count, "error")} prohibited this <%= singular_name %> from being saved:"
|
|
4
|
+
%ul
|
|
5
|
+
- <%= singular_name %>.errors.each do |error|
|
|
6
|
+
%li= error.full_message
|
|
7
|
+
%div{class: "space-y-2"}
|
|
8
|
+
%div
|
|
9
|
+
%div{class: "text-gray-500 text-xs"}= form.label :id, "ID"
|
|
10
|
+
%div= form.text_field :id, class: "border p-1 w-full rounded-md"
|
|
11
|
+
%div
|
|
12
|
+
%div= form.submit "确认", class: "px-2 py-0.5 rounded-md bg-gray-800 text-white"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
= turbo_frame_tag dom_id(<%= singular_name %>) do
|
|
2
|
+
%div{class: "flex flex-col space-y-2 border rounded-md p-2 mt-2"}
|
|
3
|
+
%div{class: "flex justify-between text-xs"}
|
|
4
|
+
%span{class: "font-bold"}
|
|
5
|
+
= "##{<%= singular_name %>.id}"
|
|
6
|
+
%span{class: "text-gray-500"}
|
|
7
|
+
= link_to <%= singular_name %>.created_at, <%= singular_name %>, data: {turbo: false}
|
|
8
|
+
%div{class: "space-y-0.5"}
|
|
9
|
+
%div{class: "text-xl font-meidum"}= <%= singular_name %>.id
|
|
10
|
+
%div{class: "flex justify-end space-x-2 text-sm text-blue-600"}
|
|
11
|
+
%span
|
|
12
|
+
= link_to '编辑', edit_<%= singular_name %>_path(<%= singular_name %>)
|
|
13
|
+
%span
|
|
14
|
+
= button_to '删除', <%= singular_name %>, method: :delete, data: { confirm: 'Are you sure?' }, class: "cursor-pointer bg-white text-red-600"%
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
= turbo_stream.remove(@<%= singular_name %>)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
= turbo_frame_tag dom_id(@<%= singular_name %>) do
|
|
2
|
+
%div{class: "bg-gray-100 p-2 rounded-lg"}
|
|
3
|
+
%div{class: "flex justify-between"}
|
|
4
|
+
%div{class: "text-lg font-bold"} 编辑
|
|
5
|
+
%div= link_to '返回', <%= plural_name %>_path, class: "text-gray-500"
|
|
6
|
+
= render 'form', <%= singular_name %>: @<%= singular_name %>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
%div{class: "flex flex-col space-y-2 justify-center"}
|
|
2
|
+
%div{class: "flex justify-between"}
|
|
3
|
+
%div
|
|
4
|
+
= form_with(url: <%= plural_name %>_path, method: :get, class: "flex items-center") do |f|
|
|
5
|
+
%div{class: "space-x-0.5"}
|
|
6
|
+
= f.text_field :q, value: params[:q], placeholder: "关键词", class: "border rounded-md m py-0.5 px-1"
|
|
7
|
+
= f.select :filter, options_for_select([%w[条件一 one]], params[:filter]), {include_blank: "-- 筛选条件 --"}, class: "border rounded-md m py-0.5 px-1"
|
|
8
|
+
= f.submit "检索", class: "rounded-md px-2 py-1 text-sm bg-black text-white cursor-pointer"
|
|
9
|
+
= link_to "重置", <%= plural_name %>_path, class: "text-sm"
|
|
10
|
+
%div
|
|
11
|
+
%span{class: "text-sm text-gray-600"}="共 #{@pagy.count} 条"
|
|
12
|
+
= link_to '新增', new_<%= singular_name %>_path, class: "rounded-md px-2 py-1 text-sm bg-black text-white cursor-pointer"
|
|
13
|
+
%div
|
|
14
|
+
- if @<%= plural_name %>.blank?
|
|
15
|
+
%div{class: "flex justify-center text-gray-500 p-8 border rounded-md"} 空空如也
|
|
16
|
+
- else
|
|
17
|
+
- @<%= plural_name %>.each do |<%= singular_name %>|
|
|
18
|
+
= render <%= singular_name %>
|
|
19
|
+
%div{class: "flex justify-center"}
|
|
20
|
+
= raw pagy_nav(@pagy)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
= render @<%= singular_name %>
|
data/lib/mint_bot/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mint_bot
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 42up
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-12-
|
|
11
|
+
date: 2021-12-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -16,20 +16,20 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 6.
|
|
19
|
+
version: 6.0.4
|
|
20
20
|
- - ">="
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: 6.
|
|
22
|
+
version: 6.0.4.1
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
26
|
requirements:
|
|
27
27
|
- - "~>"
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: 6.
|
|
29
|
+
version: 6.0.4
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 6.
|
|
32
|
+
version: 6.0.4.1
|
|
33
33
|
description: Write a longer description or delete this line.
|
|
34
34
|
email:
|
|
35
35
|
- foobar@v2up.com
|
|
@@ -49,10 +49,26 @@ files:
|
|
|
49
49
|
- app/models/mint_bot/application_record.rb
|
|
50
50
|
- app/views/layouts/mint_bot/application.html.erb
|
|
51
51
|
- config/routes.rb
|
|
52
|
+
- lib/generators/composer/USAGE
|
|
53
|
+
- lib/generators/composer/composer_generator.rb
|
|
54
|
+
- lib/generators/composer/templates/controllers/controller.rb.erb
|
|
55
|
+
- lib/generators/composer/templates/controllers/namespace_controller.rb.erb
|
|
56
|
+
- lib/generators/composer/templates/models/model.rb.erb
|
|
57
|
+
- lib/generators/composer/templates/policies/namespace_pundit.rb.erb
|
|
58
|
+
- lib/generators/composer/templates/policies/pundit.rb.erb
|
|
59
|
+
- lib/generators/composer/templates/routes/route.rb.erb
|
|
60
|
+
- lib/generators/composer/templates/serializers/namespace_serializer.rb.erb
|
|
61
|
+
- lib/generators/composer/templates/serializers/serializer.rb.erb
|
|
62
|
+
- lib/generators/composer/templates/views/_form.html.erb
|
|
63
|
+
- lib/generators/composer/templates/views/_record.html.erb
|
|
64
|
+
- lib/generators/composer/templates/views/destroy.html.erb
|
|
65
|
+
- lib/generators/composer/templates/views/edit.html.erb
|
|
66
|
+
- lib/generators/composer/templates/views/index.html.erb
|
|
67
|
+
- lib/generators/composer/templates/views/new.html.erb
|
|
68
|
+
- lib/generators/composer/templates/views/show.html.erb
|
|
52
69
|
- lib/mint_bot.rb
|
|
53
70
|
- lib/mint_bot/engine.rb
|
|
54
71
|
- lib/mint_bot/version.rb
|
|
55
|
-
- lib/tasks/mint_bot_tasks.rake
|
|
56
72
|
homepage: https://github.com/42up/mint_bot.git
|
|
57
73
|
licenses:
|
|
58
74
|
- MIT
|