bivouac 0.2.2 → 0.2.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/README +15 -0
- data/bin/bivouac +45 -8
- data/doc/rdoc/classes/BivouacHelpers/FormView.html +157 -122
- data/doc/rdoc/classes/BivouacHelpers/JavaScriptView.html +1 -1
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/README.html +41 -1
- data/doc/rdoc/files/lib/bivouac/helpers/view/goh/form_rb.html +1 -1
- data/doc/rdoc/files/lib/bivouac/helpers/view/goh/javascript_rb.html +1 -1
- data/examples/bivouac_sample/Rakefile +20 -0
- data/examples/bivouac_sample/app/bivouac_sample.rb +12 -4
- data/examples/bivouac_sample/app/controllers/edit_in_place.rb +17 -0
- data/examples/bivouac_sample/app/controllers/index.rb +11 -1
- data/examples/bivouac_sample/app/controllers/not_found.rb +16 -0
- data/examples/bivouac_sample/app/helpers/_helpers.rb +5 -3
- data/examples/bivouac_sample/app/views/edit_in_place.rb +52 -0
- data/examples/bivouac_sample/app/views/index.rb +21 -11
- data/examples/bivouac_sample/app/views/not_found.rb +13 -0
- data/examples/bivouac_sample/config/database.yml +3 -0
- data/examples/bivouac_sample/config/environment.rb +3 -2
- data/examples/bivouac_sample/config/postamble.rb +104 -44
- data/examples/bivouac_sample/script/generate +6 -0
- data/examples/bivouac_sample/test/test_edit_in_place.rb +22 -0
- data/examples/bivouac_sample/test/test_index.rb +22 -0
- data/lib/bivouac/commands/generate.rb +34 -13
- data/lib/bivouac/commands/generate.rb_OLD +342 -0
- data/lib/bivouac/helpers/view/goh/form.rb +33 -9
- data/lib/bivouac/helpers/view/goh/javascript.rb +1 -1
- data/lib/bivouac/template/application/postamble.rb +3 -3
- data/lib/bivouac/template/application_goh.rb +21 -3
- data/lib/bivouac/template/environment.rb +7 -2
- data/lib/bivouac/template/generate/create.rb +3 -5
- data/lib/bivouac/template/generate/migrate.rb +1 -2
- data/lib/bivouac/template/generate/migrate_begin.rb +11 -0
- data/lib/bivouac/template/generate/migrate_column.rb +1 -0
- data/lib/bivouac/template/generate/migrate_end.rb +8 -0
- data/lib/bivouac/template/generate/migration_add.rb +1 -0
- data/lib/bivouac/template/generate/migration_begin.rb +10 -0
- data/lib/bivouac/template/generate/migration_end.rb +3 -0
- data/lib/bivouac/template/generate/migration_middle.rb +3 -0
- data/lib/bivouac/template/generate/migration_remove.rb +1 -0
- data/lib/bivouac/template/static/default_layout_view.rb +33 -0
- data/lib/bivouac/template/static/not_found_controller.rb +16 -0
- data/lib/bivouac/template/static/not_found_view.rb +13 -0
- data/lib/cookies_sessions.rb +39 -0
- metadata +23 -3
@@ -245,8 +245,9 @@ module Bivouac
|
|
245
245
|
else
|
246
246
|
model_list = [ model ]
|
247
247
|
end
|
248
|
-
|
249
|
-
model_list.
|
248
|
+
|
249
|
+
model_name = model_list.shift
|
250
|
+
#model_list.each do |model_name|
|
250
251
|
# Model class name, passed to the template
|
251
252
|
@model_class_name = model_name.classify
|
252
253
|
|
@@ -255,8 +256,8 @@ module Bivouac
|
|
255
256
|
io.puts template( "generate/model", binding )
|
256
257
|
end
|
257
258
|
|
258
|
-
migration( model_name )
|
259
|
-
end
|
259
|
+
migration( [model_name] + model_list )
|
260
|
+
#end
|
260
261
|
end
|
261
262
|
|
262
263
|
def migration( model = nil )
|
@@ -283,7 +284,7 @@ module Bivouac
|
|
283
284
|
model = @script_arguments
|
284
285
|
from_model = false
|
285
286
|
else
|
286
|
-
model = [ model ]
|
287
|
+
# model = [ model ]
|
287
288
|
from_model = true
|
288
289
|
end
|
289
290
|
|
@@ -313,23 +314,43 @@ module Bivouac
|
|
313
314
|
end
|
314
315
|
|
315
316
|
puts "\t* Migration from version #{old_version} to version #{@new_version}" if old_version > 0.0
|
316
|
-
|
317
|
-
model.
|
317
|
+
|
318
|
+
model_name = model.shift
|
319
|
+
# model.each do |model_name|
|
318
320
|
# Model class name
|
319
321
|
@model_class_name = model_name.classify
|
320
322
|
|
321
|
-
# Model class name
|
322
|
-
@model_table_name = (@app.environment.appname.downcase + "_" + model_name).tableize
|
323
|
-
|
324
323
|
destination_file = File.dirname( $0 ) + "/../db/migrate/" + file_prefix + "_" + model_name.underscore + ".rb"
|
325
324
|
createFile( destination_file ) do |io|
|
326
325
|
if from_model
|
327
|
-
|
326
|
+
# Model table name
|
327
|
+
@model_table_name = (@app.environment.appname.downcase + "_" + model_name).tableize
|
328
|
+
|
329
|
+
io.puts template( "generate/migrate_begin", binding )
|
330
|
+
|
331
|
+
model.each do |column|
|
332
|
+
@model_data_name, @model_data_type = column.split( /:/ )
|
333
|
+
io.puts template( "generate/migrate_column", binding )
|
334
|
+
end
|
335
|
+
|
336
|
+
io.puts template( "generate/migrate_end", binding )
|
328
337
|
else
|
329
|
-
|
338
|
+
# Model table name
|
339
|
+
@model_table_name = (@app.environment.appname.downcase + "_" + (model_name.underscore.split( /_/ ))[-1]).tableize
|
340
|
+
io.puts template( "generate/migration_begin", binding )
|
341
|
+
model.each do |column|
|
342
|
+
@model_data_name, @model_data_type = column.split( /:/ )
|
343
|
+
io.puts template( "generate/migration_add", binding )
|
344
|
+
end
|
345
|
+
io.puts template( "generate/migration_middle", binding )
|
346
|
+
model.each do |column|
|
347
|
+
@model_data_name, @model_data_type = column.split( /:/ )
|
348
|
+
io.puts template( "generate/migration_remove", binding )
|
349
|
+
end
|
350
|
+
io.puts template( "generate/migration_end", binding )
|
330
351
|
end
|
331
352
|
end
|
332
|
-
end
|
353
|
+
# end
|
333
354
|
|
334
355
|
destination_file = File.dirname( $0 ) + "/../db/create.rb"
|
335
356
|
createFile( destination_file, false, false ) do |io|
|
@@ -0,0 +1,342 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# bivouac
|
3
|
+
# (c)2007, 2008 Grégoire Lejeune
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'optparse'
|
7
|
+
require 'ostruct'
|
8
|
+
require 'bivouac/template'
|
9
|
+
require 'bivouac/utils'
|
10
|
+
require 'active_support'
|
11
|
+
require 'active_record'
|
12
|
+
require 'find'
|
13
|
+
require File.dirname($0) + '/../config/environment.rb'
|
14
|
+
|
15
|
+
module Bivouac
|
16
|
+
class Generate
|
17
|
+
include Bivouac::Template
|
18
|
+
# Initialize the optionnal generators table
|
19
|
+
add_generator []
|
20
|
+
|
21
|
+
def initialize( argv )
|
22
|
+
# Generator type (controller, model, migration, view, ...)
|
23
|
+
@generator_type = argv.shift
|
24
|
+
|
25
|
+
# Display help if asked
|
26
|
+
if ['-h', '--help'].include?( @generator_type )
|
27
|
+
help
|
28
|
+
exit
|
29
|
+
end
|
30
|
+
|
31
|
+
# Generator arguments.
|
32
|
+
# Example :
|
33
|
+
# script/generate controller Hello World
|
34
|
+
# @script_arguments = ['Hello', 'World']
|
35
|
+
@script_arguments = argv.dup
|
36
|
+
|
37
|
+
# Application environment
|
38
|
+
@app = Bivouac::Environment.new( )
|
39
|
+
|
40
|
+
# Database configuration
|
41
|
+
@database_configuration = @app.environment.db
|
42
|
+
if @database_configuration[:adapter] =~ /sqlite/
|
43
|
+
@database_configuration[:database] = File.expand_path( File.dirname( $0 ) + "/../" + @database_configuration[:database] )
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def run
|
48
|
+
# If the générator is not installed, display help and exit
|
49
|
+
unless ( ["controller", "model", "migration", "view", "test"] + @@plugins_generators ).include?( @generator_type )
|
50
|
+
help
|
51
|
+
exit
|
52
|
+
end
|
53
|
+
|
54
|
+
# Call generator
|
55
|
+
send( @generator_type.to_sym )
|
56
|
+
return
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
def help
|
61
|
+
puts "Usage: script/generate generator [options] [args]"
|
62
|
+
puts ""
|
63
|
+
puts "Generators"
|
64
|
+
puts " Builtin: controller, model, migration, view, test"
|
65
|
+
puts " Plugins: " + @@plugins_generators.join(", ") if @@plugins_generators.size > 0
|
66
|
+
puts ""
|
67
|
+
puts "Commun options:"
|
68
|
+
puts " -h, --help Show general help message"
|
69
|
+
end
|
70
|
+
|
71
|
+
def controller
|
72
|
+
# controller generator options
|
73
|
+
controller_options = OpenStruct.new( :noview => false, :notest => false, :default_route => true, :routes => [] )
|
74
|
+
|
75
|
+
# Controller options
|
76
|
+
argument_options = OptionParser.new do |opts|
|
77
|
+
opts.banner = ""
|
78
|
+
opts.separator "controller generator options:"
|
79
|
+
opts.on("-v", "--no-view", "Do not generate any view for the controller") { |controller_options.noview|
|
80
|
+
controller_options.noview = true
|
81
|
+
}
|
82
|
+
opts.on("-d", "--no-route", "Do not add the default route to the controller (/controller_name)") { |controller_options.default_route|
|
83
|
+
controller_options.default_route = false
|
84
|
+
}
|
85
|
+
opts.on("-r", "--route ROUTE,ROUTE,...", "Add ROUTES to the controller") { |routes|
|
86
|
+
controller_options.routes = routes.split(',')
|
87
|
+
}
|
88
|
+
opts.on("-t", "--no-test", "Do not generate any test for the controller") { |controller_options.notest|
|
89
|
+
controller_options.notest = true
|
90
|
+
}
|
91
|
+
|
92
|
+
opts.separator ""
|
93
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
94
|
+
help
|
95
|
+
puts opts
|
96
|
+
exit
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# parse options
|
101
|
+
argument_options.parse! @script_arguments
|
102
|
+
if @script_arguments.length < 1
|
103
|
+
help
|
104
|
+
puts argument_options
|
105
|
+
exit
|
106
|
+
end
|
107
|
+
|
108
|
+
@script_arguments.each do |controller_name|
|
109
|
+
# Controller class name, passed to the template
|
110
|
+
@controller_class_name = controller_name.classify
|
111
|
+
# File name for the template
|
112
|
+
controller_file_name = @controller_class_name.underscore
|
113
|
+
|
114
|
+
# Destination file
|
115
|
+
destination_file = File.dirname( $0 ) + "/../app/controllers/" + controller_file_name + ".rb"
|
116
|
+
|
117
|
+
# Set view name, passed to the template
|
118
|
+
@view_name = @controller_class_name.underscore
|
119
|
+
|
120
|
+
# Set routes, passed to the template
|
121
|
+
default_route = @view_name
|
122
|
+
controller_options.routes << default_route if controller_options.default_route and controller_options.routes.include?( default_route ) == false
|
123
|
+
@controller_routes = if controller_options.routes.size > 0
|
124
|
+
" < R '/" + controller_options.routes.join("', '/") + "'"
|
125
|
+
else
|
126
|
+
""
|
127
|
+
end
|
128
|
+
|
129
|
+
# Create controller
|
130
|
+
createFile( destination_file ) do |io|
|
131
|
+
io.puts template( "generate/controller", binding )
|
132
|
+
end
|
133
|
+
|
134
|
+
# Create view @view_name
|
135
|
+
view( @view_name ) if controller_options.noview == false
|
136
|
+
|
137
|
+
# Create test for @view_name with routes controller_options.routes
|
138
|
+
test( @view_name, controller_options.routes ) if controller_options.notest == false
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def view( view_name = nil )
|
143
|
+
if @app.environment.orgtype.downcase == "erb"
|
144
|
+
raise "ERB applications are no longer supported. Sorry!"
|
145
|
+
end
|
146
|
+
|
147
|
+
# View options
|
148
|
+
argument_options = OptionParser.new do |opts|
|
149
|
+
opts.banner = ""
|
150
|
+
opts.separator "view generator options:"
|
151
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
152
|
+
help
|
153
|
+
puts opts
|
154
|
+
exit
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
# parse options if view name is not passed
|
159
|
+
if view_name.nil?
|
160
|
+
argument_options.parse! @script_arguments
|
161
|
+
if @script_arguments.length < 1
|
162
|
+
help
|
163
|
+
puts argument_options
|
164
|
+
exit
|
165
|
+
end
|
166
|
+
|
167
|
+
view_name = @script_arguments
|
168
|
+
else
|
169
|
+
view_name = [ view_name ]
|
170
|
+
end
|
171
|
+
|
172
|
+
view_name.each do |view|
|
173
|
+
# Set view name, passed to the template
|
174
|
+
@view_name = view.underscore
|
175
|
+
|
176
|
+
# Set destination file, passed to the template
|
177
|
+
@destination_file = File.dirname( $0 ) + "/../app/views/" + @view_name.underscore + ".rb"
|
178
|
+
|
179
|
+
# Create view file
|
180
|
+
createFile( @destination_file ) do |io|
|
181
|
+
io.puts template( "generate/view_goh", binding )
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
def test( test_name = nil, routes = nil )
|
187
|
+
# Test options
|
188
|
+
argument_options = OptionParser.new do |opts|
|
189
|
+
opts.banner = ""
|
190
|
+
opts.separator "test generator options:"
|
191
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
192
|
+
help
|
193
|
+
puts opts
|
194
|
+
exit
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
# parse options if view name is not passed
|
199
|
+
if test_name.nil?
|
200
|
+
argument_options.parse! @script_arguments
|
201
|
+
if @script_arguments.length < 1
|
202
|
+
help
|
203
|
+
puts argument_options
|
204
|
+
exit
|
205
|
+
end
|
206
|
+
|
207
|
+
test_name = @script_arguments.shift
|
208
|
+
routes = @script_arguments
|
209
|
+
end
|
210
|
+
|
211
|
+
# Create test file
|
212
|
+
destination_file = File.dirname( $0 ) + "/../test/test_" + test_name.underscore + ".rb"
|
213
|
+
createFile( destination_file ) do |io|
|
214
|
+
io.puts template( "generate/test_begin", binding )
|
215
|
+
|
216
|
+
routes.each do |@test_route|
|
217
|
+
io.puts template( "generate/test_views", binding )
|
218
|
+
end
|
219
|
+
|
220
|
+
io.puts template( "generate/test_end", binding )
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
def model( model = nil )
|
225
|
+
# Model options
|
226
|
+
argument_options = OptionParser.new do |opts|
|
227
|
+
opts.banner = ""
|
228
|
+
opts.separator "model generator options:"
|
229
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
230
|
+
help
|
231
|
+
puts opts
|
232
|
+
exit
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
# parse options
|
237
|
+
if model.nil?
|
238
|
+
argument_options.parse! @script_arguments
|
239
|
+
if @script_arguments.length < 1
|
240
|
+
help
|
241
|
+
puts argument_options
|
242
|
+
exit
|
243
|
+
end
|
244
|
+
model_list = @script_arguments
|
245
|
+
else
|
246
|
+
model_list = [ model ]
|
247
|
+
end
|
248
|
+
|
249
|
+
model_list.each do |model_name|
|
250
|
+
# Model class name, passed to the template
|
251
|
+
@model_class_name = model_name.classify
|
252
|
+
|
253
|
+
destination_file = File.dirname( $0 ) + "/../app/models/" + @model_class_name.underscore + ".rb"
|
254
|
+
createFile( destination_file ) do |io|
|
255
|
+
io.puts template( "generate/model", binding )
|
256
|
+
end
|
257
|
+
|
258
|
+
migration( model_name )
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
def migration( model = nil )
|
263
|
+
# Test options
|
264
|
+
argument_options = OptionParser.new do |opts|
|
265
|
+
opts.banner = ""
|
266
|
+
opts.separator "migration generator options:"
|
267
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
268
|
+
help
|
269
|
+
puts opts
|
270
|
+
exit
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
# parse options if view name is not passed
|
275
|
+
if model.nil?
|
276
|
+
argument_options.parse! @script_arguments
|
277
|
+
if @script_arguments.length < 1
|
278
|
+
help
|
279
|
+
puts argument_options
|
280
|
+
exit
|
281
|
+
end
|
282
|
+
|
283
|
+
model = @script_arguments
|
284
|
+
from_model = false
|
285
|
+
else
|
286
|
+
model = [ model ]
|
287
|
+
from_model = true
|
288
|
+
end
|
289
|
+
|
290
|
+
# Get old and new version
|
291
|
+
old_version = 0.0
|
292
|
+
begin
|
293
|
+
ActiveRecord::Base.establish_connection @database_configuration
|
294
|
+
conn = ActiveRecord::Base.connection
|
295
|
+
table = nil
|
296
|
+
conn.tables.each { |t| table = t if t =~ /_schema_infos$/ }
|
297
|
+
version_info = conn.select_all( "select * from #{table}" )
|
298
|
+
old_version = version_info[0]['version'].to_f
|
299
|
+
rescue
|
300
|
+
end
|
301
|
+
@new_version = old_version + 1
|
302
|
+
|
303
|
+
# Get prefix for file
|
304
|
+
files = []
|
305
|
+
Find.find( File.dirname( $0 ) + "/../db/migrate/" ) do |f|
|
306
|
+
fn = File.basename( f )
|
307
|
+
files << fn if fn =~ /^\d\d\d/
|
308
|
+
end
|
309
|
+
file_prefix = "001"
|
310
|
+
if files.size > 0
|
311
|
+
files = files.sort {|x,y| y[0,3] <=> x[0,3]}
|
312
|
+
file_prefix = sprintf( "%03d", (files[0][0,3].to_i + 1) )
|
313
|
+
end
|
314
|
+
|
315
|
+
puts "\t* Migration from version #{old_version} to version #{@new_version}" if old_version > 0.0
|
316
|
+
|
317
|
+
model.each do |model_name|
|
318
|
+
# Model class name
|
319
|
+
@model_class_name = model_name.classify
|
320
|
+
|
321
|
+
# Model class name
|
322
|
+
@model_table_name = (@app.environment.appname.downcase + "_" + model_name).tableize
|
323
|
+
|
324
|
+
destination_file = File.dirname( $0 ) + "/../db/migrate/" + file_prefix + "_" + model_name.underscore + ".rb"
|
325
|
+
createFile( destination_file ) do |io|
|
326
|
+
if from_model
|
327
|
+
io.puts template( "generate/migrate", binding )
|
328
|
+
else
|
329
|
+
io.puts template( "generate/migration", binding )
|
330
|
+
end
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
destination_file = File.dirname( $0 ) + "/../db/create.rb"
|
335
|
+
createFile( destination_file, false, false ) do |io|
|
336
|
+
io.puts template( "generate/create", binding )
|
337
|
+
end
|
338
|
+
end
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
342
|
+
Bivouac::Generate.new( ARGV ).run( )
|
@@ -16,17 +16,41 @@ module BivouacHelpers
|
|
16
16
|
javascript_tag "new Ajax.Autocompleter( '#{field_id}', '#{choises_id}', '#{url}', #{options_for_javascript(options)} );"
|
17
17
|
end
|
18
18
|
|
19
|
+
# http://blog.codahale.com/2006/01/14/a-rails-howto-simplify-in-place-editing-with-scriptaculous/
|
20
|
+
def editable_content(options)
|
21
|
+
options[:content] = { :element => 'span' }.merge(options[:content])
|
22
|
+
# options[:url] = {}.merge(options[:url])
|
23
|
+
options[:ajax] = { :okText => "'Save'", :cancelText => "'Cancel'"}.merge(options[:ajax] || {})
|
24
|
+
script = Array.new
|
25
|
+
script << "new Ajax.InPlaceEditor("
|
26
|
+
script << " '#{options[:content][:options][:id]}',"
|
27
|
+
script << " '#{options[:url]}',"
|
28
|
+
script << " {"
|
29
|
+
script << options[:ajax].map{ |key, value| "#{key.to_s}: #{value}" }.join(", ")
|
30
|
+
script << " }"
|
31
|
+
script << ")"
|
32
|
+
|
33
|
+
send(
|
34
|
+
options[:content][:element],
|
35
|
+
options[:content][:text],
|
36
|
+
options[:content][:options]
|
37
|
+
)
|
38
|
+
|
39
|
+
javascript_tag( script.join("\n") )
|
40
|
+
end
|
41
|
+
|
42
|
+
|
19
43
|
# Autocomplete options :
|
20
44
|
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
45
|
+
# :url : URL to call for autocompletion results
|
46
|
+
# :tokens:
|
47
|
+
# :frequency :
|
48
|
+
# :minChars :
|
49
|
+
# :indicator : When sending the Ajax request Autocompleter shows this
|
50
|
+
# :updateElement : Hook for a custom function called after the element has been updated (i.e. when the user has selected an entry).
|
51
|
+
# :afterUpdateElement : Hook for a custom function called after the element has been updated (i.e. when the user has selected an entry).
|
52
|
+
# :callback : This function is called just before the Request is actually made, allowing you to modify the querystring that is sent to the server.
|
53
|
+
# :parameters : If you need to send any additional parameters through your search form, add them here, in the usual {field: 'value',another: 'value'} or 'field=value&another=value' manner.
|
30
54
|
def text_field(field_name, value = "", options = {})
|
31
55
|
autocomplete_options = nil
|
32
56
|
|
@@ -27,11 +27,11 @@ SimpleDaemon::WORKING_DIRECTORY = DIRNAME + "/../log/"
|
|
27
27
|
class <%= @conf.appname %>Daemon < SimpleDaemon::Base
|
28
28
|
begin
|
29
29
|
begin
|
30
|
-
require 'thin'
|
31
|
-
@@loaded_server = 'thin'
|
32
|
-
rescue LoadError
|
33
30
|
require 'mongrel/camping'
|
34
31
|
@@loaded_server = 'mongrel'
|
32
|
+
rescue LoadError
|
33
|
+
require 'thin'
|
34
|
+
@@loaded_server = 'thin'
|
35
35
|
end
|
36
36
|
rescue LoadError
|
37
37
|
require 'webrick/httpserver'
|
@@ -11,10 +11,22 @@
|
|
11
11
|
#
|
12
12
|
require 'rubygems'
|
13
13
|
require 'camping'
|
14
|
-
require 'camping/session'
|
15
14
|
require 'mime/types'
|
16
15
|
require 'bivouac'
|
17
16
|
|
17
|
+
<% if @conf.session == :db %>
|
18
|
+
require 'camping/session'
|
19
|
+
module <%= @conf.appname %>
|
20
|
+
include Camping::Session
|
21
|
+
end
|
22
|
+
<% else %>
|
23
|
+
require 'cookies_sessions'
|
24
|
+
module <%= @conf.appname %>
|
25
|
+
include Camping::CookieSessions
|
26
|
+
@@state_secret = "You want a really really long string of rubbish nobody could ever ever guess! Don't tell anyone! Not even your girlfriend or dog!"
|
27
|
+
end
|
28
|
+
<% end %>
|
29
|
+
|
18
30
|
include Bivouac
|
19
31
|
|
20
32
|
# Load libs
|
@@ -55,8 +67,14 @@ module <%= @conf.appname %>::Controllers
|
|
55
67
|
else
|
56
68
|
type = (MIME::Types.type_for(file)[0] || '/text/plain').to_s
|
57
69
|
@headers['Content-Type'] = type
|
58
|
-
|
59
|
-
|
70
|
+
begin
|
71
|
+
@body = open( File.join( PATH, '..', 'public', file ) ).read
|
72
|
+
rescue Errno::ENOENT => e
|
73
|
+
@path = File.join '/public', file
|
74
|
+
@status = '404'
|
75
|
+
@headers['Content-Type'] = "text/html"
|
76
|
+
render :not_found
|
77
|
+
end
|
60
78
|
end
|
61
79
|
end
|
62
80
|
end
|
@@ -6,6 +6,7 @@
|
|
6
6
|
#
|
7
7
|
|
8
8
|
require 'ostruct'
|
9
|
+
require 'yaml'
|
9
10
|
|
10
11
|
module Bivouac
|
11
12
|
class Environment
|
@@ -21,7 +22,7 @@ module Bivouac
|
|
21
22
|
:port => <%= @conf.port %>,
|
22
23
|
|
23
24
|
# Database configuration
|
24
|
-
:db =>
|
25
|
+
:db => open("#{File.dirname( __FILE__ )}/database.yml") {|f| YAML.load(f)},
|
25
26
|
|
26
27
|
# Name of the application
|
27
28
|
# DO NOT CHANGE IT, OR YOU REALLY KNOW WHAT YOU ARE DOING!
|
@@ -33,7 +34,11 @@ module Bivouac
|
|
33
34
|
|
34
35
|
# Organisation type of the application
|
35
36
|
# DO NOT CHANGE IT, OR YOU REALLY KNOW WHAT YOU ARE DOING!
|
36
|
-
:orgtype => "<%= @conf.orgtype %>"
|
37
|
+
:orgtype => "<%= @conf.orgtype %>",
|
38
|
+
|
39
|
+
# Session type
|
40
|
+
# DO NOT CHANGE IT, OR YOU REALLY KNOW WHAT YOU ARE DOING!
|
41
|
+
:session_type => "<%= @conf.session %>"
|
37
42
|
)
|
38
43
|
end
|
39
44
|
end
|
@@ -5,11 +5,9 @@
|
|
5
5
|
# Copyright (c) <%= Time.now.year %> __My__. All rights reserved.
|
6
6
|
#
|
7
7
|
|
8
|
-
module <%= @app.environment.appname %>
|
9
|
-
include Camping::Session
|
10
|
-
end
|
11
|
-
|
12
8
|
def <%= @app.environment.appname %>.create
|
13
|
-
|
9
|
+
<% if @app.environment.session_type == :db %>
|
10
|
+
Camping::Models::Session.create_schema
|
11
|
+
<% end %>
|
14
12
|
<%= @app.environment.appname %>::Models.create_schema
|
15
13
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#
|
2
|
+
# Project <%= @app.environment.appname %>
|
3
|
+
#
|
4
|
+
# Created using bivouac on <%= Time.now %>.
|
5
|
+
# Copyright (c) <%= Time.now.year %> __My__. All rights reserved.
|
6
|
+
#
|
7
|
+
|
8
|
+
module <%= @app.environment.appname %>::Models
|
9
|
+
class Create<%= @model_class_name %> < V <%= @new_version %>
|
10
|
+
def self.up
|
11
|
+
create_table :<%= @model_table_name %> do |t|
|
@@ -0,0 +1 @@
|
|
1
|
+
t.<%= @model_data_type %> :<%= @model_data_name %>
|
@@ -0,0 +1 @@
|
|
1
|
+
add_column :<%= @model_table_name %>, :<%= @model_data_name %>, :<%= @model_data_type %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#
|
2
|
+
# Project <%= @app.environment.appname %>
|
3
|
+
#
|
4
|
+
# Created using bivouac on <%= Time.now %>.
|
5
|
+
# Copyright (c) <%= Time.now.year %> __My__. All rights reserved.
|
6
|
+
#
|
7
|
+
|
8
|
+
module <%= @app.environment.appname %>::Models
|
9
|
+
class <%= @model_class_name %> < V <%= @new_version %>
|
10
|
+
def self.up
|
@@ -0,0 +1 @@
|
|
1
|
+
remove_column :<%= @model_table_name %>, :<%= @model_data_name %>
|