rails-formation 0.0.0.6 → 0.0.0.7
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/version.rb +1 -1
- data/lib/rails_formation.rb +16 -85
- data/rails-formation.gemspec +0 -3
- metadata +2 -64
- data/lib/rails-formation/formatters/controller.rb +0 -42
- data/lib/rails-formation/formatters/factories/column.rb +0 -63
- data/lib/rails-formation/formatters/factories/default_value.rb +0 -27
- data/lib/rails-formation/formatters/factories/value.rb +0 -78
- data/lib/rails-formation/formatters/factory.rb +0 -38
- data/lib/rails-formation/formatters/migration.rb +0 -56
- data/lib/rails-formation/formatters/migrations/column.rb +0 -33
- data/lib/rails-formation/formatters/migrations/index.rb +0 -30
- data/lib/rails-formation/formatters/migrations/options.rb +0 -19
- data/lib/rails-formation/formatters/model.rb +0 -49
- data/lib/rails-formation/formatters/models/association.rb +0 -37
- data/lib/rails-formation/formatters/models/validation.rb +0 -41
- data/lib/rails-formation/formatters/models/validations/base.rb +0 -62
- data/lib/rails-formation/formatters/models/validations/comparsion.rb +0 -31
- data/lib/rails-formation/formatters/models/validations/confirmation.rb +0 -19
- data/lib/rails-formation/formatters/models/validations/exclusion.rb +0 -25
- data/lib/rails-formation/formatters/models/validations/format.rb +0 -31
- data/lib/rails-formation/formatters/models/validations/inclusion.rb +0 -25
- data/lib/rails-formation/formatters/models/validations/length.rb +0 -58
- data/lib/rails-formation/formatters/models/validations/numericality.rb +0 -59
- data/lib/rails-formation/formatters/models/validations/presence.rb +0 -19
- data/lib/rails-formation/formatters/models/validations/uniqueness.rb +0 -58
- data/lib/rails-formation/formatters/route.rb +0 -28
- data/lib/rails-formation/formatters/routes/resource.rb +0 -73
- data/lib/rails-formation/formatters/rubygem.rb +0 -24
- data/lib/rails-formation/formatters/rubygems/gem.rb +0 -56
- data/lib/rails-formation/formatters/seed.rb +0 -30
- data/lib/rails-formation/formatters/seeds/row.rb +0 -19
- data/lib/rails-formation/templates/controller.rb.tt +0 -20
- data/lib/rails-formation/templates/factory.rb.tt +0 -10
- data/lib/rails-formation/templates/migration.rb.tt +0 -16
- data/lib/rails-formation/templates/model.rb.tt +0 -12
- data/lib/rails-formation/templates/routes.rb.tt +0 -24
- data/lib/rails-formation/templates/seeds.rb.tt +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e81589480aa07b6cb398acdf1a67041c2e6c64fd064f34ddfaadab0adb0d38e
|
4
|
+
data.tar.gz: 5a959729cecd94d4582daaec57da1c4ec64d796fc69e7bff4129b698e86b87fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44f2a5437bcb97dd274f96b76c343e387a7b1c72600a4da96f217c1cf6f51db7d99e10d05954e2c2f15703f3fd1e405fd0330c242e3384ba7f1630493dcc0f6b
|
7
|
+
data.tar.gz: 07700bfbc719f185cd5c49c82c2b9a8adf9e3b4c8d934814c622c90d1f641de92e835c5a7ad043cf8339a5ca48e5e20b88fdc7e758a17432d1299d12040e2259
|
data/lib/rails_formation.rb
CHANGED
@@ -1,13 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
4
|
-
require 'rails-formation/formatters/migration'
|
5
|
-
require 'rails-formation/formatters/rubygem'
|
6
|
-
require 'rails-formation/formatters/model'
|
7
|
-
require 'rails-formation/formatters/factory'
|
8
|
-
require 'rails-formation/formatters/seed'
|
9
|
-
require 'rails-formation/formatters/route'
|
10
|
-
require 'rails-formation/formatters/controller'
|
3
|
+
require 'fileutils'
|
11
4
|
require 'rails-formation/cli/file_adapter'
|
12
5
|
require 'rails-formation/cli/api_adapter'
|
13
6
|
require 'rails-formation/cli/processor'
|
@@ -20,13 +13,11 @@ module RailsFormation
|
|
20
13
|
def apply(template)
|
21
14
|
verify_rails_installation
|
22
15
|
generate_project(template)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
create_routes(template.fetch('routes', []))
|
29
|
-
create_controllers(template.fetch('controllers', []))
|
16
|
+
generate_files(template.fetch('files', []))
|
17
|
+
|
18
|
+
template.fetch('commands', []).each do |project_command|
|
19
|
+
system(project_command)
|
20
|
+
end
|
30
21
|
end
|
31
22
|
|
32
23
|
private
|
@@ -43,77 +34,17 @@ module RailsFormation
|
|
43
34
|
Dir.chdir(template['app_name'])
|
44
35
|
end
|
45
36
|
|
46
|
-
def
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
rubygems.each do |config|
|
58
|
-
config.fetch('install_commands', []).map { |command| system(command) }
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def create_and_run_migrations(migrations)
|
63
|
-
return if migrations.size.zero?
|
64
|
-
|
65
|
-
migrations.each do |config|
|
66
|
-
table_name = config.fetch('table')
|
67
|
-
migration_name = "#{Time.now.strftime('%Y%m%d%H%M%S')}_create_#{table_name}.rb"
|
68
|
-
migration_path = File.join(Dir.pwd, 'db', 'migrate', migration_name)
|
69
|
-
::RailsFormation::Formatters::Migration.new([config, migration_path]).invoke_all
|
70
|
-
sleep(1)
|
71
|
-
end
|
72
|
-
|
73
|
-
system('./bin/rails db:create')
|
74
|
-
system('./bin/rails db:migrate')
|
75
|
-
end
|
76
|
-
|
77
|
-
def create_factories(factories)
|
78
|
-
factories.each do |config|
|
79
|
-
factory_name = "#{config.fetch('name')}.rb"
|
80
|
-
factory_path = File.join(Dir.pwd, 'spec', 'factories', factory_name)
|
81
|
-
::RailsFormation::Formatters::Factory.new([config, factory_path]).invoke_all
|
37
|
+
def generate_files(files)
|
38
|
+
files.each do |section|
|
39
|
+
section_name = section.keys.first
|
40
|
+
puts "\e[0;39;44m#{section_name}\e[0m"
|
41
|
+
section[section_name].each do |config|
|
42
|
+
puts " -> \e[1;32;49mCreate\e[0m #{config['file_path']}"
|
43
|
+
file_path = File.join(Dir.pwd, config['file_path'])
|
44
|
+
FileUtils.mkdir_p(File.dirname(file_path))
|
45
|
+
File.write(file_path, config['code'])
|
46
|
+
end
|
82
47
|
end
|
83
48
|
end
|
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
|
-
|
93
|
-
def create_and_build_models(models)
|
94
|
-
models.each do |config|
|
95
|
-
model_name = "#{config.fetch('file_name').downcase}.rb"
|
96
|
-
model_path = File.join(Dir.pwd, 'app', 'models', model_name)
|
97
|
-
|
98
|
-
::RailsFormation::Formatters::Model.new([config, model_path]).invoke_all
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
def insert_seeds(seeds)
|
103
|
-
return if seeds.size.zero?
|
104
|
-
|
105
|
-
seeds_path = File.join(Dir.pwd, 'db', 'seeds.rb')
|
106
|
-
|
107
|
-
::RailsFormation::Formatters::Seed.new([seeds, seeds_path]).invoke_all
|
108
|
-
|
109
|
-
system('./bin/rails db:seed')
|
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
|
118
49
|
end
|
119
50
|
end
|
data/rails-formation.gemspec
CHANGED
@@ -28,9 +28,6 @@ Gem::Specification.new do |spec|
|
|
28
28
|
|
29
29
|
spec.required_ruby_version = '>= 2.7.0'
|
30
30
|
|
31
|
-
spec.add_runtime_dependency 'ffaker', '~> 2.20.0'
|
32
|
-
spec.add_runtime_dependency 'thor', '~> 1.2.1'
|
33
|
-
|
34
31
|
spec.add_development_dependency 'bundler'
|
35
32
|
spec.add_development_dependency 'rake'
|
36
33
|
spec.add_development_dependency 'rspec'
|
metadata
CHANGED
@@ -1,43 +1,15 @@
|
|
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.7
|
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-05-
|
11
|
+
date: 2022-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: ffaker
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 2.20.0
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 2.20.0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: thor
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.2.1
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 1.2.1
|
41
13
|
- !ruby/object:Gem::Dependency
|
42
14
|
name: bundler
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -121,40 +93,6 @@ files:
|
|
121
93
|
- lib/rails-formation/cli/api_adapter.rb
|
122
94
|
- lib/rails-formation/cli/file_adapter.rb
|
123
95
|
- lib/rails-formation/cli/processor.rb
|
124
|
-
- lib/rails-formation/formatters/controller.rb
|
125
|
-
- lib/rails-formation/formatters/factories/column.rb
|
126
|
-
- lib/rails-formation/formatters/factories/default_value.rb
|
127
|
-
- lib/rails-formation/formatters/factories/value.rb
|
128
|
-
- lib/rails-formation/formatters/factory.rb
|
129
|
-
- lib/rails-formation/formatters/migration.rb
|
130
|
-
- lib/rails-formation/formatters/migrations/column.rb
|
131
|
-
- lib/rails-formation/formatters/migrations/index.rb
|
132
|
-
- lib/rails-formation/formatters/migrations/options.rb
|
133
|
-
- lib/rails-formation/formatters/model.rb
|
134
|
-
- lib/rails-formation/formatters/models/association.rb
|
135
|
-
- lib/rails-formation/formatters/models/validation.rb
|
136
|
-
- lib/rails-formation/formatters/models/validations/base.rb
|
137
|
-
- lib/rails-formation/formatters/models/validations/comparsion.rb
|
138
|
-
- lib/rails-formation/formatters/models/validations/confirmation.rb
|
139
|
-
- lib/rails-formation/formatters/models/validations/exclusion.rb
|
140
|
-
- lib/rails-formation/formatters/models/validations/format.rb
|
141
|
-
- lib/rails-formation/formatters/models/validations/inclusion.rb
|
142
|
-
- lib/rails-formation/formatters/models/validations/length.rb
|
143
|
-
- lib/rails-formation/formatters/models/validations/numericality.rb
|
144
|
-
- lib/rails-formation/formatters/models/validations/presence.rb
|
145
|
-
- lib/rails-formation/formatters/models/validations/uniqueness.rb
|
146
|
-
- lib/rails-formation/formatters/route.rb
|
147
|
-
- lib/rails-formation/formatters/routes/resource.rb
|
148
|
-
- lib/rails-formation/formatters/rubygem.rb
|
149
|
-
- lib/rails-formation/formatters/rubygems/gem.rb
|
150
|
-
- lib/rails-formation/formatters/seed.rb
|
151
|
-
- lib/rails-formation/formatters/seeds/row.rb
|
152
|
-
- lib/rails-formation/templates/controller.rb.tt
|
153
|
-
- lib/rails-formation/templates/factory.rb.tt
|
154
|
-
- lib/rails-formation/templates/migration.rb.tt
|
155
|
-
- lib/rails-formation/templates/model.rb.tt
|
156
|
-
- lib/rails-formation/templates/routes.rb.tt
|
157
|
-
- lib/rails-formation/templates/seeds.rb.tt
|
158
96
|
- lib/rails-formation/version.rb
|
159
97
|
- lib/rails_formation.rb
|
160
98
|
- rails-formation.gemspec
|
@@ -1,42 +0,0 @@
|
|
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
|
@@ -1,63 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'default_value'
|
4
|
-
require_relative 'value'
|
5
|
-
|
6
|
-
module RailsFormation
|
7
|
-
module Formatters
|
8
|
-
module Factories
|
9
|
-
class Column
|
10
|
-
def initialize(config)
|
11
|
-
@config = config
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_s
|
15
|
-
if @config.key?('has_confirmation')
|
16
|
-
base_part = "#{name} { #{value} }"
|
17
|
-
"#{base_part}\n #{name}_confirmation { #{name} }"
|
18
|
-
else
|
19
|
-
"#{name} { #{value} }"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def name
|
26
|
-
@config.fetch('name')
|
27
|
-
end
|
28
|
-
|
29
|
-
def sql_type
|
30
|
-
@config.fetch('sql_type')
|
31
|
-
end
|
32
|
-
|
33
|
-
def specialized
|
34
|
-
@config.fetch('specialized')
|
35
|
-
end
|
36
|
-
|
37
|
-
def use_sql_type?
|
38
|
-
specialized == 'default'
|
39
|
-
end
|
40
|
-
|
41
|
-
def default_value
|
42
|
-
::RailsFormation::Formatters::Factories::DefaultValue
|
43
|
-
end
|
44
|
-
|
45
|
-
def value
|
46
|
-
if @config.key?('in')
|
47
|
-
"#{@config.fetch('in')}.sample"
|
48
|
-
else
|
49
|
-
raw_value
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def raw_value
|
54
|
-
if use_sql_type?
|
55
|
-
::RailsFormation::Formatters::Factories::DefaultValue.detect(sql_type)
|
56
|
-
else
|
57
|
-
::RailsFormation::Formatters::Factories::Value.detect(specialized)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RailsFormation
|
4
|
-
module Formatters
|
5
|
-
module Factories
|
6
|
-
class DefaultValue
|
7
|
-
MAPPINGS = {
|
8
|
-
'string' => 'FFaker::Lorem.sentence',
|
9
|
-
'text' => 'FFaker::Lorem.sentence(50)',
|
10
|
-
'boolean' => 'FFaker::Boolean.maybe',
|
11
|
-
'time' => 'Time.zone.now',
|
12
|
-
'date' => 'FFaker::Time.date',
|
13
|
-
'float' => 'FFaker::Number.decimal',
|
14
|
-
'decimal' => 'FFaker::Number.decimal',
|
15
|
-
'integer' => 'FFaker::Number.number',
|
16
|
-
'binary' => '',
|
17
|
-
'timestamp' => 'Time.now.getutc',
|
18
|
-
'datetime' => 'DateTime.now'
|
19
|
-
}.freeze
|
20
|
-
|
21
|
-
def self.detect(sql_type)
|
22
|
-
MAPPINGS[sql_type]
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RailsFormation
|
4
|
-
module Formatters
|
5
|
-
module Factories
|
6
|
-
class Value
|
7
|
-
MAPPINGS = {
|
8
|
-
'first_name' => 'FFaker::Name.first_name',
|
9
|
-
'last_name' => 'FFaker::Name.last_name',
|
10
|
-
'zip_code' => 'FFaker::AddressUS.zip_code',
|
11
|
-
'state' => 'FFaker::AddressUS.state',
|
12
|
-
'city' => 'FFaker::Address.city',
|
13
|
-
'street_name' => 'FFaker::Address.street_name',
|
14
|
-
'building_number' => 'FFaker::Address.building_number',
|
15
|
-
'country_code' => 'FFaker::Address.country_code',
|
16
|
-
'country' => 'FFaker::Address.country',
|
17
|
-
'time_zone' => 'FFaker::Address.time_zone',
|
18
|
-
'plane_name' => 'FFaker::Airline.name',
|
19
|
-
'flight_number' => 'FFaker::Airline.flight_number',
|
20
|
-
'animal' => 'FFaker::AnimalUS.common_name',
|
21
|
-
'iban' => 'FFaker::Bank.iban',
|
22
|
-
'card_number' => 'FFaker::Bank.card_number',
|
23
|
-
'card_type' => 'FFaker::Bank.card_number',
|
24
|
-
'card_expiry_date' => 'FFaker::Bank.card_expiry_date',
|
25
|
-
'book_title' => 'FFaker::Book.title',
|
26
|
-
'book_genre' => 'FFaker::Book.genre',
|
27
|
-
'book_author' => 'FFaker::Book.author',
|
28
|
-
'book_isbn' => 'FFaker::Book.isbn',
|
29
|
-
'boolean' => 'FFaker::Boolean.maybe',
|
30
|
-
'color' => 'FFaker::Color.name',
|
31
|
-
'color_hex_code' => 'FFaker::Color.hex_code',
|
32
|
-
'company_name' => 'FFaker::Company.name',
|
33
|
-
'position' => 'FFaker::Company.position',
|
34
|
-
'currency_code' => 'FFaker::Currency.code',
|
35
|
-
'currency_name' => 'FFaker::Currency.name',
|
36
|
-
'currency_symbol' => 'FFaker::Currency.symbol',
|
37
|
-
'education_degree' => 'FFaker::Education.degree',
|
38
|
-
'school_name' => 'FFaker::Education.school_name',
|
39
|
-
'ingredient' => 'FFaker::Food.ingredient',
|
40
|
-
'vegetable' => 'FFaker::Food.vegetable',
|
41
|
-
'fruit' => 'FFaker::Food.fruit',
|
42
|
-
'meat' => 'FFaker::Food.meat',
|
43
|
-
'game_title' => 'FFaker::Game.title',
|
44
|
-
'game_category' => 'FFaker::Game.category',
|
45
|
-
'gender_binary' => 'FFaker::Gender.binary',
|
46
|
-
'gender_random' => 'FFaker::Gender.random',
|
47
|
-
'latitude' => 'FFaker::Geolocation.lat',
|
48
|
-
'longitude' => 'FFaker::Geolocation.lng',
|
49
|
-
'email' => 'FFaker::Internet.email',
|
50
|
-
'username' => 'FFaker::Internet.user_name',
|
51
|
-
'domain' => 'FFaker::Internet.domain_name',
|
52
|
-
'slug' => "FFaker::Internet.slug(nil, '-')",
|
53
|
-
'job_title' => 'FFaker::Job.title',
|
54
|
-
'locale' => 'FFaker::Locale.code',
|
55
|
-
'language' => 'FFaker::Locale.language',
|
56
|
-
'movie' => 'FFaker::Movie.title',
|
57
|
-
'name' => 'FFaker::Name.name',
|
58
|
-
'number' => 'FFaker::Number.number',
|
59
|
-
'decimal' => 'FFaker::Number.decimal',
|
60
|
-
'phone_number' => 'FFaker::PhoneNumber.phone_number',
|
61
|
-
'brand_name' => 'FFaker::Product.brand',
|
62
|
-
'product_name' => 'FFaker::Product.product_name',
|
63
|
-
'tech_skill' => 'FFaker::Skill.tech_skill',
|
64
|
-
'specialty' => 'FFaker::Skill.specialty',
|
65
|
-
'sport_name' => 'FFaker::SportUS.name',
|
66
|
-
'ssn' => 'FFaker::SSN.ssn',
|
67
|
-
'month' => 'FFaker::Time.month',
|
68
|
-
'datetime' => 'FFaker::Time.datetime',
|
69
|
-
'date' => 'FFaker::Time.date'
|
70
|
-
}.freeze
|
71
|
-
|
72
|
-
def self.detect(specialized)
|
73
|
-
MAPPINGS[specialized]
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'factories/column'
|
4
|
-
|
5
|
-
module RailsFormation
|
6
|
-
module Formatters
|
7
|
-
class Factory < Thor::Group
|
8
|
-
include Thor::Actions
|
9
|
-
|
10
|
-
argument :factory_configuration
|
11
|
-
argument :factory_path
|
12
|
-
|
13
|
-
def create_factory
|
14
|
-
template('../templates/factory.rb.tt', factory_path)
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.source_root
|
18
|
-
__dir__
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def factory_name
|
24
|
-
factory_configuration.fetch('name')
|
25
|
-
end
|
26
|
-
|
27
|
-
def associations
|
28
|
-
factory_configuration.fetch('associations', [])
|
29
|
-
end
|
30
|
-
|
31
|
-
def columns
|
32
|
-
factory_configuration.fetch('fields', []).map do |config|
|
33
|
-
RailsFormation::Formatters::Factories::Column.new(config).to_s
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'migrations/column'
|
4
|
-
require_relative 'migrations/index'
|
5
|
-
require_relative 'migrations/options'
|
6
|
-
|
7
|
-
module RailsFormation
|
8
|
-
module Formatters
|
9
|
-
class Migration < Thor::Group
|
10
|
-
include Thor::Actions
|
11
|
-
|
12
|
-
argument :migration_configuration
|
13
|
-
argument :migration_path
|
14
|
-
|
15
|
-
def create_migration
|
16
|
-
template('../templates/migration.rb.tt', migration_path)
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.source_root
|
20
|
-
__dir__
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def table_name
|
26
|
-
migration_configuration.fetch('table')
|
27
|
-
end
|
28
|
-
|
29
|
-
def migration_name
|
30
|
-
migration_configuration.fetch('migration_name')
|
31
|
-
end
|
32
|
-
|
33
|
-
def timestamps?
|
34
|
-
migration_configuration.fetch('timestamps', false)
|
35
|
-
end
|
36
|
-
|
37
|
-
def table_options
|
38
|
-
RailsFormation::Formatters::Migrations::Options.new(
|
39
|
-
migration_configuration.fetch('options', [])
|
40
|
-
).to_s
|
41
|
-
end
|
42
|
-
|
43
|
-
def columns
|
44
|
-
migration_configuration.fetch('columns', []).map do |config|
|
45
|
-
RailsFormation::Formatters::Migrations::Column.new(config).to_s
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def indices
|
50
|
-
migration_configuration.fetch('indices', []).map do |config|
|
51
|
-
RailsFormation::Formatters::Migrations::Index.new(table_name, config).to_s
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RailsFormation
|
4
|
-
module Formatters
|
5
|
-
module Migrations
|
6
|
-
class Column
|
7
|
-
def initialize(config)
|
8
|
-
@config = config
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_s
|
12
|
-
base_definition = [
|
13
|
-
't.',
|
14
|
-
@config.fetch('type'),
|
15
|
-
' :',
|
16
|
-
@config.fetch('name')
|
17
|
-
].join
|
18
|
-
|
19
|
-
return base_definition if @config['options'].nil? || @config['options'].size.zero?
|
20
|
-
|
21
|
-
options = @config['options'].map do |option|
|
22
|
-
value = option['value']
|
23
|
-
parsed_value = value.is_a?(String) ? "'#{value}'" : value
|
24
|
-
|
25
|
-
"#{option['name']}: #{parsed_value}"
|
26
|
-
end.join(', ')
|
27
|
-
|
28
|
-
[base_definition, ', ', options].join
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RailsFormation
|
4
|
-
module Formatters
|
5
|
-
module Migrations
|
6
|
-
class Index
|
7
|
-
def initialize(table_name, config)
|
8
|
-
@table_name = table_name
|
9
|
-
@config = config
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_s
|
13
|
-
column_slug = if @config.fetch('column_names').size == 1
|
14
|
-
":#{@config.fetch('column_names').first}"
|
15
|
-
else
|
16
|
-
"[#{@config.fetch('column_names').map { |col| ":#{col}" }.join(', ')}]"
|
17
|
-
end
|
18
|
-
|
19
|
-
base_definition = "add_index :#{@table_name}, #{column_slug}"
|
20
|
-
|
21
|
-
return base_definition if @config.fetch('options', []).size.zero?
|
22
|
-
|
23
|
-
options = @config['options'].map { |option| option.values.join(': ') }.join(', ')
|
24
|
-
|
25
|
-
"#{base_definition}, #{options}"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RailsFormation
|
4
|
-
module Formatters
|
5
|
-
module Migrations
|
6
|
-
class Options
|
7
|
-
def initialize(options)
|
8
|
-
@options = options
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_s
|
12
|
-
return if @options.size.zero?
|
13
|
-
|
14
|
-
@options.map { |option| option.values.join(': ') }.join(', ')
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'models/validation'
|
4
|
-
require_relative 'models/association'
|
5
|
-
|
6
|
-
module RailsFormation
|
7
|
-
module Formatters
|
8
|
-
class Model < Thor::Group
|
9
|
-
include Thor::Actions
|
10
|
-
|
11
|
-
argument :model_configuration
|
12
|
-
argument :model_path
|
13
|
-
|
14
|
-
def create_model
|
15
|
-
template('../templates/model.rb.tt', model_path)
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.source_root
|
19
|
-
__dir__
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def class_name
|
25
|
-
model_configuration.fetch('name')
|
26
|
-
end
|
27
|
-
|
28
|
-
def associations
|
29
|
-
model_configuration.fetch('associations', []).map do |config|
|
30
|
-
RailsFormation::Formatters::Models::Association.new(config).to_s
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def validations
|
35
|
-
models_with_validations = model_configuration.fetch('columns', []).select do |config|
|
36
|
-
config.fetch('validations', []).size.positive?
|
37
|
-
end
|
38
|
-
|
39
|
-
models_with_validations.map do |config|
|
40
|
-
config.fetch('validations', []).map do |val_config|
|
41
|
-
::RailsFormation::Formatters::Models::Validation.new(
|
42
|
-
val_config.merge('column' => config.fetch('name'))
|
43
|
-
).to_s
|
44
|
-
end
|
45
|
-
end.flatten
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|