rails-formation 0.0.0.4 → 0.0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rails-formation/formatters/controller.rb +42 -0
- data/lib/rails-formation/formatters/route.rb +28 -0
- data/lib/rails-formation/formatters/routes/resource.rb +73 -0
- data/lib/rails-formation/templates/controller.rb.tt +20 -0
- data/lib/rails-formation/templates/routes.rb.tt +24 -0
- data/lib/rails-formation/version.rb +1 -1
- data/lib/rails_formation.rb +20 -5
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9469ea562d25b27c66b6880818b7e4988d081657f6ca3239648e8b81ceaaa056
|
4
|
+
data.tar.gz: 5f00c9fa7aaa1ba25292d1d02ac6bad396eaaa38c7ee4a36587678a0317b79ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbd92ad8f1dc4afff5af17619048cf0e9a66788d89378f222d9e81cd096eb2893adf32dd1e558b32a80fa3972439f13039d05333e6f68135404dc6d0c4839bc8
|
7
|
+
data.tar.gz: 3226617d7cc7545841a28dc84c2d7a74e6ded6133aea534a213220841d976ab0e1561ee789a74e6d242957a3c1f9ec5c0d47fc449bb304fcc25a573160ae8030
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsFormation
|
4
|
+
module Formatters
|
5
|
+
class Controller < Thor::Group
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
argument :controller_configuration
|
9
|
+
argument :controller_path
|
10
|
+
|
11
|
+
def create_controller
|
12
|
+
template('../templates/controller.rb.tt', controller_path)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.source_root
|
16
|
+
__dir__
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def controller_class
|
22
|
+
controller_configuration.fetch('class_name')
|
23
|
+
end
|
24
|
+
|
25
|
+
def public_actions
|
26
|
+
controller_configuration.fetch('actions').select(&method(:public_action?)).map { |action| action['action'] }
|
27
|
+
end
|
28
|
+
|
29
|
+
def private_actions
|
30
|
+
controller_configuration.fetch('actions').select(&method(:private_action?)).map { |action| action['action'] }
|
31
|
+
end
|
32
|
+
|
33
|
+
def public_action?(action)
|
34
|
+
action['access'] == 'public'
|
35
|
+
end
|
36
|
+
|
37
|
+
def private_action?(action)
|
38
|
+
action['access'] == 'private'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'routes/resource'
|
4
|
+
|
5
|
+
module RailsFormation
|
6
|
+
module Formatters
|
7
|
+
class Route < Thor::Group
|
8
|
+
include Thor::Actions
|
9
|
+
|
10
|
+
argument :routes_configuration
|
11
|
+
argument :routes_path
|
12
|
+
|
13
|
+
def insert_routes
|
14
|
+
template('../templates/routes.rb.tt', routes_path)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.source_root
|
18
|
+
__dir__
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def resources
|
24
|
+
routes_configuration.map { |config| ::RailsFormation::Formatters::Routes::Resource.new(config) }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsFormation
|
4
|
+
module Formatters
|
5
|
+
module Routes
|
6
|
+
class Resource
|
7
|
+
def initialize(config)
|
8
|
+
@config = config
|
9
|
+
end
|
10
|
+
|
11
|
+
def start_line
|
12
|
+
if actions_line.nil?
|
13
|
+
"resources :#{resource_name}"
|
14
|
+
else
|
15
|
+
"resources :#{resource_name}, #{actions_line}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def additional_routes
|
20
|
+
mappings = {}
|
21
|
+
|
22
|
+
mappings['member'] = member_routes.map(&method(:build_route)) if member_routes.size.positive?
|
23
|
+
|
24
|
+
mappings['collection'] = collection_routes.map(&method(:build_route)) if collection_routes.size.positive?
|
25
|
+
|
26
|
+
mappings
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_block?
|
30
|
+
member_routes.size.positive? || collection_routes.size.positive?
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def build_route(route)
|
36
|
+
"#{route['request']} :#{route['action']}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def actions_line
|
40
|
+
return if actions.size == default_actions.size
|
41
|
+
|
42
|
+
if actions.size > 3
|
43
|
+
except_actions = (default_actions - actions).map { |action| ":#{action}" }
|
44
|
+
"except: [#{except_actions.join(', ')}]"
|
45
|
+
else
|
46
|
+
only_actions = actions.map { |action| ":#{action}" }
|
47
|
+
"only: [#{only_actions.join(', ')}]"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def resource_name
|
52
|
+
@config.fetch('resource')
|
53
|
+
end
|
54
|
+
|
55
|
+
def actions
|
56
|
+
@config.fetch('restful_actions')
|
57
|
+
end
|
58
|
+
|
59
|
+
def default_actions
|
60
|
+
%w[index show new create edit update destroy]
|
61
|
+
end
|
62
|
+
|
63
|
+
def member_routes
|
64
|
+
@config.fetch('additional_routes').fetch('member', [])
|
65
|
+
end
|
66
|
+
|
67
|
+
def collection_routes
|
68
|
+
@config.fetch('additional_routes').fetch('collection', [])
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class <%= controller_class %> < ApplicationController
|
2
|
+
<% if public_actions.any? -%>
|
3
|
+
<% public_actions.each do |action| -%>
|
4
|
+
def <%= action %>
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
<% end -%>
|
9
|
+
<% end -%>
|
10
|
+
<% if private_actions.any? -%>
|
11
|
+
private
|
12
|
+
|
13
|
+
<% private_actions.each do |action| -%>
|
14
|
+
def <%= action %>
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
<% end -%>
|
19
|
+
<% end -%>
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
<% resources.each do |resource| -%>
|
3
|
+
<% if resource.create_block? -%>
|
4
|
+
<%= resource.start_line -%> do
|
5
|
+
<% if resource.additional_routes.key?('member') -%>
|
6
|
+
member do
|
7
|
+
<% resource.additional_routes['member'].each do |route| -%>
|
8
|
+
<%= route %>
|
9
|
+
<% end -%>
|
10
|
+
end
|
11
|
+
<% end -%>
|
12
|
+
<% if resource.additional_routes.key?('collection') -%>
|
13
|
+
collection do
|
14
|
+
<% resource.additional_routes['collection'].each do |route| -%>
|
15
|
+
<%= route %>
|
16
|
+
<% end -%>
|
17
|
+
end
|
18
|
+
<% end -%>
|
19
|
+
end
|
20
|
+
<% else -%>
|
21
|
+
<%= resource.start_line %>
|
22
|
+
<% end -%>
|
23
|
+
<% end -%>
|
24
|
+
end
|
data/lib/rails_formation.rb
CHANGED
@@ -6,6 +6,8 @@ require 'rails-formation/formatters/rubygem'
|
|
6
6
|
require 'rails-formation/formatters/model'
|
7
7
|
require 'rails-formation/formatters/factory'
|
8
8
|
require 'rails-formation/formatters/seed'
|
9
|
+
require 'rails-formation/formatters/route'
|
10
|
+
require 'rails-formation/formatters/controller'
|
9
11
|
require 'rails-formation/cli/file_adapter'
|
10
12
|
require 'rails-formation/cli/api_adapter'
|
11
13
|
require 'rails-formation/cli/processor'
|
@@ -23,6 +25,8 @@ module RailsFormation
|
|
23
25
|
create_factories(template.fetch('factories', []))
|
24
26
|
create_and_build_models(template.fetch('models', []))
|
25
27
|
insert_seeds(template.fetch('seeds', []))
|
28
|
+
create_routes(template.fetch('routes', []))
|
29
|
+
create_controllers(template.fetch('controllers', []))
|
26
30
|
end
|
27
31
|
|
28
32
|
private
|
@@ -34,11 +38,7 @@ module RailsFormation
|
|
34
38
|
end
|
35
39
|
|
36
40
|
def generate_project(template)
|
37
|
-
|
38
|
-
system "rails _#{RailsFormation::RAILS_VERSION}_ new #{template['app_name']} --api -d=postgresql"
|
39
|
-
else
|
40
|
-
system "rails _#{RailsFormation::RAILS_VERSION}_ new #{template['app_name']} -d=postgresql"
|
41
|
-
end
|
41
|
+
system template['installation_command']
|
42
42
|
|
43
43
|
Dir.chdir(template['app_name'])
|
44
44
|
end
|
@@ -82,6 +82,14 @@ module RailsFormation
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
def create_controllers(controllers)
|
86
|
+
controllers.each do |config|
|
87
|
+
controller_path = File.join(Dir.pwd, 'app', 'controllers', config['file_name'])
|
88
|
+
|
89
|
+
::RailsFormation::Formatters::Controller.new([config, controller_path]).invoke_all
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
85
93
|
def create_and_build_models(models)
|
86
94
|
models.each do |config|
|
87
95
|
model_name = "#{config.fetch('file_name').downcase}.rb"
|
@@ -100,5 +108,12 @@ module RailsFormation
|
|
100
108
|
|
101
109
|
system('./bin/rails db:seed')
|
102
110
|
end
|
111
|
+
|
112
|
+
def create_routes(routes)
|
113
|
+
return if routes.size.zero?
|
114
|
+
|
115
|
+
routes_path = File.join(Dir.pwd, 'config', 'routes.rb')
|
116
|
+
::RailsFormation::Formatters::Route.new([routes, routes_path]).invoke_all
|
117
|
+
end
|
103
118
|
end
|
104
119
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-formation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.0.
|
4
|
+
version: 0.0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paweł Dąbrowski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffaker
|
@@ -121,6 +121,7 @@ files:
|
|
121
121
|
- lib/rails-formation/cli/api_adapter.rb
|
122
122
|
- lib/rails-formation/cli/file_adapter.rb
|
123
123
|
- lib/rails-formation/cli/processor.rb
|
124
|
+
- lib/rails-formation/formatters/controller.rb
|
124
125
|
- lib/rails-formation/formatters/factories/column.rb
|
125
126
|
- lib/rails-formation/formatters/factories/default_value.rb
|
126
127
|
- lib/rails-formation/formatters/factories/value.rb
|
@@ -142,13 +143,17 @@ files:
|
|
142
143
|
- lib/rails-formation/formatters/models/validations/numericality.rb
|
143
144
|
- lib/rails-formation/formatters/models/validations/presence.rb
|
144
145
|
- lib/rails-formation/formatters/models/validations/uniqueness.rb
|
146
|
+
- lib/rails-formation/formatters/route.rb
|
147
|
+
- lib/rails-formation/formatters/routes/resource.rb
|
145
148
|
- lib/rails-formation/formatters/rubygem.rb
|
146
149
|
- lib/rails-formation/formatters/rubygems/gem.rb
|
147
150
|
- lib/rails-formation/formatters/seed.rb
|
148
151
|
- lib/rails-formation/formatters/seeds/row.rb
|
152
|
+
- lib/rails-formation/templates/controller.rb.tt
|
149
153
|
- lib/rails-formation/templates/factory.rb.tt
|
150
154
|
- lib/rails-formation/templates/migration.rb.tt
|
151
155
|
- lib/rails-formation/templates/model.rb.tt
|
156
|
+
- lib/rails-formation/templates/routes.rb.tt
|
152
157
|
- lib/rails-formation/templates/seeds.rb.tt
|
153
158
|
- lib/rails-formation/version.rb
|
154
159
|
- lib/rails_formation.rb
|