grippy-doozer 0.1.2 → 0.1.3

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
data/bin/doozer CHANGED
@@ -1,9 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
- require 'date'
3
2
  require 'rubygems'
4
3
  require 'optparse'
5
-
6
4
  $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
7
5
  require 'doozer'
8
-
9
6
  Doozer::Generator.run(*ARGV)
data/doozer.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{doozer}
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["grippy"]
12
- s.date = %q{2009-08-10}
12
+ s.date = %q{2009-08-11}
13
13
  s.default_executable = %q{doozer}
14
14
  s.description = %q{This GEM provides a small, barebones framework for creating MVC Rack applications.}
15
15
  s.email = %q{gmelton@whorde.com}
@@ -55,6 +55,7 @@ Gem::Specification.new do |s|
55
55
  "lib/doozer/redirect.rb",
56
56
  "lib/doozer/route.rb",
57
57
  "lib/doozer/scripts/cluster.rb",
58
+ "lib/doozer/scripts/console.rb",
58
59
  "lib/doozer/scripts/migrate.rb",
59
60
  "lib/doozer/scripts/task.rb",
60
61
  "lib/doozer/scripts/test.rb",
@@ -76,6 +77,7 @@ Gem::Specification.new do |s|
76
77
  "templates/skeleton/config/rack.rb",
77
78
  "templates/skeleton/config/routes.rb",
78
79
  "templates/skeleton/script/cluster",
80
+ "templates/skeleton/script/console",
79
81
  "templates/skeleton/script/migrate",
80
82
  "templates/skeleton/script/task",
81
83
  "templates/skeleton/script/test",
data/lib/doozer/app.rb CHANGED
@@ -10,16 +10,13 @@ module Doozer
10
10
  # load routes
11
11
  load_routes
12
12
 
13
- # load the application coontrollers, views, and helpers
13
+ # load the application models, coontrollers, views, and helpers
14
14
  load_files
15
-
16
- # load models
17
- load_models
18
-
15
+
19
16
  # attach the file watcher for the mvc/lib/etc in development mode
20
- require 'doozer/watcher'; load_watcher if Doozer::Configs.rack_env != :deployment
17
+ load_watcher if Doozer::Configs.rack_env != :deployment
21
18
 
22
- p "Doozer racked up..."
19
+ printf "Doozer racked up...\n"
23
20
  end
24
21
 
25
22
  # This method is called along the rackup chain and maps the request path to the route, controller, and view for the format type.
@@ -112,14 +109,16 @@ module Doozer
112
109
  end
113
110
 
114
111
  def load_files
115
- p "Caching files..."
112
+ # load models
113
+ load_models
114
+ printf "Caching files...\n"
116
115
  @@controllers = {}
117
116
  @@layouts={}
118
117
  @@views={}
119
118
  @@errors={}
120
119
 
121
120
  # require helper files and include into Doozer::Partial
122
- helper_files = Dir.glob(File.join(APP_PATH,'/app/helpers/*_helper.rb'))
121
+ helper_files = Dir.glob(File.join(APP_PATH,'app/helpers/*_helper.rb'))
123
122
  helper_files.each {|f|
124
123
  require f
125
124
  key = f.split("helpers/")[1].gsub(/.rb/,'')
@@ -127,7 +126,7 @@ module Doozer
127
126
  }
128
127
 
129
128
  # cache contoller classes
130
- controller_files = Dir.glob(File.join(APP_PATH,'/app/controllers/*_controller.rb'))
129
+ controller_files = Dir.glob(File.join(APP_PATH,'app/controllers/*_controller.rb'))
131
130
  # we need to load the application_controller first since this might not be the first in the list...
132
131
  if controller_files.length > 0
133
132
  i=0
@@ -161,7 +160,7 @@ module Doozer
161
160
  }
162
161
 
163
162
  # cache layout erb's
164
- layout_files = Dir.glob(File.join(APP_PATH,'/app/views/layouts/*.erb'))
163
+ layout_files = Dir.glob(File.join(APP_PATH,'app/views/layouts/*.erb'))
165
164
  layout_files.each {|f|
166
165
  key = f.split("layouts/")[1].split(".html.erb")[0].gsub(/.xml.erb/, '_xml').gsub(/.json.erb/, '_json')
167
166
  results = []
@@ -172,7 +171,7 @@ module Doozer
172
171
  #lood 404 and 500 pages if they exist
173
172
  pnf = Doozer::Configs.page_not_found_url
174
173
  if pnf
175
- file = File.join(APP_PATH,"/#{pnf}")
174
+ file = File.join(APP_PATH,"#{pnf}")
176
175
  results = []
177
176
  File.new(file, "r").each { |line| results << line }
178
177
  @@errors[404] = results.join("")
@@ -181,7 +180,7 @@ module Doozer
181
180
  end
182
181
  ise = Doozer::Configs.internal_server_error_url
183
182
  if ise
184
- file = File.join(APP_PATH,"/#{ise}")
183
+ file = File.join(APP_PATH,"#{ise}")
185
184
  results = []
186
185
  File.new(file, "r").each { |line| results << line }
187
186
  @@errors[500] = results.join("")
@@ -191,7 +190,7 @@ module Doozer
191
190
 
192
191
  @@controllers.each_key { | key |
193
192
  # p key.inspect
194
- files = Dir.glob(File.join(APP_PATH,"/app/views/#{key.to_s}/*.erb"))
193
+ files = Dir.glob(File.join(APP_PATH,"app/views/#{key.to_s}/*.erb"))
195
194
  files.each { | f |
196
195
  #!!!don't cache partials here!!!
197
196
  view = f.split("#{key.to_s}/")[1].split(".erb")[0].gsub(/\./,'_')
@@ -212,22 +211,29 @@ module Doozer
212
211
  end
213
212
 
214
213
  def load_models
215
- Dir.glob(File.join(APP_PATH,'/app/models/*.rb')).each { | model | require model }
214
+ printf "Loading models...\n"
215
+ Dir.glob(File.join(APP_PATH,'app/models/*.rb')).each { | model |
216
+ require model
217
+ }
216
218
  end
217
219
 
218
220
  def load_watcher
219
- p "All along the watchtower..."
221
+ require 'doozer/watcher'
222
+
223
+ printf "All along the watchtower...\n"
220
224
  watcher = FileSystemWatcher.new()
225
+
221
226
  # watcher.addDirectory(File.join(File.dirname(__FILE__),'../doozer/'), "*.rb")
222
- watcher.addDirectory(File.join(APP_PATH,'/app/'), "**/*")
223
- watcher.addDirectory(File.join(APP_PATH,'/app/'), "**/**/*")
224
- watcher.addDirectory(File.join(APP_PATH,'/config/'), "*.*")
225
- watcher.addDirectory(File.join(APP_PATH,'/lib/'), "*.*")
226
- watcher.addDirectory(File.join(APP_PATH,'/static/'), "*.*")
227
- watcher.addDirectory(File.join(APP_PATH,'/static/'), "**/**/*")
227
+ watcher.addDirectory( APP_PATH + '/app/', "**/*")
228
+ watcher.addDirectory( APP_PATH + '/app', "**/**/*")
229
+ watcher.addDirectory( APP_PATH + '/config/', "*.*")
230
+ watcher.addDirectory( APP_PATH + '/lib/', "*.*")
231
+ watcher.addDirectory( APP_PATH + '/static/', "*.*")
232
+ watcher.addDirectory( APP_PATH + '/static/', "**/**/*")
233
+
228
234
 
229
235
  watcher.sleepTime = 1
230
- watcher.start { |status,file|
236
+ watcher.start { |status, file|
231
237
  if(status == FileSystemWatcher::CREATED) then
232
238
  puts "created: #{file}"
233
239
  load_files
@@ -242,7 +248,10 @@ module Doozer
242
248
  Doozer::Partial.clear_loaded_partials
243
249
  end
244
250
  }
245
- #don't join the thread it messes up rackup threading watcher.join()
251
+ #don't join the thread it messes up rackup threading watcher.join()
252
+ # p watcher.isStarted?
253
+ # p watcher.isStopped?
254
+ # p watcher.foundFiles.inspect
246
255
  end
247
256
 
248
257
  def handler(key)
@@ -13,8 +13,8 @@ module Doozer
13
13
 
14
14
  # Rack refers to production as deployment.
15
15
  def self.load(rack_env)
16
- p "APP_ROOT: #{APP_PATH}"
17
- p "Loading configs for #{rack_env}"
16
+ printf "APP_ROOT: #{APP_PATH}\n"
17
+ printf "Loading configs for #{rack_env}\n"
18
18
 
19
19
  # TODO: remove this and replace with APP_PATH
20
20
  @@env_path = Dir.pwd
@@ -42,13 +42,13 @@ module Doozer
42
42
  begin
43
43
  @@config[:database] = Configs.symbolize_keys( YAML.load(File.read(File.join(APP_PATH,'config/database.yml'))) )
44
44
  rescue
45
- p "Failed to load config/database.yml"
45
+ printf "--Failed to load config/database.yml \n"
46
46
  end
47
47
 
48
48
  begin
49
49
  @@config[:app] = Configs.symbolize_keys( YAML.load(File.read(File.join(APP_PATH,'config/app.yml'))) )
50
50
  rescue
51
- p "Failed to load config/app.yml"
51
+ printf "--Failed to load config/app.yml\n"
52
52
  end
53
53
  end
54
54
 
@@ -70,6 +70,12 @@ module Doozer
70
70
  end
71
71
  end
72
72
 
73
+
74
+ def self.console(env)
75
+ self.boot(env)
76
+ app = Doozer::App.new(env)
77
+ end
78
+
73
79
  # Primary hook for extending/overriding ORM. Code block is pushed onto an array which allows for multiple hooks throughtout different files.
74
80
  #
75
81
  # &block - code to execute after ORM is intialized
@@ -11,8 +11,8 @@ module Doozer
11
11
  :password => db_config["password"],
12
12
  :database => db_config["database"]
13
13
  )
14
- p "ORM: #{Doozer::Configs.orm()} initialized..."
15
- p "ORM: logging initialized"
14
+ printf "ORM: #{Doozer::Configs.orm()} initialized...\n"
15
+ # printf "ORM: logging initialized"
16
16
  ActiveRecord::Base.logger = Doozer::Configs.logger
17
17
  end
18
18
  end
@@ -12,7 +12,7 @@ module Doozer
12
12
  :password => db_config["password"],
13
13
  :host => db_config["host"]
14
14
  })
15
- p "ORM: #{Doozer::Configs.orm()} initialized..."
15
+ printf "ORM: #{Doozer::Configs.orm()} initialized...\n"
16
16
  DataMapper::Logger.new(STDOUT, :debug)
17
17
  end
18
18
  end
@@ -12,7 +12,7 @@ module Doozer
12
12
  :password => db_config["password"],
13
13
  :host => db_config["host"]
14
14
  })
15
- p "ORM: #{Doozer::Configs.orm} initialized..."
15
+ printf "ORM: #{Doozer::Configs.orm} initialized...\n"
16
16
  end
17
17
  end
18
18
  end
@@ -56,7 +56,7 @@ module Doozer
56
56
  partial = Doozer::Partial.new(erb, locals, route)
57
57
  partial.bind()
58
58
  else
59
- p "no partial exists for #{file}"
59
+ printf "--no partial exists for #{file}\n"
60
60
  end
61
61
  end
62
62
 
@@ -2,9 +2,6 @@
2
2
  require 'rubygems'
3
3
  require 'doozer'
4
4
 
5
- #--load initializers
6
- # require 'doozer/initializer'
7
-
8
5
  #--boot it up
9
6
  Doozer::Initializer.boot(env)
10
7
 
data/lib/doozer/route.rb CHANGED
@@ -19,7 +19,7 @@ module Doozer
19
19
  # sort routes here
20
20
  @@parts.sort! do |a, b| a[1].length <=> b[1].length end
21
21
  @@parts.reverse!
22
- p "Routes drawn and sorted..."
22
+ printf "Routes drawn and sorted...\n"
23
23
  # @@parts.each { | i | p i[1] }
24
24
  end
25
25
  def self.add(name=nil, path=nil, args=nil)
@@ -8,8 +8,6 @@
8
8
  # -E environment (default: development || deployment)
9
9
  # -D (daemonize) - This is automatically initialized in deployment mode. There should be no need to pass this unless you want to test it out in development mode.
10
10
  # -h Hellllpppp!!!
11
-
12
- require 'date' # needs to be included before rubygems. otherwise
13
11
  require 'optparse'
14
12
 
15
13
  APP_PATH = Dir.pwd if APP_PATH.nil?
@@ -0,0 +1,2 @@
1
+ require 'doozer'
2
+ Doozer::Initializer.console(@env)
@@ -2,7 +2,7 @@ module Doozer
2
2
  module Version
3
3
  MAJOR=0
4
4
  MINOR=1
5
- PATCH=2
5
+ PATCH=3
6
6
  STRING=[MAJOR, MINOR, PATCH].join('.')
7
7
  end
8
8
  end
@@ -36,17 +36,16 @@ module ServiceState
36
36
  def setState(newState)
37
37
  @stateMutex.synchronize {
38
38
  if newState == CONFIGURED then
39
- @configured = true
39
+ @configured = true
40
40
  else
41
- @state = newState
42
- if isStarted? then
43
- @startTime = Time.now()
44
- elsif isStopped?
45
- @stopTime = Time.now()
46
- end
41
+ @state = newState
42
+ if isStarted? then
43
+ @startTime = Time.now()
44
+ elsif isStopped?
45
+ @stopTime = Time.now()
46
+ end
47
47
  end
48
48
  }
49
-
50
49
  if defined?(@stateCallback) then
51
50
  @stateCallback.call(newState)
52
51
  end
@@ -94,6 +93,8 @@ class FileSystemWatcher
94
93
  # you can optionally use the file contents md5 to detect if a file has changed
95
94
  attr_accessor :useMD5
96
95
 
96
+ attr_accessor :foundFiles, :files, :directories
97
+
97
98
  def initialize(dir=nil, expression="**/*")
98
99
  @sleepTime = 5
99
100
  @useMD5 = false
@@ -158,46 +159,46 @@ class FileSystemWatcher
158
159
  @watchThread = Thread.new {
159
160
  # we will be stopped if someone calls stop or if someone set a stopWhen that becomes true
160
161
  while !isStopped? do
161
- if (!@directories.empty?) or (!@files.empty?) then
162
- # this will hold the list of the files we looked at this iteration
163
- # allows us to not look at the same file again and also to compare
164
- # with the foundFile list to see if something was deleted
165
- alreadyExamined = Hash.new()
162
+ if (!@directories.empty?) or (!@files.empty?) then
163
+ # this will hold the list of the files we looked at this iteration
164
+ # allows us to not look at the same file again and also to compare
165
+ # with the foundFile list to see if something was deleted
166
+ alreadyExamined = Hash.new()
166
167
 
167
- # check the files in each watched directory
168
- if not @directories.empty? then
169
- @directories.each { |dirObj|
170
- examineFileList(dirObj.getFiles(), alreadyExamined, &block)
171
- }
172
- end
168
+ # check the files in each watched directory
169
+ if not @directories.empty? then
170
+ @directories.each { | dirObj |
171
+ examineFileList(dirObj.getFiles(), alreadyExamined, &block)
172
+ }
173
+ end
173
174
 
174
- # now examine any files the user wants to specifically watch
175
- examineFileList(@files, alreadyExamined, &block) if not @files.empty?
175
+ # now examine any files the user wants to specifically watch
176
+ examineFileList(@files, alreadyExamined, &block) if not @files.empty?
176
177
 
177
- # see if we have to delete files from our found list
178
- if not @firstLoad then
179
- if not @foundFiles.empty? then
180
- # now diff the found files and the examined files to see if
181
- # something has been deleted
182
- allFoundFiles = @foundFiles.keys()
183
- allExaminedFiles = alreadyExamined.keys()
184
- intersection = allFoundFiles - allExaminedFiles
185
- intersection.each { |fileName|
186
- # callback
187
- block.call(DELETED, fileName)
188
- # remove deleted file from the foundFiles list
189
- @foundFiles.delete(fileName)
190
- }
178
+ # see if we have to delete files from our found list
179
+ if not @firstLoad then
180
+ if not @foundFiles.empty? then
181
+ # now diff the found files and the examined files to see if
182
+ # something has been deleted
183
+ allFoundFiles = @foundFiles.keys()
184
+ allExaminedFiles = alreadyExamined.keys()
185
+ intersection = allFoundFiles - allExaminedFiles
186
+ intersection.each { |fileName|
187
+ # callback
188
+ block.call(DELETED, fileName)
189
+ # remove deleted file from the foundFiles list
190
+ @foundFiles.delete(fileName)
191
+ }
192
+ end
193
+ else
194
+ @firstLoad = false
195
+ end
191
196
  end
192
- else
193
- @firstLoad = false
194
- end
195
- end
196
197
 
197
- # go to sleep
198
- sleep(@sleepTime)
199
- end
200
- }
198
+ # go to sleep
199
+ sleep(@sleepTime)
200
+ end
201
+ }
201
202
 
202
203
  # set the watch thread priority
203
204
  @watchThread.priority = @priority
@@ -226,79 +227,72 @@ class FileSystemWatcher
226
227
 
227
228
  # dont examine the same file 2 times
228
229
  if not alreadyExamined.has_key?(fullFileName) then
229
- # we cant do much if the file isnt readable anyway
230
- if File.readable?(fullFileName) then
231
- # set that we have seen this file
232
- alreadyExamined[fullFileName] = true
230
+ # we cant do much if the file isnt readable anyway
231
+ if File.readable?(fullFileName) then
232
+ # set that we have seen this file
233
+ alreadyExamined[fullFileName] = true
233
234
 
234
- # get the file info
235
- modTime, size = File.mtime(fullFileName), File.size(fullFileName)
235
+ # get the file info
236
+ modTime, size = File.mtime(fullFileName), File.size(fullFileName)
236
237
 
237
- # on the first iteration just load all of the files into the foundList
238
- if @firstLoad then
239
- @foundFiles[fullFileName] = FSWatcher::FoundFile.new(fullFileName, modTime, size, false, @useMD5)
240
- else
241
- # see if we have found this file already
242
- foundFile = @foundFiles[fullFileName]
243
-
244
- if foundFile then
245
-
246
- # if a file is marked as new, we still need to make sure it isnt still
247
- # being written to. we do this by checking the file sizes.
248
- if foundFile.isNew? then
249
-
250
- # if the file size is the same then it is probably done being written to
251
- # unless the writer is really slow
252
- if size == foundFile.size then
253
-
254
- # callback
255
- block.call(CREATED, fullFileName)
238
+ # on the first iteration just load all of the files into the foundList
239
+ if @firstLoad then
240
+ @foundFiles[fullFileName] = FSWatcher::FoundFile.new(fullFileName, modTime, size, false, @useMD5)
241
+ else
242
+ # see if we have found this file already
243
+ foundFile = @foundFiles[fullFileName]
244
+
245
+ if foundFile then
246
+ # if a file is marked as new, we still need to make sure it isnt still
247
+ # being written to. we do this by checking the file sizes.
248
+
249
+ if foundFile.isNew? then
250
+ # if the file size is the same then it is probably done being written to
251
+ # unless the writer is really slow
252
+ if size == foundFile.size then
253
+ # callback
254
+ block.call(CREATED, fullFileName)
256
255
 
257
- # mark this file as a changed file now
258
- foundFile.updateModTime(modTime)
256
+ # mark this file as a changed file now
257
+ foundFile.updateModTime(modTime)
259
258
 
260
- # generate the md5 for the file since we know it is done
261
- # being written to
262
- foundFile.genMD5() if @useMD5
263
-
264
- else
265
-
266
- # just update the size so we can check again at the next iteration
267
- foundFile.updateSize(size)
268
-
269
- end
259
+ # generate the md5 for the file since we know it is done
260
+ # being written to
261
+ foundFile.genMD5() if @useMD5
262
+ else
263
+ # just update the size so we can check again at the next iteration
264
+ foundFile.updateSize(size)
265
+ end
270
266
 
271
- elsif modTime > foundFile.modTime then
272
-
273
- # if the mod times are different on files we already have
274
- # found this is an update
275
- willYield = true
276
-
277
- # if we are using md5's then compare them
278
- if @useMD5 then
279
- filesMD5 = FSWatcher.genFileMD5(fullFileName)
280
- if filesMD5 && foundFile.md5 then
281
- if filesMD5.to_s == foundFile.md5.to_s then
282
- willYield = false
283
- end
284
- end
285
-
286
- # if we are yielding then the md5s are dif so
287
- # update the cached md5 value
288
- foundFile.setMD5(filesMD5) if willYield
289
-
290
- end
291
-
292
- block.call(MODIFIED, fullFileName) if willYield
293
- foundFile.updateModTime(modTime)
294
- end
295
- else
296
- # this is a new file for our list. dont update the md5 here since
297
- # the file might not yet be done being written to
298
- @foundFiles[fullFileName] = FSWatcher::FoundFile.new(fullFileName, modTime, size)
299
- end
300
- end
301
- end
267
+ elsif modTime > foundFile.modTime then
268
+
269
+ # if the mod times are different on files we already have
270
+ # found this is an update
271
+ willYield = true
272
+
273
+ # if we are using md5's then compare them
274
+ if @useMD5 then
275
+ filesMD5 = FSWatcher.genFileMD5(fullFileName)
276
+ if filesMD5 && foundFile.md5 then
277
+ if filesMD5.to_s == foundFile.md5.to_s then
278
+ willYield = false
279
+ end
280
+ end
281
+ # if we are yielding then the md5s are dif so
282
+ # update the cached md5 value
283
+ foundFile.setMD5(filesMD5) if willYield
284
+ end
285
+ block.call(MODIFIED, fullFileName) if willYield
286
+ foundFile.updateModTime(modTime)
287
+ end
288
+
289
+ else
290
+ # this is a new file for our list. dont update the md5 here since
291
+ # the file might not yet be done being written to
292
+ @foundFiles[fullFileName] = FSWatcher::FoundFile.new(fullFileName, modTime, size)
293
+ end
294
+ end
295
+ end
302
296
  end
303
297
  }
304
298
  end
@@ -1,8 +1,6 @@
1
1
  # This file is loaded right after orm is initialized and right before app, controllers and models
2
2
  # place code here which is used throughout the application
3
-
4
-
5
-
3
+ printf "Loading Environment..."
6
4
 
7
5
  Doozer::Initializer.after_orm do | config |
8
6
  # require 'doozer/plugins/paginate/init'
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ require 'date'
3
+ require 'irb'
4
+ require 'rubygems'
5
+ require 'doozer'
6
+ @env = (ARGV.length > 0) ? ARGV[0] : 'development'
7
+ ARGV.delete(@env) if ARGV.include?(@env)
8
+ @env = @env.to_sym
9
+ printf "[Doozer #{Doozer::Version::STRING}]\n"
10
+ # see http://ruby-doc.org/core/ for more options
11
+ IRB.conf[:LOAD_MODULES] = ["irb/completion", "#{DOOZER_PATH}/doozer/scripts/console"]
12
+ IRB.conf[:USE_READLINE] = true
13
+ IRB.load_modules()
14
+ IRB.parse_opts()
15
+ IRB.start()
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grippy-doozer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - grippy
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-10 00:00:00 -07:00
12
+ date: 2009-08-11 00:00:00 -07:00
13
13
  default_executable: doozer
14
14
  dependencies: []
15
15
 
@@ -59,6 +59,7 @@ files:
59
59
  - lib/doozer/redirect.rb
60
60
  - lib/doozer/route.rb
61
61
  - lib/doozer/scripts/cluster.rb
62
+ - lib/doozer/scripts/console.rb
62
63
  - lib/doozer/scripts/migrate.rb
63
64
  - lib/doozer/scripts/task.rb
64
65
  - lib/doozer/scripts/test.rb
@@ -80,6 +81,7 @@ files:
80
81
  - templates/skeleton/config/rack.rb
81
82
  - templates/skeleton/config/routes.rb
82
83
  - templates/skeleton/script/cluster
84
+ - templates/skeleton/script/console
83
85
  - templates/skeleton/script/migrate
84
86
  - templates/skeleton/script/task
85
87
  - templates/skeleton/script/test