corneal 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|