dindi 0.1.0 → 0.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.
Files changed (7) hide show
  1. data/Gemfile +2 -6
  2. data/Gemfile.lock +6 -30
  3. data/README.rdoc +9 -1
  4. data/VERSION +1 -1
  5. data/bin/dindi +82 -51
  6. data/dindi.gemspec +67 -0
  7. metadata +63 -157
data/Gemfile CHANGED
@@ -2,12 +2,8 @@ source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
- gem "activesupport", "= 2.3.8"
6
- gem "activerecord", "=2.3.8"
7
- gem "sinatra", ">= 0"
8
- gem "json", ">= 0"
9
- gem "haml", ">= 0"
10
- gem "pony", ">= 0"
5
+ gem "activesupport", ">= 3.0.0"
6
+ gem "bundler", "~> 1.0.0"
11
7
 
12
8
  # Add dependencies to develop your gem here.
13
9
  # Include everything needed to run rake, tests, features, etc.
data/Gemfile.lock CHANGED
@@ -1,48 +1,24 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activerecord (2.3.8)
5
- activesupport (= 2.3.8)
6
- activesupport (2.3.8)
4
+ activesupport (3.1.3)
5
+ multi_json (~> 1.0)
7
6
  git (1.2.5)
8
- haml (3.1.3)
9
- i18n (0.6.0)
10
7
  jeweler (1.6.4)
11
8
  bundler (~> 1.0)
12
9
  git (>= 1.2.5)
13
10
  rake
14
- json (1.6.1)
15
- mail (2.3.0)
16
- i18n (>= 0.4.0)
17
- mime-types (~> 1.16)
18
- treetop (~> 1.4.8)
19
- mime-types (1.16)
20
- polyglot (0.3.2)
21
- pony (1.3)
22
- mail (> 2.0)
23
- rack (1.3.3)
24
- rake (0.9.2)
25
- rcov (0.9.10)
11
+ multi_json (1.0.4)
12
+ rake (0.9.2.2)
13
+ rcov (0.9.11)
26
14
  shoulda (2.11.3)
27
- sinatra (1.2.6)
28
- rack (~> 1.1)
29
- tilt (>= 1.2.2, < 2.0)
30
- tilt (1.3.3)
31
- treetop (1.4.10)
32
- polyglot
33
- polyglot (>= 0.3.1)
34
15
 
35
16
  PLATFORMS
36
17
  ruby
37
18
 
38
19
  DEPENDENCIES
39
- activerecord (= 2.3.8)
40
- activesupport (= 2.3.8)
20
+ activesupport (>= 3.0.0)
41
21
  bundler (~> 1.0.0)
42
- haml
43
22
  jeweler (~> 1.6.4)
44
- json
45
- pony
46
23
  rcov
47
24
  shoulda
48
- sinatra
data/README.rdoc CHANGED
@@ -1,6 +1,14 @@
1
1
  = dindi
2
2
 
3
- Description goes here.
3
+ "Another hit by Sinatra"
4
+
5
+ Dindi help you create a spanking new sinatra app (modular only) with default directory structures.
6
+
7
+ == Usage
8
+
9
+ `dindi -h` -- To view the command options
10
+
11
+ `dindi -n appname` -- Will create a new sinatra app called appname
4
12
 
5
13
  == Contributing to dindi
6
14
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/bin/dindi CHANGED
@@ -4,6 +4,10 @@
4
4
  require 'ostruct'
5
5
  require 'optparse'
6
6
  require 'fileutils'
7
+ require 'active_support/core_ext/string/inflections'
8
+
9
+ # extend ActiveSupport::CoreExtensions
10
+ # include ActiveSupport::CoreExtensions::String::Inflections
7
11
 
8
12
  class OptionParser
9
13
 
@@ -59,32 +63,78 @@ project_absolute_dir = FileUtils.pwd + "/" + options.project_name
59
63
 
60
64
  # create default directories
61
65
  # lib, log, public, push, routes, tmp, views
62
- %w(lib log public push routes tmp views db).each do |dir|
66
+ %w(tmp log public push views routes extlibs models helpers).each do |dir|
63
67
  FileUtils.mkdir_p(project_absolute_dir + "/" + dir)
64
68
  end
65
69
 
70
+ #=================
71
+ # create Gemfile
72
+ #=================
73
+ gemfile_contents = <<-gemfile
74
+ source "http://rubygems.org"
75
+ gem "sinatra"
76
+ gem "mysql2"
77
+ gem "haml"
78
+ gem "activesupport"
79
+ gem "activerecord"
80
+ gem "json"
81
+ gem "pony"
82
+ gemfile
83
+
84
+ File.open("#{project_absolute_dir}/Gemfile", "w") do |file|
85
+ file.puts gemfile_contents
86
+ end
87
+
66
88
  #=================
67
89
  # create config.ru
68
90
  #=================
69
91
 
70
92
  config_ru_contents = <<-config_ru
93
+ $: << "."
94
+
95
+ # we use bundler
96
+ require 'bundler/setup'
97
+
98
+ # modular sinatra app
99
+ require 'sinatra/base'
100
+
71
101
  # gems
72
- %w(sinatra logger json haml csv digest pony date time activesupport).each {|lib| require lib}
102
+ %w(logger json haml csv digest date time active_support pony).each {|lib| require lib}
103
+
104
+ # load db config and models
105
+ require 'models'
73
106
 
74
107
  # extra library
75
- # require '#{project_absolute_dir}/lib/websocket_client'
108
+ Dir.glob("./extlibs/*.rb").each {|extlib| require extlib}
109
+
110
+ # helpers
111
+ #Dir.glob("./helpers/*.rb").each {|helper| require helper}
112
+
113
+ # controllers
114
+ Dir.glob("./routes/*.rb").each {|route| require route}
115
+
116
+ # app file
117
+ require '#{options.project_name}'
76
118
 
77
- # app files
78
- %w(#{options.project_name}).each {|lib| require lib}
119
+ # app logger
120
+ $LOG = ::Logger.new("log/#{options.project_name}.log")
79
121
 
80
- Time.zone = 'Singapore'
122
+ class Sinatra::Base
123
+ # set sinatra's variables
124
+ set :environment, :production
125
+ enable :sessions, :logging, :dump_errors, :show_exceptions
126
+ disable :run, :reload
127
+ end
128
+
129
+ # app routes
130
+ App = Rack::Builder.app do
131
+
132
+ run #{options.project_name.camelcase}
133
+ end
81
134
 
82
- # server config
83
- set :environment, :production
84
- enable :sessions, :logging, :dump_errors, :show_exceptions
85
- disable :run, :reload
135
+ # finally
136
+ run App
86
137
 
87
- run Sinatra::Application
88
138
  config_ru
89
139
 
90
140
  File.open("#{project_absolute_dir}/config.ru", "w") do |file|
@@ -114,7 +164,7 @@ helpers do
114
164
  end
115
165
  helpers_rb
116
166
 
117
- File.open("#{project_absolute_dir}/helpers.rb", "w") do |file|
167
+ File.open("#{project_absolute_dir}/helpers/debug_on.rb", "w") do |file|
118
168
  file.puts helpers_rb_contents
119
169
  end
120
170
 
@@ -124,7 +174,7 @@ end
124
174
 
125
175
  database_yml_contents = <<-database_yml
126
176
  login: &login
127
- adapter: mysql
177
+ adapter: mysql2
128
178
  username: root
129
179
  password: password
130
180
  host: localhost
@@ -137,36 +187,22 @@ production:
137
187
  encoding: utf8
138
188
  database_yml
139
189
 
140
- File.open("#{project_absolute_dir}/db/database.yml", "w") do |file|
190
+ File.open("#{project_absolute_dir}/database.yml", "w") do |file|
141
191
  file.puts database_yml_contents
142
192
  end
143
193
 
144
- #====================
145
- # create db_config.rb
146
- #====================
147
-
148
- db_config_contents = <<-db_config_rb
149
- #gem 'activerecord', '=2.3.8'
150
- require 'activerecord'
151
- config = YAML.load_file(File.join(File.dirname(__FILE__),'database.yml'))
152
- ActiveRecord::Base.establish_connection(config["production"])
153
- db_config_rb
154
-
155
- File.open("#{project_absolute_dir}/db/db_config.rb", "w") do |file|
156
- file.puts db_config_contents
157
- end
158
-
159
194
  #=======================
160
195
  # create models.rb
161
196
  #=======================
162
197
 
163
198
  models_rb_contents = <<-models_rb
164
- require '#{project_absolute_dir}/db/db_config'
199
+ require 'mysql2'
200
+ require 'active_record'
165
201
 
166
- # DB Models
202
+ config = YAML.load_file('database.yml')
203
+ ActiveRecord::Base.establish_connection(config["production"])
167
204
 
168
- # class Token < ActiveRecord::Base
169
- # end
205
+ Dir.glob("#{project_absolute_dir}/models/*.rb").each {|model| require model}
170
206
  models_rb
171
207
 
172
208
  File.open("#{project_absolute_dir}/models.rb", "w") do |file|
@@ -178,28 +214,19 @@ end
178
214
  #=======================
179
215
 
180
216
  project_name_rb_contents = <<-project_name_rb
181
- # DB connection and data models
182
- # require 'models'
217
+ class #{options.project_name.camelcase} < Sinatra::Base
183
218
 
184
- # logger
185
- before do
186
- $LOG = Logger.new('log/#{options.project_name}.log')
187
- end
188
-
189
- require 'helpers'
219
+ # index
220
+ get '/' do
221
+ '#{options.project_name}'
222
+ end
190
223
 
191
- # index
192
- get '/' do
193
- '#{options.project_name}'
194
- end
224
+ # docs
225
+ get '/docs' do
226
+ haml :docs
227
+ end
195
228
 
196
- # docs
197
- get '/docs' do
198
- haml :docs
199
229
  end
200
-
201
- ### Load other routes
202
- # load 'routes/startup.rb'
203
230
  project_name_rb
204
231
 
205
232
  File.open("#{project_absolute_dir}/#{options.project_name}.rb", "w") do |file|
@@ -223,3 +250,7 @@ docs_haml
223
250
  File.open("#{project_absolute_dir}/views/docs.haml", "w") do |file|
224
251
  file.puts docs_haml_contents
225
252
  end
253
+
254
+ # Completion
255
+ puts "Your project folder #{options.project_name} was successfully created"
256
+ puts "Run 'bundle install --path vendor/bundle' to install required gems"
data/dindi.gemspec ADDED
@@ -0,0 +1,67 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "dindi"
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Samuel Chandra"]
12
+ s.date = "2011-11-29"
13
+ s.description = "This gem will create a barebone base for a new Sinatra Project"
14
+ s.email = "samuelchandra@yahoo.com"
15
+ s.executables = ["dindi"]
16
+ s.extra_rdoc_files = [
17
+ "LICENSE.txt",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "bin/dindi",
29
+ "dindi.gemspec",
30
+ "lib/dindi.rb",
31
+ "test/helper.rb",
32
+ "test/test_dindi.rb"
33
+ ]
34
+ s.homepage = "http://github.com/schandra/dindi"
35
+ s.licenses = ["MIT"]
36
+ s.require_paths = ["lib"]
37
+ s.rubygems_version = "1.8.10"
38
+ s.summary = "Dindi is a hit of Sinatra"
39
+
40
+ if s.respond_to? :specification_version then
41
+ s.specification_version = 3
42
+
43
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
44
+ s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0"])
45
+ s.add_runtime_dependency(%q<bundler>, ["~> 1.0.0"])
46
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
47
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
48
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
49
+ s.add_development_dependency(%q<rcov>, [">= 0"])
50
+ else
51
+ s.add_dependency(%q<activesupport>, [">= 3.0.0"])
52
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
53
+ s.add_dependency(%q<shoulda>, [">= 0"])
54
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
55
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
56
+ s.add_dependency(%q<rcov>, [">= 0"])
57
+ end
58
+ else
59
+ s.add_dependency(%q<activesupport>, [">= 3.0.0"])
60
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
61
+ s.add_dependency(%q<shoulda>, [">= 0"])
62
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
64
+ s.add_dependency(%q<rcov>, [">= 0"])
65
+ end
66
+ end
67
+
metadata CHANGED
@@ -1,180 +1,91 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dindi
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Samuel Chandra
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-09-30 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-29 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: activesupport
22
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70338097528820 !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
25
- - - "="
26
- - !ruby/object:Gem::Version
27
- hash: 19
28
- segments:
29
- - 2
30
- - 3
31
- - 8
32
- version: 2.3.8
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
33
22
  type: :runtime
34
23
  prerelease: false
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: activerecord
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - "="
42
- - !ruby/object:Gem::Version
43
- hash: 19
44
- segments:
45
- - 2
46
- - 3
47
- - 8
48
- version: 2.3.8
49
- type: :runtime
50
- prerelease: false
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: sinatra
54
- requirement: &id003 !ruby/object:Gem::Requirement
55
- none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
- version: "0"
63
- type: :runtime
64
- prerelease: false
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: json
68
- requirement: &id004 !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- hash: 3
74
- segments:
75
- - 0
76
- version: "0"
77
- type: :runtime
78
- prerelease: false
79
- version_requirements: *id004
80
- - !ruby/object:Gem::Dependency
81
- name: haml
82
- requirement: &id005 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- hash: 3
88
- segments:
89
- - 0
90
- version: "0"
91
- type: :runtime
92
- prerelease: false
93
- version_requirements: *id005
94
- - !ruby/object:Gem::Dependency
95
- name: pony
96
- requirement: &id006 !ruby/object:Gem::Requirement
24
+ version_requirements: *70338097528820
25
+ - !ruby/object:Gem::Dependency
26
+ name: bundler
27
+ requirement: &70338097527880 !ruby/object:Gem::Requirement
97
28
  none: false
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- hash: 3
102
- segments:
103
- - 0
104
- version: "0"
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.0
105
33
  type: :runtime
106
34
  prerelease: false
107
- version_requirements: *id006
108
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *70338097527880
36
+ - !ruby/object:Gem::Dependency
109
37
  name: shoulda
110
- requirement: &id007 !ruby/object:Gem::Requirement
38
+ requirement: &70338097526900 !ruby/object:Gem::Requirement
111
39
  none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- hash: 3
116
- segments:
117
- - 0
118
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
119
44
  type: :development
120
45
  prerelease: false
121
- version_requirements: *id007
122
- - !ruby/object:Gem::Dependency
46
+ version_requirements: *70338097526900
47
+ - !ruby/object:Gem::Dependency
123
48
  name: bundler
124
- requirement: &id008 !ruby/object:Gem::Requirement
49
+ requirement: &70338097525800 !ruby/object:Gem::Requirement
125
50
  none: false
126
- requirements:
51
+ requirements:
127
52
  - - ~>
128
- - !ruby/object:Gem::Version
129
- hash: 23
130
- segments:
131
- - 1
132
- - 0
133
- - 0
53
+ - !ruby/object:Gem::Version
134
54
  version: 1.0.0
135
55
  type: :development
136
56
  prerelease: false
137
- version_requirements: *id008
138
- - !ruby/object:Gem::Dependency
57
+ version_requirements: *70338097525800
58
+ - !ruby/object:Gem::Dependency
139
59
  name: jeweler
140
- requirement: &id009 !ruby/object:Gem::Requirement
60
+ requirement: &70338097524840 !ruby/object:Gem::Requirement
141
61
  none: false
142
- requirements:
62
+ requirements:
143
63
  - - ~>
144
- - !ruby/object:Gem::Version
145
- hash: 7
146
- segments:
147
- - 1
148
- - 6
149
- - 4
64
+ - !ruby/object:Gem::Version
150
65
  version: 1.6.4
151
66
  type: :development
152
67
  prerelease: false
153
- version_requirements: *id009
154
- - !ruby/object:Gem::Dependency
68
+ version_requirements: *70338097524840
69
+ - !ruby/object:Gem::Dependency
155
70
  name: rcov
156
- requirement: &id010 !ruby/object:Gem::Requirement
71
+ requirement: &70338097524020 !ruby/object:Gem::Requirement
157
72
  none: false
158
- requirements:
159
- - - ">="
160
- - !ruby/object:Gem::Version
161
- hash: 3
162
- segments:
163
- - 0
164
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
165
77
  type: :development
166
78
  prerelease: false
167
- version_requirements: *id010
79
+ version_requirements: *70338097524020
168
80
  description: This gem will create a barebone base for a new Sinatra Project
169
81
  email: samuelchandra@yahoo.com
170
- executables:
82
+ executables:
171
83
  - dindi
172
84
  extensions: []
173
-
174
- extra_rdoc_files:
85
+ extra_rdoc_files:
175
86
  - LICENSE.txt
176
87
  - README.rdoc
177
- files:
88
+ files:
178
89
  - .document
179
90
  - Gemfile
180
91
  - Gemfile.lock
@@ -183,41 +94,36 @@ files:
183
94
  - Rakefile
184
95
  - VERSION
185
96
  - bin/dindi
97
+ - dindi.gemspec
186
98
  - lib/dindi.rb
187
99
  - test/helper.rb
188
100
  - test/test_dindi.rb
189
101
  homepage: http://github.com/schandra/dindi
190
- licenses:
102
+ licenses:
191
103
  - MIT
192
104
  post_install_message:
193
105
  rdoc_options: []
194
-
195
- require_paths:
106
+ require_paths:
196
107
  - lib
197
- required_ruby_version: !ruby/object:Gem::Requirement
108
+ required_ruby_version: !ruby/object:Gem::Requirement
198
109
  none: false
199
- requirements:
200
- - - ">="
201
- - !ruby/object:Gem::Version
202
- hash: 3
203
- segments:
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ segments:
204
115
  - 0
205
- version: "0"
206
- required_rubygems_version: !ruby/object:Gem::Requirement
116
+ hash: -1036017763519044002
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
207
118
  none: false
208
- requirements:
209
- - - ">="
210
- - !ruby/object:Gem::Version
211
- hash: 3
212
- segments:
213
- - 0
214
- version: "0"
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
215
123
  requirements: []
216
-
217
124
  rubyforge_project:
218
125
  rubygems_version: 1.8.10
219
126
  signing_key:
220
127
  specification_version: 3
221
128
  summary: Dindi is a hit of Sinatra
222
129
  test_files: []
223
-