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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b04ca4b0bfe84f93a60c4269a6834d11db6ba59e
4
- data.tar.gz: fe39aff8397ed7bf2b702027ba23fd977986551a
3
+ metadata.gz: 6c444b14f7fcbe5a6ce779b8a08fdb28dbdf0453
4
+ data.tar.gz: 0e3c5c61d406f57bae0b615fd92a1b14be18c370
5
5
  SHA512:
6
- metadata.gz: dc82867fab95ca36c7eb4dbfc30e06f09fb07dfa4602d4b6c854a537f82ca8724cf805d13f9a4f02f6502ccac52d3461f0f745f457a0fa9b713c4e6ef6e5edba
7
- data.tar.gz: 4a542289889739a72a008dbee98192b3f356558ea86b35895370bc21f3f4eadfec7d42492195b1a5be0845fd27ef66ed2da82e563aa5bdaeb368d281d0560f76
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 scaffold NAME # Generates your model, controller, and views
59
- corneal new APP-NAME # Creates a new Sinatra application
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
- corneal scaffold NAME
85
+ corneal scaffold NAME
84
86
 
85
87
  The resulting structure will look like this:
86
88
 
@@ -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
 
@@ -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
@@ -1,5 +1,5 @@
1
1
  require "thor/group"
2
- require 'active_support/inflector'
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, :type => :string, :desc => "Name of the model"
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.file_name
24
- @table_name = @file_name.pluralize
25
- @migration_name = "create_#{@table_name}"
26
- @migration_class_name = @migration_name.camel_case
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: (field[1] || "string") }
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, :type => :string, :desc => "Name of the model"
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
- unless model_name == name
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
- template "templates/controller.rb.erb", File.join("app/controllers", "#{file_name}_controller.rb")
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
@@ -1,7 +1,7 @@
1
1
  module Corneal
2
2
  module VERSION
3
3
  MAJOR = 1
4
- MINOR = 1
4
+ MINOR = 2
5
5
  TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
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.1.0
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: 2016-08-25 00:00:00.000000000 Z
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.6.4
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
@@ -1,2 +0,0 @@
1
- class <%= class_name %> < ActiveRecord::Base
2
- end