mint_bot 0.1.0 → 0.1.1

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: 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