sinatraband 0.1.6 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/app.rb +44 -30
- data/bin/helper.rb +10 -10
- data/lib/templates/Gemfile.erb +6 -0
- data/lib/templates/app.erb +7 -5
- data/lib/templates/controllers/controller.erb +17 -17
- data/lib/templates/db/connection.erb +2 -0
- data/lib/templates/db/migrate/migration.erb +14 -0
- data/lib/templates/models/model.erb +11 -20
- data/lib/templates/rakefile.erb +2 -0
- metadata +44 -36
- data/lib/templates/database.erb +0 -7
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2c2a69bf80cf74e6a52023dbf56bb13303c2e3da
|
4
|
+
data.tar.gz: d5d90224627f06ef502a737e5992baf74138d4ba
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1a819b441a132259b034a13627ddcad196fafcb471394985880f16336e3a508dccde53d40346c6ed3f3b37319e0583a537d7fa9fc2b49c99b76cec65fc633bd7
|
7
|
+
data.tar.gz: c32046a3219fc251aca15ae49bbd1e26289e3ea4ec738651e821774af372c2c8db987a6d412ef45f9f9cc4fe3af08baaa0a88209beec5bac47eaa2fa1f2625f5
|
data/bin/app.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
require 'erb'
|
3
|
+
require 'active_support/inflector'
|
3
4
|
require_relative './helper.rb'
|
4
5
|
|
5
6
|
class App
|
@@ -7,25 +8,25 @@ class App
|
|
7
8
|
|
8
9
|
def proccess_arguments
|
9
10
|
if ARGV.empty?
|
10
|
-
put_error_and_quit :
|
11
|
+
put_error_and_quit error_message: "Error: Missing arguments"
|
11
12
|
end
|
12
13
|
|
13
14
|
#Get the global current path
|
14
|
-
@root =
|
15
|
+
@root = "#{Pathname(__FILE__).dirname.realpath.to_s}/../lib/templates"
|
15
16
|
|
16
17
|
#Defines operation
|
17
18
|
case ARGV[0].downcase
|
18
19
|
when "create"
|
19
|
-
#Get
|
20
|
+
#Get the App name
|
20
21
|
if ARGV[1].nil?
|
21
|
-
put_error_and_quit :
|
22
|
+
put_error_and_quit error_message: "Error: Missing arguments for create action"
|
22
23
|
else
|
23
24
|
@name = ARGV[1]
|
24
25
|
create_app
|
25
26
|
end
|
26
27
|
when "model"
|
27
28
|
if ARGV[1].nil?
|
28
|
-
put_error_and_quit :
|
29
|
+
put_error_and_quit error_message: "Error: Missing arguments for model action"
|
29
30
|
else
|
30
31
|
if ARGV.length > 2
|
31
32
|
model_properties = Array.new
|
@@ -35,52 +36,65 @@ class App
|
|
35
36
|
end
|
36
37
|
end
|
37
38
|
end
|
38
|
-
create_model :
|
39
|
+
create_model model_name: ARGV[1], model_properties: model_properties
|
39
40
|
end
|
40
41
|
else
|
41
|
-
put_error_and_quit :
|
42
|
+
put_error_and_quit error_message: "Error: Unknow arguments"
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
45
46
|
def create_app
|
46
|
-
#Creates
|
47
|
-
mkdir :
|
47
|
+
#Creates the App diretory
|
48
|
+
mkdir directory: "./#{@name}"
|
48
49
|
|
49
|
-
#Creates
|
50
|
-
|
50
|
+
#Creates the Models diretory
|
51
|
+
mkdir directory: "./#{@name}/models"
|
51
52
|
|
52
|
-
#Creates
|
53
|
-
|
53
|
+
#Creates the Controllers diretory
|
54
|
+
mkdir directory: "./#{@name}/controllers"
|
54
55
|
|
55
|
-
#Creates
|
56
|
-
mkdir :
|
56
|
+
#Creates the View diretory
|
57
|
+
mkdir directory: "./#{@name}/views"
|
57
58
|
|
58
|
-
#Creates
|
59
|
-
mkdir :
|
59
|
+
#Creates the Database diretory
|
60
|
+
mkdir directory: "./#{@name}/db"
|
61
|
+
mkdir directory: "./#{@name}/db/migrate"
|
60
62
|
|
61
|
-
#Creates
|
62
|
-
|
63
|
+
#Creates the Gemfile
|
64
|
+
generate_file_from_template directory: "", template: "Gemfile", final_file: "Gemfile", extension: ""
|
63
65
|
|
64
|
-
#Creates
|
65
|
-
generate_file_from_template :
|
66
|
+
#Creates the Rakefile file
|
67
|
+
generate_file_from_template directory: "", template: "rakefile", final_file: "rakefile", extension: ".rb"
|
68
|
+
|
69
|
+
#Creates the App file
|
70
|
+
generate_file_from_template directory: "", template: "app", final_file: "app", extension: ".rb"
|
71
|
+
|
72
|
+
#Creates the Database file
|
73
|
+
generate_file_from_template directory: "/db", template: "connection", final_file: "connection", extension: ".rb"
|
74
|
+
|
75
|
+
#Creates the index file
|
76
|
+
generate_file_from_template directory: "/views", template: "index", final_file: "index", extension: ".erb"
|
66
77
|
end
|
67
78
|
|
68
|
-
def create_model input={:
|
79
|
+
def create_model input={model_name: '', model_properties: {}}
|
69
80
|
if input[:model_properties].nil?
|
70
|
-
put_error_and_quit :
|
81
|
+
put_error_and_quit error_message: "Error: Missing arguments for model action"
|
71
82
|
end
|
72
83
|
|
73
84
|
@model_name = input[:model_name].capitalize
|
74
|
-
@model_properties = elaborates_model_properties :
|
85
|
+
@model_properties = elaborates_model_properties model_properties: input[:model_properties]
|
86
|
+
|
87
|
+
#Creates the Model file
|
88
|
+
generate_file_from_template directory: "/models", template: "model", final_file: input[:model_name].downcase, extension: ".rb"
|
75
89
|
|
76
|
-
#Creates
|
77
|
-
generate_file_from_template :
|
90
|
+
#Creates the Controller file
|
91
|
+
generate_file_from_template directory: "/controllers", template: "controller", final_file: input[:model_name].downcase.pluralize, extension: ".rb"
|
78
92
|
|
79
|
-
#Creates
|
80
|
-
generate_file_from_template :
|
93
|
+
#Creates the migration file
|
94
|
+
generate_file_from_template directory: "/db/migrate", template: "migration", final_file: "#{Time.now.utc.strftime("%Y%m%d%H%M%S")}_create_#{input[:model_name].downcase}", extension: ".rb"
|
81
95
|
|
82
|
-
#Creates
|
83
|
-
mkdir :
|
96
|
+
#Creates the View diretory
|
97
|
+
mkdir directory: ".#{@name}/views/#{input[:model_name].downcase.pluralize}"
|
84
98
|
end
|
85
99
|
|
86
100
|
end
|
data/bin/helper.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
def generate_file_from_template input={:
|
1
|
+
def generate_file_from_template input={directory: "./#{@name}", template: '', final_file: '', extension: ''}
|
2
2
|
|
3
|
-
file_name = "./#{@name}#{input[:directory]}/#{input[:final_file]}
|
3
|
+
file_name = "./#{@name}#{input[:directory]}/#{input[:final_file]}#{input[:extension]}"
|
4
4
|
|
5
5
|
if File.exists?(file_name) && File.file?(file_name)
|
6
6
|
File.delete(file_name)
|
@@ -11,20 +11,20 @@ def generate_file_from_template input={:directory => './'+@name, :template => ''
|
|
11
11
|
begin
|
12
12
|
file_template = ERB.new(File.open("#{@root}#{input[:directory]}/#{input[:template]}.erb").read)
|
13
13
|
rescue (Errno::ENOENT)
|
14
|
-
put_error_and_quit "Error: Missing template for file #{@root}#{input[:directory]}/#{input[:template]}
|
14
|
+
put_error_and_quit "Error: Missing template for file #{@root}#{input[:directory]}/#{input[:template]}#{input[:extension]}."
|
15
15
|
end
|
16
16
|
|
17
17
|
begin
|
18
18
|
f.write(file_template.result(binding))
|
19
|
-
puts ".#{input[:directory]}/#{input[:final_file]}
|
19
|
+
puts ".#{input[:directory]}/#{input[:final_file]}#{input[:extension]} file created."
|
20
20
|
rescue (Errno::ENOENT)
|
21
|
-
put_error_and_quit "Error creating #{input[:final_file]}
|
21
|
+
put_error_and_quit "Error creating #{input[:final_file]}#{input[:extension]}."
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
|
27
|
-
def mkdir input={:
|
27
|
+
def mkdir input={directory: './'+@name}
|
28
28
|
begin
|
29
29
|
Dir.mkdir input[:directory]
|
30
30
|
puts "#{input[:directory]} directory created."
|
@@ -34,18 +34,18 @@ def mkdir input={:directory => './'+@name}
|
|
34
34
|
end
|
35
35
|
|
36
36
|
|
37
|
-
def elaborates_model_properties input={:
|
37
|
+
def elaborates_model_properties input={model_properties: ''}
|
38
38
|
|
39
39
|
new_model_properties = Array.new
|
40
40
|
|
41
41
|
input[:model_properties].each do |model_property|
|
42
42
|
name = model_property.to_s.split(':')[0].downcase
|
43
|
-
type = model_property.to_s.split(':')[1].
|
43
|
+
type = model_property.to_s.split(':')[1].downcase
|
44
44
|
|
45
45
|
if type == "Datetime" then type = "DateTime" end
|
46
46
|
|
47
47
|
if !["id", "created_at", "updated_at"].include? name
|
48
|
-
new_model_properties <<
|
48
|
+
new_model_properties << "t.#{type} :#{name}"
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -53,7 +53,7 @@ def elaborates_model_properties input={:model_properties => ''}
|
|
53
53
|
end
|
54
54
|
|
55
55
|
|
56
|
-
def put_error_and_quit input={:
|
56
|
+
def put_error_and_quit input={error_message: 'An error has ocorred.'}
|
57
57
|
puts input[:error_message]
|
58
58
|
exit
|
59
59
|
end
|
data/lib/templates/app.erb
CHANGED
@@ -1,16 +1,18 @@
|
|
1
1
|
require 'sinatra'
|
2
2
|
|
3
3
|
# Loads database configuration
|
4
|
-
require_relative './
|
4
|
+
require_relative './db/connection.rb'
|
5
5
|
|
6
6
|
# Loads all models in models directory
|
7
7
|
Dir["./models/*.rb"].each {|file| require_relative file }
|
8
8
|
|
9
|
-
# Perform basic sanity checks and initialize all relationships
|
10
|
-
DataMapper.finalize
|
11
|
-
|
12
9
|
# Enables session
|
13
10
|
enable :sessions
|
14
11
|
|
15
12
|
# Loads all controllers in controllers directory
|
16
|
-
Dir["./controllers/*.rb"].each {|file| require_relative file }
|
13
|
+
Dir["./controllers/*.rb"].each {|file| require_relative file }
|
14
|
+
|
15
|
+
# Default root_route
|
16
|
+
get '/' do
|
17
|
+
erb :'index'
|
18
|
+
end
|
@@ -1,38 +1,38 @@
|
|
1
|
-
get '/<%= @model_name.downcase %>' do
|
2
|
-
@<%= @model_name.downcase %> = <%= @model_name %>.all
|
3
|
-
erb :'<%= @model_name.downcase %>/index'
|
1
|
+
get '/<%= @model_name.downcase.pluralize %>' do
|
2
|
+
@<%= @model_name.downcase.pluralize %> = <%= @model_name %>.all
|
3
|
+
erb :'<%= @model_name.downcase.pluralize %>/index'
|
4
4
|
end
|
5
5
|
|
6
|
-
get '/<%= @model_name.downcase %>/new' do
|
7
|
-
erb :'<%= @model_name.downcase %>/new'
|
6
|
+
get '/<%= @model_name.downcase.pluralize %>/new' do
|
7
|
+
erb :'<%= @model_name.downcase.pluralize %>/new'
|
8
8
|
end
|
9
9
|
|
10
|
-
post '/<%= @model_name.downcase %>/create' do
|
10
|
+
post '/<%= @model_name.downcase.pluralize %>/create' do
|
11
11
|
@<%= @model_name.downcase %> = <%= @model_name %>.new(params)
|
12
12
|
if @<%= @model_name.downcase %>.save
|
13
|
-
redirect '/<%= @model_name.downcase %>'
|
13
|
+
redirect '/<%= @model_name.downcase.pluralize %>'
|
14
14
|
else
|
15
|
-
erb :'<%= @model_name.downcase %>/new'
|
15
|
+
erb :'<%= @model_name.downcase.pluralize %>/new'
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
get '/<%= @model_name.downcase %>/edit/:id' do
|
20
|
-
@<%= @model_name.downcase %> = <%= @model_name %>.
|
21
|
-
erb :'<%= @model_name.downcase %>/edit'
|
19
|
+
get '/<%= @model_name.downcase.pluralize %>/edit/:id' do
|
20
|
+
@<%= @model_name.downcase %> = <%= @model_name %>.where(params[:id]).first
|
21
|
+
erb :'<%= @model_name.downcase.pluralize %>/edit'
|
22
22
|
end
|
23
23
|
|
24
|
-
post '/<%= @model_name.downcase %>/update/:id' do
|
25
|
-
@<%= @model_name.downcase %> = <%= @model_name %>.
|
24
|
+
post '/<%= @model_name.downcase.pluralize %>/update/:id' do
|
25
|
+
@<%= @model_name.downcase %> = <%= @model_name %>.where(params[:id]).first
|
26
26
|
|
27
27
|
if @<%= @model_name.downcase %>.update(params)
|
28
28
|
redirect '/<%= @model_name.downcase %>'
|
29
29
|
else
|
30
|
-
erb :'<%= @model_name.downcase %>/edit'
|
30
|
+
erb :'<%= @model_name.downcase.pluralize %>/edit'
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
get '/<%= @model_name.downcase %>/delete/:id' do
|
35
|
-
@<%= @model_name.downcase %> = <%= @model_name %>.
|
34
|
+
get '/<%= @model_name.downcase.pluralize %>/delete/:id' do
|
35
|
+
@<%= @model_name.downcase %> = <%= @model_name %>.where(params[:id]).first
|
36
36
|
@<%= @model_name.downcase %>.destroy
|
37
|
-
redirect '/<%= @model_name.downcase %>'
|
37
|
+
redirect '/<%= @model_name.downcase.pluralize %>'
|
38
38
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Create<%=@model_name%> < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
create_table :<%=@model_name.downcase.pluralize%> do |t|
|
4
|
+
<% @model_properties.each do |property|%>
|
5
|
+
<%= property %>
|
6
|
+
<% end %>
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def down
|
12
|
+
drop_table :<%=@model_name.downcase.pluralize%>
|
13
|
+
end
|
14
|
+
end
|
@@ -1,30 +1,21 @@
|
|
1
|
-
class <%= @model_name %>
|
2
|
-
include DataMapper::Resource
|
3
|
-
|
4
|
-
property :id, Serial
|
5
|
-
<% @model_properties.each do |property|%>
|
6
|
-
<%= property %>
|
7
|
-
<% end%>
|
8
|
-
property :created_at, DateTime
|
9
|
-
|
10
|
-
property :updated_at, DateTime
|
11
|
-
|
12
|
-
#validates_absence_of
|
1
|
+
class <%= @model_name %> < ActiveRecord::Base
|
13
2
|
#validates_acceptance_of
|
14
|
-
#
|
3
|
+
#validates_associated
|
15
4
|
#validates_confirmation_of
|
5
|
+
#validates_exclusion_of
|
16
6
|
#validates_format_of
|
7
|
+
#validates_inclusion_of
|
17
8
|
#validates_length_of
|
18
|
-
#validates_with_method
|
19
9
|
#validates_numericality_of
|
20
|
-
#validates_primitive_type_of
|
21
10
|
#validates_presence_of
|
22
11
|
#validates_uniqueness_of
|
23
|
-
#
|
12
|
+
#validates_each
|
24
13
|
|
25
|
-
#
|
14
|
+
#validate :custom_method
|
26
15
|
|
27
|
-
|
16
|
+
#def custom_method
|
17
|
+
# errors.add(:field, "that's an error") if
|
18
|
+
# some_condition != true
|
19
|
+
#end
|
28
20
|
|
29
|
-
|
30
|
-
<%= @model_name %>.auto_upgrade!
|
21
|
+
end
|
metadata
CHANGED
@@ -1,61 +1,69 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatraband
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.1.6
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.2'
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- Julio Bueno
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
date: 2013-11-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Ruby gem to create a basic scaffold sinatra app with activerecord.
|
17
28
|
email: julioce@gmail.com
|
18
|
-
executables:
|
29
|
+
executables:
|
19
30
|
- sinatraband
|
20
31
|
extensions: []
|
21
|
-
|
22
32
|
extra_rdoc_files: []
|
23
|
-
|
24
|
-
files:
|
33
|
+
files:
|
25
34
|
- lib/templates/controllers/controller.erb
|
26
35
|
- lib/templates/models/model.erb
|
27
36
|
- lib/templates/views/index.erb
|
28
37
|
- lib/templates/app.erb
|
29
|
-
- lib/templates/
|
38
|
+
- lib/templates/Gemfile.erb
|
39
|
+
- lib/templates/rakefile.erb
|
40
|
+
- lib/templates/db/migrate/migration.erb
|
41
|
+
- lib/templates/db/connection.erb
|
30
42
|
- bin/app.rb
|
31
43
|
- bin/helper.rb
|
32
44
|
- bin/sinatraband
|
33
45
|
homepage: https://github.com/julioce/SinatraBand
|
34
|
-
licenses:
|
35
|
-
|
46
|
+
licenses:
|
47
|
+
- OSL-3.0
|
48
|
+
metadata: {}
|
36
49
|
post_install_message:
|
37
50
|
rdoc_options: []
|
38
|
-
|
39
|
-
require_paths:
|
51
|
+
require_paths:
|
40
52
|
- lib
|
41
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: "0"
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
53
63
|
requirements: []
|
54
|
-
|
55
64
|
rubyforge_project:
|
56
|
-
rubygems_version: 1.
|
65
|
+
rubygems_version: 2.1.11
|
57
66
|
signing_key:
|
58
|
-
specification_version:
|
59
|
-
summary: Sinatra app generator
|
67
|
+
specification_version: 4
|
68
|
+
summary: Sinatra simple app generator
|
60
69
|
test_files: []
|
61
|
-
|