corneal 1.1.0 → 1.2.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/README.md +5 -3
- data/lib/corneal.rb +1 -0
- data/lib/corneal/cli.rb +1 -0
- data/lib/corneal/generators/controller/controller_generator.rb +37 -0
- data/lib/corneal/generators/controller/templates/controller.rb.erb +37 -0
- data/lib/corneal/generators/{scaffold → controller}/templates/views/edit.html.erb +0 -0
- data/lib/corneal/generators/{scaffold → controller}/templates/views/index.html.erb +0 -0
- data/lib/corneal/generators/{scaffold → controller}/templates/views/new.html.erb +0 -0
- data/lib/corneal/generators/{scaffold → controller}/templates/views/show.html.erb +0 -0
- data/lib/corneal/generators/model/model_generator.rb +8 -7
- data/lib/corneal/generators/scaffold/scaffold_generator.rb +3 -49
- data/lib/corneal/version.rb +1 -1
- metadata +9 -10
- data/lib/corneal/generators/scaffold/templates/controller.rb.erb +0 -35
- data/lib/corneal/generators/scaffold/templates/migration.rb.erb +0 -10
- data/lib/corneal/generators/scaffold/templates/model.rb.erb +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c444b14f7fcbe5a6ce779b8a08fdb28dbdf0453
|
4
|
+
data.tar.gz: 0e3c5c61d406f57bae0b615fd92a1b14be18c370
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54de13986c030394f0e94d1f69b5715e4c32e5455bd62d6d46dbdf8396544bb499a30115e21a035283af35695248014b70e354e8de2c50a3187df4efd430aa1f
|
7
|
+
data.tar.gz: c3fa201a44db0de2d5f3e4d8baaa87b5053f1987b826d344a17339bc286e6a50ff772b902e7320664779e16ed0dd83d2928f3ac6d4d43de9d3f2e8161405154f
|
data/README.md
CHANGED
@@ -54,10 +54,12 @@ Directory structure:
|
|
54
54
|
```
|
55
55
|
corneal -v # Show Corneal version number
|
56
56
|
corneal help [COMMAND] # Describe available commands or one specific command
|
57
|
+
corneal new APP_PATH # Creates a new Sinatra application
|
57
58
|
corneal model NAME # Generate a model
|
58
|
-
corneal
|
59
|
-
corneal
|
59
|
+
corneal controller NAME # Generate a controller
|
60
|
+
corneal scaffold NAME # Generate a model with its associated views and controllers
|
60
61
|
```
|
62
|
+
The controller generator also have an optional views flag `--no-views` to create controllers without views.
|
61
63
|
|
62
64
|
## Using Corneal
|
63
65
|
|
@@ -80,7 +82,7 @@ You can generate a model and migration file:
|
|
80
82
|
|
81
83
|
You can also generate an entire MVC structure complete with a migration file:
|
82
84
|
|
83
|
-
|
85
|
+
corneal scaffold NAME
|
84
86
|
|
85
87
|
The resulting structure will look like this:
|
86
88
|
|
data/lib/corneal.rb
CHANGED
@@ -2,6 +2,7 @@ require "extensions/string"
|
|
2
2
|
require "corneal/generators/app/app_generator"
|
3
3
|
require "corneal/generators/model/model_generator"
|
4
4
|
require "corneal/generators/scaffold/scaffold_generator"
|
5
|
+
require "corneal/generators/controller/controller_generator"
|
5
6
|
require "corneal/version"
|
6
7
|
require "corneal/cli"
|
7
8
|
|
data/lib/corneal/cli.rb
CHANGED
@@ -14,6 +14,7 @@ module Corneal
|
|
14
14
|
# register(class_name, subcommand_alias, usage_list_string, description_string)
|
15
15
|
register Corneal::Generators::AppGenerator, "new", "new APP_PATH", "Creates a new Sinatra application"
|
16
16
|
register Corneal::Generators::ModelGenerator, "model", "model NAME", "Generate a model"
|
17
|
+
register Corneal::Generators::ControllerGenerator, "controller", "controller NAME", "Generate a controller"
|
17
18
|
register Corneal::Generators::ScaffoldGenerator, "scaffold", "scaffold NAME", "Generate a model with its associated views and controllers"
|
18
19
|
|
19
20
|
def self.exit_on_failure
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require "thor/group"
|
2
|
+
require "active_support/inflector"
|
3
|
+
|
4
|
+
module Corneal
|
5
|
+
module Generators
|
6
|
+
class ControllerGenerator < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
attr_reader :controller_name, :class_name, :file_name
|
9
|
+
|
10
|
+
desc "Generate an Controller with associated views"
|
11
|
+
argument :name, type: :string, desc: "Name of the controller"
|
12
|
+
|
13
|
+
# --no-views make views optional
|
14
|
+
class_option :views, type: :boolean, default: true, desc: "Generate views for controller"
|
15
|
+
|
16
|
+
def self.source_root
|
17
|
+
File.dirname(__FILE__)
|
18
|
+
end
|
19
|
+
|
20
|
+
def setup
|
21
|
+
@controller_name = name.pluralize.underscore
|
22
|
+
@class_name = "#{controller_name.camel_case}Controller"
|
23
|
+
@file_name = class_name.underscore
|
24
|
+
end
|
25
|
+
|
26
|
+
def create_controller
|
27
|
+
template "templates/controller.rb.erb", File.join("app/controllers", "#{file_name}.rb")
|
28
|
+
insert_into_file "config.ru", "use #{class_name}\n", after: "run ApplicationController\n"
|
29
|
+
end
|
30
|
+
|
31
|
+
def create_views
|
32
|
+
return unless options[:views]
|
33
|
+
directory "templates/views", File.join("app/views", "#{controller_name}")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class <%= class_name %> < ApplicationController
|
2
|
+
|
3
|
+
# GET: /<%= controller_name %>
|
4
|
+
get "/<%= controller_name %>" do
|
5
|
+
erb :"/<%= controller_name %>/index.html"
|
6
|
+
end
|
7
|
+
|
8
|
+
# GET: /<%= controller_name %>/new
|
9
|
+
get "/<%= controller_name %>/new" do
|
10
|
+
erb :"/<%= controller_name %>/new.html"
|
11
|
+
end
|
12
|
+
|
13
|
+
# POST: /<%= controller_name %>
|
14
|
+
post "/<%= controller_name %>" do
|
15
|
+
redirect "/<%= controller_name %>"
|
16
|
+
end
|
17
|
+
|
18
|
+
# GET: /<%= controller_name %>/5
|
19
|
+
get "/<%= controller_name %>/:id" do
|
20
|
+
erb :"/<%= controller_name %>/show.html"
|
21
|
+
end
|
22
|
+
|
23
|
+
# GET: /<%= controller_name %>/5/edit
|
24
|
+
get "/<%= controller_name %>/:id/edit" do
|
25
|
+
erb :"/<%= controller_name %>/edit.html"
|
26
|
+
end
|
27
|
+
|
28
|
+
# PATCH: /<%= controller_name %>/5
|
29
|
+
patch "/<%= controller_name %>/:id" do
|
30
|
+
redirect "/<%= controller_name %>/:id"
|
31
|
+
end
|
32
|
+
|
33
|
+
# DELETE: /<%= controller_name %>/5/delete
|
34
|
+
delete "/<%= controller_name %>/:id/delete" do
|
35
|
+
redirect "/<%= controller_name %>"
|
36
|
+
end
|
37
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require "thor/group"
|
2
|
-
require
|
2
|
+
require "active_support/inflector"
|
3
3
|
|
4
4
|
module Corneal
|
5
5
|
module Generators
|
@@ -8,9 +8,10 @@ module Corneal
|
|
8
8
|
attr_reader :file_name, :class_name, :model_name, :migration_name, :migration_class_name, :table_name
|
9
9
|
|
10
10
|
desc "Generate an ActiveRecord model"
|
11
|
-
argument :name, :
|
11
|
+
argument :name, type: :string, desc: "Name of the model"
|
12
12
|
argument :attributes, type: :array, default: [], banner: "field:type field:type"
|
13
13
|
|
14
|
+
# --no-migration make migrations optional
|
14
15
|
class_option :migration, type: :boolean, default: true, desc: "Generate migration for model"
|
15
16
|
|
16
17
|
def self.source_root
|
@@ -20,14 +21,14 @@ module Corneal
|
|
20
21
|
def setup
|
21
22
|
@model_name = name.singularize
|
22
23
|
@class_name = model_name.camel_case
|
23
|
-
@file_name = model_name.
|
24
|
-
@table_name =
|
25
|
-
@migration_name = "create_#{
|
26
|
-
@migration_class_name =
|
24
|
+
@file_name = model_name.underscore
|
25
|
+
@table_name = file_name.pluralize
|
26
|
+
@migration_name = "create_#{table_name}"
|
27
|
+
@migration_class_name = migration_name.camel_case
|
27
28
|
|
28
29
|
attributes.map! do |attribute|
|
29
30
|
field = attribute.split(":")
|
30
|
-
{ name: field[0], type:
|
31
|
+
{ name: field[0], type: field[1] || "string" }
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
@@ -5,63 +5,17 @@ module Corneal
|
|
5
5
|
module Generators
|
6
6
|
class ScaffoldGenerator < Thor::Group
|
7
7
|
include Thor::Actions
|
8
|
-
attr_reader :file_name, :class_name, :controller_class_name, :model_name, :migration_name, :migration_class_name, :table_name
|
9
8
|
|
10
9
|
desc "Generate an ActiveRecord model with it's associated views and controllers"
|
11
|
-
argument :name, :
|
10
|
+
argument :name, type: :string, desc: "Name of the model"
|
12
11
|
argument :attributes, type: :array, default: [], banner: "field:type field:type"
|
13
12
|
|
14
|
-
class_option :migration, type: :boolean, default: true, desc: "Generate migration for model"
|
15
|
-
|
16
|
-
def self.source_root
|
17
|
-
File.dirname(__FILE__)
|
18
|
-
end
|
19
|
-
|
20
|
-
def setup
|
21
|
-
@model_name = name.singularize
|
22
|
-
@class_name = model_name.camel_case
|
23
|
-
@controller_class_name = "#{@class_name.pluralize}Controller"
|
24
|
-
@file_name = model_name.file_name
|
25
|
-
@table_name = @file_name.pluralize
|
26
|
-
@migration_name = "create_#{@table_name}"
|
27
|
-
@migration_class_name = @migration_name.camel_case
|
28
|
-
|
29
|
-
attributes.map! do |attribute|
|
30
|
-
field = attribute.split(":")
|
31
|
-
{ name: field[0], type: (field[1] || "string") }
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
13
|
def create_model
|
36
|
-
|
37
|
-
say "[WARNING] The model name '#{name}' was recognized as a plural, using the singular '#{model_name}' instead."
|
38
|
-
end
|
39
|
-
|
40
|
-
template "templates/model.rb.erb", File.join("app/models", "#{file_name}.rb")
|
41
|
-
end
|
42
|
-
|
43
|
-
def create_views
|
44
|
-
directory "templates/views", File.join("app/views", "#{table_name}")
|
14
|
+
ModelGenerator.new([name, attributes]).invoke_all
|
45
15
|
end
|
46
16
|
|
47
17
|
def create_controller
|
48
|
-
|
49
|
-
insert_into_file "config.ru", "use #{controller_class_name}\n", :after => "run ApplicationController\n"
|
50
|
-
end
|
51
|
-
|
52
|
-
def create_migration
|
53
|
-
return unless options[:migration]
|
54
|
-
|
55
|
-
migration_files = Dir.entries("db/migrate").select { |path| !File.directory? path }
|
56
|
-
|
57
|
-
if duplicate = migration_files.find { |file| file.include?(migration_name) }
|
58
|
-
say_status :identical, "db/migrate/#{duplicate}", :blue
|
59
|
-
else
|
60
|
-
version = Time.now.utc.strftime("%Y%m%d%H%M%S")
|
61
|
-
migration_file_name = "#{version}_#{migration_name}.rb"
|
62
|
-
|
63
|
-
template "templates/migration.rb.erb", File.join("db/migrate", migration_file_name)
|
64
|
-
end
|
18
|
+
ControllerGenerator.new([name]).invoke_all
|
65
19
|
end
|
66
20
|
end
|
67
21
|
end
|
data/lib/corneal/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: corneal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Emory
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -108,17 +108,16 @@ files:
|
|
108
108
|
- lib/corneal/generators/app/templates/public/stylesheets/main.css
|
109
109
|
- lib/corneal/generators/app/templates/spec/application_controller_spec.rb
|
110
110
|
- lib/corneal/generators/app/templates/spec/spec_helper.rb
|
111
|
+
- lib/corneal/generators/controller/controller_generator.rb
|
112
|
+
- lib/corneal/generators/controller/templates/controller.rb.erb
|
113
|
+
- lib/corneal/generators/controller/templates/views/edit.html.erb
|
114
|
+
- lib/corneal/generators/controller/templates/views/index.html.erb
|
115
|
+
- lib/corneal/generators/controller/templates/views/new.html.erb
|
116
|
+
- lib/corneal/generators/controller/templates/views/show.html.erb
|
111
117
|
- lib/corneal/generators/model/migration.rb.erb
|
112
118
|
- lib/corneal/generators/model/model.rb.erb
|
113
119
|
- lib/corneal/generators/model/model_generator.rb
|
114
120
|
- lib/corneal/generators/scaffold/scaffold_generator.rb
|
115
|
-
- lib/corneal/generators/scaffold/templates/controller.rb.erb
|
116
|
-
- lib/corneal/generators/scaffold/templates/migration.rb.erb
|
117
|
-
- lib/corneal/generators/scaffold/templates/model.rb.erb
|
118
|
-
- lib/corneal/generators/scaffold/templates/views/edit.html.erb
|
119
|
-
- lib/corneal/generators/scaffold/templates/views/index.html.erb
|
120
|
-
- lib/corneal/generators/scaffold/templates/views/new.html.erb
|
121
|
-
- lib/corneal/generators/scaffold/templates/views/show.html.erb
|
122
121
|
- lib/corneal/version.rb
|
123
122
|
- lib/extensions/string.rb
|
124
123
|
- spec/corneal/cli_spec.rb
|
@@ -145,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
144
|
version: '0'
|
146
145
|
requirements: []
|
147
146
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.
|
147
|
+
rubygems_version: 2.5.1
|
149
148
|
signing_key:
|
150
149
|
specification_version: 4
|
151
150
|
summary: A Sinatra app generator.
|
@@ -1,35 +0,0 @@
|
|
1
|
-
class <%= @controller_class_name %> < ApplicationController
|
2
|
-
|
3
|
-
#Index Controller
|
4
|
-
get "/<%=@table_name%>" do
|
5
|
-
erb :"/<%=@table_name%>/index.html"
|
6
|
-
end
|
7
|
-
|
8
|
-
# New Item Controllers
|
9
|
-
get "/<%=@table_name%>/new" do
|
10
|
-
erb :"/<%=@table_name%>/new.html"
|
11
|
-
end
|
12
|
-
|
13
|
-
post "/<%=@table_name%>" do
|
14
|
-
redirect "/<%=@table_name%>"
|
15
|
-
end
|
16
|
-
|
17
|
-
# Show Item Controller
|
18
|
-
get "/<%=@table_name%>/:id" do
|
19
|
-
erb :"/<%=@table_name%>/show.html"
|
20
|
-
end
|
21
|
-
|
22
|
-
# Edit Item Controller
|
23
|
-
get "/<%=@table_name%>/:id/edit" do
|
24
|
-
erb :"/<%=@table_name%>/edit.html"
|
25
|
-
end
|
26
|
-
|
27
|
-
patch "/<%=@table_name%>" do
|
28
|
-
redirect "/<%=@table_name%>/:id"
|
29
|
-
end
|
30
|
-
|
31
|
-
# Delete Item Controller
|
32
|
-
delete "/<%=@table_name%>/:id/delete" do
|
33
|
-
redirect "/<%=@table_name%>"
|
34
|
-
end
|
35
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class <%= migration_class_name %> < ActiveRecord::Migration
|
2
|
-
def change
|
3
|
-
create_table :<%= table_name %> do |t|
|
4
|
-
<% attributes.each do |attribute| -%>
|
5
|
-
t.<%= attribute[:type] %> :<%= attribute[:name] %>
|
6
|
-
<% end %>
|
7
|
-
t.timestamps null: false
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|