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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85064a261c9fe12f6bf2af9b931b2ca11fa79eda83705758e2e1cc7dec7df559
4
- data.tar.gz: 9cbe5526f1d9cedb1fed6095d9ba00ec2c5b638f6351d4807bc88e4dccb381d2
3
+ metadata.gz: 3490cf90564223abd179f82057e5912c65d5f5f339cab52780837433534afa68
4
+ data.tar.gz: 7e5bd6e2b665763e0b48cee1606e8d99ea1ca7533d89e31c7da0670faa5a9ff0
5
5
  SHA512:
6
- metadata.gz: 4fa385145af6f86f5de6ba2a936655e144de2256f4231f024d312d635f4043f3ba5f73bd4580fadef51ca381493dc9ccdf2d78b6cf24c6c8c7b6bcc739300265
7
- data.tar.gz: b4d349576dd91a9ac3b9c27b3363ccb52ddea18e2c6e8d5c4c48acf5e6129495117a4631d8b9066aa652d575c0e3481fd8296b913ff491a64b00f16e80eaf860
6
+ metadata.gz: 4cb30c0c6ce61562e6c1792e6064bf1d5a2fa5f17476f11b63c01db03ea87fbecf5be44ac9a2f816ee1e2c7793345898005ab9ab6feb3589cab1a40d8289f41a
7
+ data.tar.gz: 3e57f9b53f41c69ed5f2a6151d930098fb2557a2b4d9a85939a6c56937f80d8e2ed1d3f8eb4454a664eecf7c8a0172ef38457b89c29ecb0d36905ab5ade3da0b
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ rails generate composer Thing
6
+
7
+ This will create:
8
+ what/will/it/create
@@ -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,2 @@
1
+ class <%= @namespace.camelize %>::<%= plural_name.camelize %>Controller < <%= @namespace.camelize %>::ApplicationController
2
+ end
@@ -0,0 +1,3 @@
1
+ class <%= singular_name.camelize %> < ActiveRecord::Base
2
+ include Discard::Model
3
+ 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,5 @@
1
+ resources :<%= plural_name %>
2
+ resources :<%= plural_name %> do
3
+ get :foo
4
+ get :bar, on: :collection
5
+ end
@@ -0,0 +1,5 @@
1
+ module <%= @namespace %>
2
+ class <%= singular_name.camelize %>Serializer < ActiveModel::Serializer
3
+ attributes :id
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ class <%= singular_name.camelize %>Serializer < ActiveModel::Serializer
2
+ attributes :id
3
+ 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,5 @@
1
+ %div{class: "bg-gray-100 p-2 rounded-lg"}
2
+ %div{class: "flex justify-between"}
3
+ %div{class: "text-lg font-bold"} 添加
4
+ %div= link_to '返回', <%= plural_name %>_path, class: "text-gray-500"
5
+ = render 'form', <%= singular_name %>: @<%= singular_name %>
@@ -0,0 +1 @@
1
+ = render @<%= singular_name %>
@@ -1,3 +1,3 @@
1
1
  module MintBot
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
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.0
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-08 00:00:00.000000000 Z
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.1.4
19
+ version: 6.0.4
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 6.1.4.1
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.1.4
29
+ version: 6.0.4
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 6.1.4.1
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
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :mint_bot do
3
- # # Task goes here
4
- # end