rails_steroids 0.4.0 → 0.5.0
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/CHANGELOG.md +4 -0
- data/README.md +1 -0
- data/lib/generators/steroid/controller/controller_generator.rb +1 -1
- data/lib/generators/steroid/model/USAGE +22 -0
- data/lib/generators/steroid/model/model_generator.rb +77 -0
- data/lib/generators/steroid/steroid_generator.rb +1 -1
- data/lib/rails_steroids/cli.rb +1 -0
- data/lib/rails_steroids/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 575fafaef4cda7385ace12ae8c8c6ba3469ca6a8720eb54692240a79739ca6c1
|
4
|
+
data.tar.gz: 764ba190e5246e78820af6bae9598ab498258133b513f0cc26f7767bd90bb2ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73d18703d85c492632f3348941505cd748ff34855f4b293a8127128a5c278b07e7716b1e5f9754d296560846f0ce0304b23e7d0452a71b60b2f119d375a3453b
|
7
|
+
data.tar.gz: c9e6807f7f94a24e956ba7f1e7c8d0348495168c761f149cb8b573a7882f6bbfd823b90dcde840ffc4fa5ea4a8fea2c801f01d398936b60a5a8a9776fcb06492
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -49,6 +49,7 @@ and then enjoy easily entering or selecting options interactively to the questio
|
|
49
49
|
|
50
50
|
| Functionality | Command |
|
51
51
|
|---|---|
|
52
|
+
|model|`rails_steroids inject steroid:model`|
|
52
53
|
|controller|`rails_steroids inject steroid:controller`|
|
53
54
|
|new_project|`rails_steroids inject steroid:new_project`|
|
54
55
|
|
@@ -24,7 +24,7 @@ module Steroid
|
|
24
24
|
|
25
25
|
custom_actions = []
|
26
26
|
while prompt.select("Would you like to add more actions?", boolean_choices)
|
27
|
-
custom_actions << prompt.ask("
|
27
|
+
custom_actions << prompt.ask("Specify name of action:") do |q|
|
28
28
|
q.required true
|
29
29
|
q.modify :remove
|
30
30
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Description:
|
2
|
+
`steroid:model` will create Model interactively.
|
3
|
+
|
4
|
+
Usage Example:
|
5
|
+
# with installed gem
|
6
|
+
rails_steroids inject steroid:model
|
7
|
+
# with bundler
|
8
|
+
bin/rails g steroid:model
|
9
|
+
|
10
|
+
What will this do?:
|
11
|
+
Create new Rails model with configurations selected interactively.
|
12
|
+
Current options available to customize are:
|
13
|
+
* Model name
|
14
|
+
* Specify columns with column type and some other metadata
|
15
|
+
* Column metadata includes:
|
16
|
+
- limit for integer, string, text, binary
|
17
|
+
- precision and scale for decimal
|
18
|
+
- polymorphic for references
|
19
|
+
- index and unique index
|
20
|
+
* Skip creating migration?
|
21
|
+
* Skip created_at, updated_at timestamps?
|
22
|
+
* Skip indexes?
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'tty/prompt'
|
4
|
+
|
5
|
+
module Steroid
|
6
|
+
class ModelGenerator < Rails::Generators::Base
|
7
|
+
desc "Adds Model to the application"
|
8
|
+
source_root File.expand_path("templates", __dir__)
|
9
|
+
|
10
|
+
def add_model
|
11
|
+
say "Injecting steroid: Model", :green
|
12
|
+
cmd = ["rails generate model"]
|
13
|
+
prompt = TTY::Prompt.new
|
14
|
+
model_name = prompt.ask("What is the great name of your model?") do |q|
|
15
|
+
q.required true
|
16
|
+
q.modify :remove
|
17
|
+
end
|
18
|
+
cmd << model_name
|
19
|
+
|
20
|
+
boolean_choices = [{name: "yes", value: true}, {name: "no", value: false}]
|
21
|
+
|
22
|
+
columns = []
|
23
|
+
while prompt.select("Would you like to add model attributes(columns)?", boolean_choices)
|
24
|
+
|
25
|
+
column_name = prompt.ask("Specify name of column:") do |q|
|
26
|
+
q.required true
|
27
|
+
q.modify :remove
|
28
|
+
end
|
29
|
+
|
30
|
+
column_type = prompt.select("Choose type of column:", %w(references integer decimal float boolean binary string text date time datetime primary_key digest token))
|
31
|
+
|
32
|
+
if column_type == 'references'
|
33
|
+
column_type = "#{column_type}{polymorphic}" if prompt.select("Polymorphic association?", boolean_choices)
|
34
|
+
end
|
35
|
+
if %w(integer string text binary).include?(column_type)
|
36
|
+
if prompt.select("Set limit?", boolean_choices)
|
37
|
+
limit = prompt.ask("Specify limit:") do |q|
|
38
|
+
q.required true
|
39
|
+
q.modify :remove
|
40
|
+
q.convert(:int, "Invalid input! Please provide integer value.")
|
41
|
+
end
|
42
|
+
column_type = "#{column_type}{#{limit}}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
if column_type == 'decimal'
|
46
|
+
if prompt.select("Set precision & scale?", boolean_choices)
|
47
|
+
precision = prompt.ask("Specify precision:") do |q|
|
48
|
+
q.required true
|
49
|
+
q.modify :remove
|
50
|
+
q.convert(:int, "Invalid input! Please provide integer value.")
|
51
|
+
end
|
52
|
+
scale = prompt.ask("Specify scale:") do |q|
|
53
|
+
q.required true
|
54
|
+
q.modify :remove
|
55
|
+
q.convert(:int, "Invalid input! Please provide integer value.")
|
56
|
+
end
|
57
|
+
column_type = "'#{column_type}{#{precision},#{scale}}'"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
index_option = nil
|
62
|
+
if prompt.select("Add index?", boolean_choices)
|
63
|
+
index_option = prompt.select("Unique index?", boolean_choices) ? 'uniq' : 'index'
|
64
|
+
end
|
65
|
+
|
66
|
+
columns << [column_name, column_type, index_option].compact.join(':')
|
67
|
+
end
|
68
|
+
cmd += columns
|
69
|
+
|
70
|
+
cmd << "--no-migration" if prompt.select("Skip migration?", boolean_choices)
|
71
|
+
cmd << "--no-timestamps" if prompt.select("Skip created_at, updated_at timestamps?", boolean_choices)
|
72
|
+
cmd << "--no-indexes" if prompt.select("Skip indexes?", boolean_choices)
|
73
|
+
|
74
|
+
run cmd.join(" ")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/lib/rails_steroids/cli.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_steroids
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anand Bait
|
@@ -106,6 +106,8 @@ files:
|
|
106
106
|
- bin/setup
|
107
107
|
- lib/generators/steroid/controller/USAGE
|
108
108
|
- lib/generators/steroid/controller/controller_generator.rb
|
109
|
+
- lib/generators/steroid/model/USAGE
|
110
|
+
- lib/generators/steroid/model/model_generator.rb
|
109
111
|
- lib/generators/steroid/new_project/USAGE
|
110
112
|
- lib/generators/steroid/new_project/new_project_generator.rb
|
111
113
|
- lib/generators/steroid/steroid_generator.rb
|