bivouac 0.2.3 → 0.2.4
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 -4
- data/bin/bivouac +7 -1
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/README.html +38 -7
- data/lib/bivouac/commands/generate.rb +156 -47
- data/lib/bivouac/template/Rakefile.rb +1 -4
- data/lib/bivouac/template/application/postamble.rb +1 -3
- data/lib/bivouac/template/application_goh.rb +23 -4
- data/lib/bivouac/template/generate/controller_action.rb +8 -0
- data/lib/bivouac/template/generate/{controller.rb → controller_begin.rb} +0 -9
- data/lib/bivouac/template/generate/controller_end.rb +1 -0
- data/lib/bivouac/template/generate/create.rb +0 -0
- data/lib/bivouac/template/generate/test_begin.rb +1 -1
- data/lib/bivouac/template/generate/test_views.rb +2 -2
- data/lib/bivouac/template/generate/{view_goh.rb → view.rb} +1 -1
- data/lib/bivouac/template/static/console_rc.rb +12 -0
- data/lib/bivouac/template/static/default_layout_view.rb +0 -8
- data/lib/bivouac/template.rb +1 -0
- data/lib/bivouac.rb +3 -3
- data/lib/{cookies_sessions.rb → camping/cookies_sessions.rb} +0 -0
- metadata +9 -6
- data/lib/bivouac/commands/generate.rb_OLD +0 -342
data/README
CHANGED
@@ -20,17 +20,26 @@ Bivouac is a simple generator for camping[http://code.whytheluckystiff.net/campi
|
|
20
20
|
|
21
21
|
== FEATURES/PROBLEMS:
|
22
22
|
|
23
|
+
=== 0.2.4:
|
24
|
+
|
25
|
+
* Add rc file for script/console
|
26
|
+
* script/generate view is deprecated.
|
27
|
+
* controller generator now support view :
|
28
|
+
ruby script/generate controller my_controller my_view_one my_view_two ...
|
29
|
+
* Add RemoveColumnsFromTable-like migration
|
30
|
+
* Rewrite generators help
|
31
|
+
* cookies_sessions move from lib to lib/camping
|
32
|
+
* Improved support for multiple layouts: add the layout helper for controller. You can use 'layout :mylayout' instead of '@layout = "mylayout"' in your controller. Use 'layout :none' if you don't want to use a layout.
|
33
|
+
|
23
34
|
=== 0.2.3:
|
24
35
|
|
25
36
|
* Ruby 1.9... not yet !
|
26
37
|
* Database configuration use YAML
|
27
38
|
* Add not_found controller and view
|
28
39
|
* Remove :id column definition in migrate.rb
|
29
|
-
* Add helper FormView#editable_content from
|
30
|
-
http://blog.codahale.com/2006/01/14/a-rails-howto-simplify-in-place-editing-with-scriptaculous/
|
31
|
-
Example at http://bivouac.rubyforge.org/svn/trunk/bivouac/examples/bivouac_sample/
|
40
|
+
* Add helper FormView#editable_content from http://blog.codahale.com/2006/01/14/a-rails-howto-simplify-in-place-editing-with-scriptaculous/ Example at http://bivouac.rubyforge.org/svn/trunk/bivouac/examples/bivouac_sample/
|
32
41
|
* model generator now work with column name and type. Example :
|
33
|
-
|
42
|
+
ruby script/generate model user name:string mail:string
|
34
43
|
* Add Multiple Layouts support (see http://rubyforge.org/pipermail/camping-list/2008-May/000729.html)
|
35
44
|
* Thin is not more the default server (because layouts don't work with Thin :()
|
36
45
|
* Add Cookie session support. Use -S to specify session type (db or cookie - default).
|
@@ -164,8 +173,10 @@ Bivouac is a simple generator for camping[http://code.whytheluckystiff.net/campi
|
|
164
173
|
for ruby 1.8.6 (2007-06-07) [universal-darwin9.0]
|
165
174
|
|
166
175
|
Specific options:
|
176
|
+
-d, --database NAME Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite2/sqlite3).
|
167
177
|
-P, --port PORT Which port to bind to (3301)
|
168
178
|
-a, --address ADDR Address to bind to (0.0.0.0)
|
179
|
+
-S, --session TYPE Session type (db|cookie). Default : cookie
|
169
180
|
|
170
181
|
Common options:
|
171
182
|
-?, --help Show this message
|
data/bin/bivouac
CHANGED
@@ -125,6 +125,7 @@ createDir( "#{@conf.appdir}/app/controllers" )
|
|
125
125
|
createDir( "#{@conf.appdir}/app/helpers" )
|
126
126
|
createDir( "#{@conf.appdir}/app/models" )
|
127
127
|
createDir( "#{@conf.appdir}/app/views" )
|
128
|
+
createDir( "#{@conf.appdir}/app/views/layouts" )
|
128
129
|
createDir( "#{@conf.appdir}/db" )
|
129
130
|
createDir( "#{@conf.appdir}/db/migrate" )
|
130
131
|
createDir( "#{@conf.appdir}/public" )
|
@@ -177,6 +178,11 @@ createFile( "#{@conf.appdir}/script/console", true ) { |io|
|
|
177
178
|
io.puts template( "console" )
|
178
179
|
}
|
179
180
|
|
181
|
+
# Create console.rc view
|
182
|
+
createFile( "#{@conf.appdir}/script/console.rc" ) { |io|
|
183
|
+
io.puts template( "static/console_rc" )
|
184
|
+
}
|
185
|
+
|
180
186
|
# Create plugin script
|
181
187
|
createFile( "#{@conf.appdir}/script/plugin", true ) { |io|
|
182
188
|
io.puts template( "plugin" )
|
@@ -211,6 +217,6 @@ createFile( "#{@conf.appdir}/app/views/not_found.rb" ) { |io|
|
|
211
217
|
}
|
212
218
|
|
213
219
|
# Create default_layout view
|
214
|
-
createFile( "#{@conf.appdir}/app/views/default_layout.rb" ) { |io|
|
220
|
+
createFile( "#{@conf.appdir}/app/views/layouts/default_layout.rb" ) { |io|
|
215
221
|
io.puts template( "static/default_layout_view" )
|
216
222
|
}
|
data/doc/rdoc/created.rid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Fri, 06 Jun 2008 00:06:38 +0200
|
data/doc/rdoc/files/README.html
CHANGED
@@ -87,7 +87,7 @@ end</strong>
|
|
87
87
|
<div id="README" class="page_shade">
|
88
88
|
<div class="page">
|
89
89
|
<div class="header">
|
90
|
-
<div class="path">README /
|
90
|
+
<div class="path">README / Fri Jun 06 00:06:06 +0200 2008</div>
|
91
91
|
</div>
|
92
92
|
|
93
93
|
<h1>Bivouac</h1>
|
@@ -130,6 +130,36 @@ href="http://code.whytheluckystiff.net/camping">camping</a>.
|
|
130
130
|
</li>
|
131
131
|
</ul>
|
132
132
|
<h2>FEATURES/PROBLEMS:</h2>
|
133
|
+
<h3>0.2.4:</h3>
|
134
|
+
<ul>
|
135
|
+
<li>Add rc file for script/console
|
136
|
+
|
137
|
+
</li>
|
138
|
+
<li>script/generate view is deprecated.
|
139
|
+
|
140
|
+
</li>
|
141
|
+
<li>controller generator now support view :
|
142
|
+
|
143
|
+
<pre>
|
144
|
+
ruby script/generate controller my_controller my_view_one my_view_two ...
|
145
|
+
</pre>
|
146
|
+
</li>
|
147
|
+
<li>Add RemoveColumnsFromTable-like migration
|
148
|
+
|
149
|
+
</li>
|
150
|
+
<li>Rewrite generators help
|
151
|
+
|
152
|
+
</li>
|
153
|
+
<li>cookies_sessions move from lib to lib/camping
|
154
|
+
|
155
|
+
</li>
|
156
|
+
<li>Improved support for multiple layouts: add the layout helper for
|
157
|
+
controller. You can use ‘layout :mylayout’ instead of
|
158
|
+
’@layout = "mylayout"’ in your controller. Use
|
159
|
+
‘layout :none’ if you don‘t want to use a layout.
|
160
|
+
|
161
|
+
</li>
|
162
|
+
</ul>
|
133
163
|
<h3>0.2.3:</h3>
|
134
164
|
<ul>
|
135
165
|
<li>Ruby 1.9… not yet !
|
@@ -144,17 +174,16 @@ href="http://code.whytheluckystiff.net/camping">camping</a>.
|
|
144
174
|
<li>Remove :id column definition in migrate.rb
|
145
175
|
|
146
176
|
</li>
|
147
|
-
<li>Add helper FormView#editable_content from
|
177
|
+
<li>Add helper FormView#editable_content from <a
|
178
|
+
href="http://blog.codahale.com/2006/01/14/a-rails-howto-simplify-in-place-editing-with-scriptaculous">blog.codahale.com/2006/01/14/a-rails-howto-simplify-in-place-editing-with-scriptaculous</a>/
|
179
|
+
Example at <a
|
180
|
+
href="http://bivouac.rubyforge.org/svn/trunk/bivouac/examples/bivouac_sample">bivouac.rubyforge.org/svn/trunk/bivouac/examples/bivouac_sample</a>/
|
148
181
|
|
149
|
-
<pre>
|
150
|
-
http://blog.codahale.com/2006/01/14/a-rails-howto-simplify-in-place-editing-with-scriptaculous/
|
151
|
-
Example at http://bivouac.rubyforge.org/svn/trunk/bivouac/examples/bivouac_sample/
|
152
|
-
</pre>
|
153
182
|
</li>
|
154
183
|
<li>model generator now work with column name and type. Example :
|
155
184
|
|
156
185
|
<pre>
|
157
|
-
|
186
|
+
ruby script/generate model user name:string mail:string
|
158
187
|
</pre>
|
159
188
|
</li>
|
160
189
|
<li>Add Multiple Layouts support (see <a
|
@@ -471,8 +500,10 @@ change <tt>do_GET(req, res)</tt> to <tt>do_GET(req, resp)</tt>
|
|
471
500
|
for ruby 1.8.6 (2007-06-07) [universal-darwin9.0]
|
472
501
|
|
473
502
|
Specific options:
|
503
|
+
-d, --database NAME Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite2/sqlite3).
|
474
504
|
-P, --port PORT Which port to bind to (3301)
|
475
505
|
-a, --address ADDR Address to bind to (0.0.0.0)
|
506
|
+
-S, --session TYPE Session type (db|cookie). Default : cookie
|
476
507
|
|
477
508
|
Common options:
|
478
509
|
-?, --help Show this message
|
@@ -10,6 +10,7 @@ require 'bivouac/utils'
|
|
10
10
|
require 'active_support'
|
11
11
|
require 'active_record'
|
12
12
|
require 'find'
|
13
|
+
require 'fileutils'
|
13
14
|
require File.dirname($0) + '/../config/environment.rb'
|
14
15
|
|
15
16
|
module Bivouac
|
@@ -61,7 +62,7 @@ module Bivouac
|
|
61
62
|
puts "Usage: script/generate generator [options] [args]"
|
62
63
|
puts ""
|
63
64
|
puts "Generators"
|
64
|
-
puts " Builtin: controller, model, migration,
|
65
|
+
puts " Builtin: controller, model, migration, test"
|
65
66
|
puts " Plugins: " + @@plugins_generators.join(", ") if @@plugins_generators.size > 0
|
66
67
|
puts ""
|
67
68
|
puts "Commun options:"
|
@@ -79,13 +80,7 @@ module Bivouac
|
|
79
80
|
opts.on("-v", "--no-view", "Do not generate any view for the controller") { |controller_options.noview|
|
80
81
|
controller_options.noview = true
|
81
82
|
}
|
82
|
-
opts.on("-
|
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|
|
83
|
+
opts.on("-t", "--no-test", "Do not generate any test for the controller") { |controller_options.notest|
|
89
84
|
controller_options.notest = true
|
90
85
|
}
|
91
86
|
|
@@ -93,6 +88,13 @@ module Bivouac
|
|
93
88
|
opts.on_tail("-h", "--help", "Show this message") do
|
94
89
|
help
|
95
90
|
puts opts
|
91
|
+
puts ""
|
92
|
+
puts "Description:"
|
93
|
+
puts " Stubs out a new controller and its views. Pass the controller name, either"
|
94
|
+
puts " CamelCased or under_scored, and a list of views as arguments."
|
95
|
+
puts ""
|
96
|
+
puts "Example:"
|
97
|
+
puts " ruby script/generate controller my_controller my_view_one my_view_two ..."
|
96
98
|
exit
|
97
99
|
end
|
98
100
|
end
|
@@ -102,44 +104,75 @@ module Bivouac
|
|
102
104
|
if @script_arguments.length < 1
|
103
105
|
help
|
104
106
|
puts argument_options
|
107
|
+
puts ""
|
108
|
+
puts "Description:"
|
109
|
+
puts " Stubs out a new controller and its views. Pass the controller name, either"
|
110
|
+
puts " CamelCased or under_scored, and a list of views as arguments."
|
111
|
+
puts ""
|
112
|
+
puts "Example:"
|
113
|
+
puts " ruby script/generate controller my_controller my_view_one my_view_two ..."
|
105
114
|
exit
|
106
115
|
end
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
+
|
117
|
+
# List of routes for test
|
118
|
+
routes = []
|
119
|
+
|
120
|
+
# Get controller
|
121
|
+
controller = @script_arguments.shift
|
122
|
+
# File name for the template
|
123
|
+
controller_file_name = controller.underscore
|
124
|
+
|
125
|
+
# Views directory
|
126
|
+
views_directory = File.dirname( $0 ) + "/../app/views/" + controller_file_name
|
127
|
+
# Create views directory
|
128
|
+
createDir( views_directory )
|
129
|
+
|
130
|
+
# Destination file
|
131
|
+
controller_file = File.dirname( $0 ) + "/../app/controllers/" + controller_file_name + ".rb"
|
132
|
+
|
133
|
+
# Create controller
|
134
|
+
createFile( controller_file ) do |io|
|
135
|
+
io.puts template( "generate/controller_begin", binding )
|
136
|
+
|
137
|
+
# Create views
|
138
|
+
@script_arguments.each do |view|
|
139
|
+
# Controller class name, passed to the template
|
140
|
+
@controller_class_name = controller.classify + view.classify
|
141
|
+
|
142
|
+
# Set view name, passed to the template
|
143
|
+
@view_name = @controller_class_name.underscore
|
144
|
+
|
145
|
+
# File name for the view
|
146
|
+
@view_file = views_directory + "/" + view.underscore + ".rb"
|
147
|
+
|
148
|
+
# Set controller route
|
149
|
+
new_route = controller.underscore + "/" + view.underscore
|
150
|
+
routes << new_route
|
151
|
+
@controller_routes = " < R '/" + new_route + "'"
|
116
152
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
else
|
126
|
-
""
|
127
|
-
end
|
128
|
-
|
129
|
-
# Create controller
|
130
|
-
createFile( destination_file ) do |io|
|
131
|
-
io.puts template( "generate/controller", binding )
|
153
|
+
# Update controller
|
154
|
+
io.puts template( "generate/controller_action", binding )
|
155
|
+
|
156
|
+
# Create view view_name
|
157
|
+
createFile( @view_file ) do |io_view|
|
158
|
+
io_view.puts template( "generate/view", binding )
|
159
|
+
end
|
160
|
+
|
132
161
|
end
|
133
162
|
|
134
|
-
# Create view @view_name
|
135
|
-
view( @view_name ) if controller_options.noview == false
|
136
|
-
|
137
163
|
# Create test for @view_name with routes controller_options.routes
|
138
|
-
test(
|
164
|
+
test( controller, routes ) if controller_options.notest == false
|
165
|
+
|
166
|
+
# Write controller end
|
167
|
+
io.puts template( "generate/controller_end", binding )
|
139
168
|
end
|
140
169
|
end
|
141
170
|
|
171
|
+
# DEPRECATED
|
142
172
|
def view( view_name = nil )
|
173
|
+
warn "View generator is deprecated."
|
174
|
+
return
|
175
|
+
|
143
176
|
if @app.environment.orgtype.downcase == "erb"
|
144
177
|
raise "ERB applications are no longer supported. Sorry!"
|
145
178
|
end
|
@@ -191,6 +224,13 @@ module Bivouac
|
|
191
224
|
opts.on_tail("-h", "--help", "Show this message") do
|
192
225
|
help
|
193
226
|
puts opts
|
227
|
+
puts ""
|
228
|
+
puts "Description:"
|
229
|
+
puts " Stubs out a new test. Pass the name of the test, either"
|
230
|
+
puts " CamelCased or under_scored, as an argument."
|
231
|
+
puts ""
|
232
|
+
puts "Example:"
|
233
|
+
puts " ruby script/generate test my_test /route/one /route/two ..."
|
194
234
|
exit
|
195
235
|
end
|
196
236
|
end
|
@@ -201,6 +241,13 @@ module Bivouac
|
|
201
241
|
if @script_arguments.length < 1
|
202
242
|
help
|
203
243
|
puts argument_options
|
244
|
+
puts ""
|
245
|
+
puts "Description:"
|
246
|
+
puts " Stubs out a new test. Pass the name of the test, either"
|
247
|
+
puts " CamelCased or under_scored, as an argument."
|
248
|
+
puts ""
|
249
|
+
puts "Example:"
|
250
|
+
puts " ruby script/generate test my_test /route/one /route/two ..."
|
204
251
|
exit
|
205
252
|
end
|
206
253
|
|
@@ -213,7 +260,9 @@ module Bivouac
|
|
213
260
|
createFile( destination_file ) do |io|
|
214
261
|
io.puts template( "generate/test_begin", binding )
|
215
262
|
|
216
|
-
routes.each do
|
263
|
+
routes.each do |route|
|
264
|
+
@route = route
|
265
|
+
@test_name = route.gsub( /\//, '_' )
|
217
266
|
io.puts template( "generate/test_views", binding )
|
218
267
|
end
|
219
268
|
|
@@ -229,6 +278,16 @@ module Bivouac
|
|
229
278
|
opts.on_tail("-h", "--help", "Show this message") do
|
230
279
|
help
|
231
280
|
puts opts
|
281
|
+
puts ""
|
282
|
+
puts "Description:"
|
283
|
+
puts " Stubs out a new model. Pass the model name, either CamelCased or"
|
284
|
+
puts " under_scored, and an optional list of attribute pairs as arguments."
|
285
|
+
puts ""
|
286
|
+
puts " Attribute pairs are column_name:sql_type arguments specifying the"
|
287
|
+
puts " model's attributes."
|
288
|
+
puts ""
|
289
|
+
puts "Example:"
|
290
|
+
puts " ruby script/generate model MyModel name:string age:integer ..."
|
232
291
|
exit
|
233
292
|
end
|
234
293
|
end
|
@@ -239,6 +298,16 @@ module Bivouac
|
|
239
298
|
if @script_arguments.length < 1
|
240
299
|
help
|
241
300
|
puts argument_options
|
301
|
+
puts ""
|
302
|
+
puts "Description:"
|
303
|
+
puts " Stubs out a new model. Pass the model name, either CamelCased or"
|
304
|
+
puts " under_scored, and an optional list of attribute pairs as arguments."
|
305
|
+
puts ""
|
306
|
+
puts " Attribute pairs are column_name:sql_type arguments specifying the"
|
307
|
+
puts " model's attributes."
|
308
|
+
puts ""
|
309
|
+
puts "Example:"
|
310
|
+
puts " ruby script/generate model MyModel name:string age:integer ..."
|
242
311
|
exit
|
243
312
|
end
|
244
313
|
model_list = @script_arguments
|
@@ -268,7 +337,18 @@ module Bivouac
|
|
268
337
|
opts.on_tail("-h", "--help", "Show this message") do
|
269
338
|
help
|
270
339
|
puts opts
|
271
|
-
|
340
|
+
puts ""
|
341
|
+
puts "Description:"
|
342
|
+
puts " Stubs out a new database migration. Pass the migration name, either"
|
343
|
+
puts " CamelCased or under_scored, and an optional list of attribute pairs as arguments."
|
344
|
+
puts ""
|
345
|
+
puts " You can name your migration in either of these formats to generate add/remove"
|
346
|
+
puts " column lines from supplied attributes: AddColumnsToTable or RemoveColumnsFromTable"
|
347
|
+
puts ""
|
348
|
+
puts "Example:"
|
349
|
+
puts " ruby script/generate migration AddTrucToPost truc:string"
|
350
|
+
puts " ruby script/generate migration RemoveTrucFromPost truc:string"
|
351
|
+
exit
|
272
352
|
end
|
273
353
|
end
|
274
354
|
|
@@ -278,6 +358,17 @@ module Bivouac
|
|
278
358
|
if @script_arguments.length < 1
|
279
359
|
help
|
280
360
|
puts argument_options
|
361
|
+
puts ""
|
362
|
+
puts "Description:"
|
363
|
+
puts " Stubs out a new database migration. Pass the migration name, either"
|
364
|
+
puts " CamelCased or under_scored, and an optional list of attribute pairs as arguments."
|
365
|
+
puts ""
|
366
|
+
puts " You can name your migration in either of these formats to generate add/remove"
|
367
|
+
puts " column lines from supplied attributes: AddColumnsToTable or RemoveColumnsFromTable"
|
368
|
+
puts ""
|
369
|
+
puts "Example:"
|
370
|
+
puts " ruby script/generate migration AddTrucToPost truc:string"
|
371
|
+
puts " ruby script/generate migration RemoveTrucFromPost truc:string"
|
281
372
|
exit
|
282
373
|
end
|
283
374
|
|
@@ -338,15 +429,33 @@ module Bivouac
|
|
338
429
|
# Model table name
|
339
430
|
@model_table_name = (@app.environment.appname.downcase + "_" + (model_name.underscore.split( /_/ ))[-1]).tableize
|
340
431
|
io.puts template( "generate/migration_begin", binding )
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
io.puts template( "generate/
|
349
|
-
|
432
|
+
|
433
|
+
# AddColumnsToTable
|
434
|
+
if r = /add_([^_]*)_to_([^_]*)/.match( model_name.underscore )
|
435
|
+
model.each do |column|
|
436
|
+
@model_data_name, @model_data_type = column.split( /:/ )
|
437
|
+
io.puts template( "generate/migration_add", binding )
|
438
|
+
end
|
439
|
+
io.puts template( "generate/migration_middle", binding )
|
440
|
+
model.each do |column|
|
441
|
+
@model_data_name, @model_data_type = column.split( /:/ )
|
442
|
+
io.puts template( "generate/migration_remove", binding )
|
443
|
+
end
|
444
|
+
# RemoveColumnsToTable
|
445
|
+
elsif r = /remove_([^_]*)_from_([^_]*)/.match( model_name.underscore )
|
446
|
+
model.each do |column|
|
447
|
+
@model_data_name, @model_data_type = column.split( /:/ )
|
448
|
+
io.puts template( "generate/migration_remove", binding )
|
449
|
+
end
|
450
|
+
io.puts template( "generate/migration_middle", binding )
|
451
|
+
model.each do |column|
|
452
|
+
@model_data_name, @model_data_type = column.split( /:/ )
|
453
|
+
io.puts template( "generate/migration_add", binding )
|
454
|
+
end
|
455
|
+
# Nor Add or Remove
|
456
|
+
else
|
457
|
+
io.puts template( "generate/migration_middle", binding )
|
458
|
+
end
|
350
459
|
io.puts template( "generate/migration_end", binding )
|
351
460
|
end
|
352
461
|
end
|
@@ -19,12 +19,9 @@ task :environment do
|
|
19
19
|
# Load models from app/models
|
20
20
|
files( 'models' ) { |file| require( file ) }
|
21
21
|
|
22
|
-
# Load create
|
22
|
+
# Load create and database schema
|
23
23
|
files( '../db' ) { |file| require( file ) }
|
24
24
|
|
25
|
-
# Load database schema from db/migrate
|
26
|
-
files( '../db/migrate' ) { |file| require( file ) }
|
27
|
-
|
28
25
|
require "#{ENV['BIVOUAC_ROOT']}/config/environment.rb"
|
29
26
|
config = Bivouac::Environment.new( )
|
30
27
|
database_connection = config.environment.db
|
@@ -20,7 +20,7 @@ module <%= @conf.appname %>
|
|
20
20
|
include Camping::Session
|
21
21
|
end
|
22
22
|
<% else %>
|
23
|
-
require 'cookies_sessions'
|
23
|
+
require 'camping/cookies_sessions'
|
24
24
|
module <%= @conf.appname %>
|
25
25
|
include Camping::CookieSessions
|
26
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!"
|
@@ -47,7 +47,7 @@ files( 'helpers' ) { |file| require( file ) }
|
|
47
47
|
# Load models from app/models
|
48
48
|
files( 'models' ) { |file| require( file ) }
|
49
49
|
|
50
|
-
# Load database schema from db/migrate
|
50
|
+
# Load create and database schema from db/migrate
|
51
51
|
files( '../db/migrate' ) { |file| require( file ) }
|
52
52
|
|
53
53
|
# Load views from app/views
|
@@ -80,8 +80,27 @@ module <%= @conf.appname %>::Controllers
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
#
|
84
|
-
|
83
|
+
# Multiple Layout support. Add
|
84
|
+
# layout :my_layout
|
85
|
+
# in your controller else, default_layout will be used
|
86
|
+
# If you don't want to use layout add
|
87
|
+
# layout :none
|
88
|
+
# in your controller
|
89
|
+
module <%= @conf.appname %>::Helpers
|
90
|
+
def layout( l )
|
91
|
+
@layout = l
|
92
|
+
end
|
93
|
+
end
|
94
|
+
module <%= @conf.appname %>::Views
|
95
|
+
def layout
|
96
|
+
@layout ||= :default
|
97
|
+
unless @layout == :none
|
98
|
+
send("#{@layout.to_s}_layout") { yield }
|
99
|
+
else
|
100
|
+
yield
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
85
104
|
|
86
105
|
# Load postamble and configuration
|
87
106
|
if __FILE__ == $0
|
@@ -0,0 +1 @@
|
|
1
|
+
end
|
File without changes
|
@@ -14,4 +14,4 @@ require ENV['BIVOUAC_ROOT'] + "/app/<%= @app.environment.appdir %>"
|
|
14
14
|
<%= @app.environment.appname %>.create if <%= @app.environment.appname %>.respond_to? :create
|
15
15
|
include <%= @app.environment.appname %>::Models
|
16
16
|
|
17
|
-
class
|
17
|
+
class Tests<%= @app.environment.appname %> < Camping::FunctionalTest
|
@@ -8,6 +8,6 @@
|
|
8
8
|
module <%= @app.environment.appname %>::Views
|
9
9
|
def <%= @view_name %>
|
10
10
|
h1.header { "<%= @app.environment.appname %>::Views#<%= @view_name %>" }
|
11
|
-
p "Find me in <%= @
|
11
|
+
p "Find me in <%= @view_file.gsub( /script\/\.\.\//, "" ) %>"
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#
|
2
|
+
# Project <%= @conf.appname %>
|
3
|
+
#
|
4
|
+
# Created using bivouac on <%= Time.now %>.
|
5
|
+
# Copyright (c) <%= Time.now.year %> __My__. All rights reserved.
|
6
|
+
#
|
7
|
+
|
8
|
+
IRB.conf[:PROMPT_MODE] = :SIMPLE
|
9
|
+
IRB.conf[:AUTO_INDENT] = true
|
10
|
+
|
11
|
+
## DO NOT REMOVE OR CHANGE LINES BELLOW
|
12
|
+
include <%= @conf.appname %>::Models
|
@@ -21,13 +21,5 @@ module <%= @conf.appname %>::Views
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
24
|
-
|
25
|
-
# Multiple Layout support :
|
26
|
-
# add @layout = "my_layout" in your controller else, default_layout will be used
|
27
|
-
# If you don't want to use layout, remove this file'
|
28
|
-
def layout
|
29
|
-
@layout ||= 'default'
|
30
|
-
send("#{@layout}_layout") { yield }
|
31
|
-
end
|
32
24
|
|
33
25
|
end
|
data/lib/bivouac/template.rb
CHANGED
data/lib/bivouac.rb
CHANGED
@@ -3,12 +3,12 @@ module Bivouac
|
|
3
3
|
@@_plugins_controller_helpers = []
|
4
4
|
|
5
5
|
def files( xPath, *options, &block )
|
6
|
-
path = File.dirname($0) + "/" + xPath.to_s
|
6
|
+
path = File.dirname($0) + "/" + xPath.to_s
|
7
7
|
if ENV['BIVOUAC_ROOT']
|
8
|
-
path = ENV['BIVOUAC_ROOT'] + "/app/" + xPath.to_s
|
8
|
+
path = ENV['BIVOUAC_ROOT'] + "/app/" + xPath.to_s
|
9
9
|
end
|
10
10
|
|
11
|
-
Dir
|
11
|
+
Dir.glob("#{path}/**/*.rb").each do |file|
|
12
12
|
if options[0]
|
13
13
|
if options[0].keys.include?( :except )
|
14
14
|
if options[0][:except].include?(File.basename(file)) == false
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bivouac
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Gr\xC3\xA9goire Lejeune"
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-06-
|
12
|
+
date: 2008-06-06 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -115,7 +115,6 @@ files:
|
|
115
115
|
- lib/bivouac
|
116
116
|
- lib/bivouac/commands
|
117
117
|
- lib/bivouac/commands/generate.rb
|
118
|
-
- lib/bivouac/commands/generate.rb_OLD
|
119
118
|
- lib/bivouac/commands/plugin.rb
|
120
119
|
- lib/bivouac/helpers
|
121
120
|
- lib/bivouac/helpers/view
|
@@ -134,7 +133,9 @@ files:
|
|
134
133
|
- lib/bivouac/template/console.rb
|
135
134
|
- lib/bivouac/template/environment.rb
|
136
135
|
- lib/bivouac/template/generate
|
137
|
-
- lib/bivouac/template/generate/
|
136
|
+
- lib/bivouac/template/generate/controller_action.rb
|
137
|
+
- lib/bivouac/template/generate/controller_begin.rb
|
138
|
+
- lib/bivouac/template/generate/controller_end.rb
|
138
139
|
- lib/bivouac/template/generate/create.rb
|
139
140
|
- lib/bivouac/template/generate/migrate.rb
|
140
141
|
- lib/bivouac/template/generate/migrate_begin.rb
|
@@ -150,7 +151,7 @@ files:
|
|
150
151
|
- lib/bivouac/template/generate/test_begin.rb
|
151
152
|
- lib/bivouac/template/generate/test_end.rb
|
152
153
|
- lib/bivouac/template/generate/test_views.rb
|
153
|
-
- lib/bivouac/template/generate/
|
154
|
+
- lib/bivouac/template/generate/view.rb
|
154
155
|
- lib/bivouac/template/generate.rb
|
155
156
|
- lib/bivouac/template/plugin.rb
|
156
157
|
- lib/bivouac/template/Rakefile.rb
|
@@ -159,6 +160,7 @@ files:
|
|
159
160
|
- lib/bivouac/template/static/autocomplete.css
|
160
161
|
- lib/bivouac/template/static/builder.js
|
161
162
|
- lib/bivouac/template/static/camping.png
|
163
|
+
- lib/bivouac/template/static/console_rc.rb
|
162
164
|
- lib/bivouac/template/static/controls.js
|
163
165
|
- lib/bivouac/template/static/default_layout_view.rb
|
164
166
|
- lib/bivouac/template/static/dragdrop.js
|
@@ -176,7 +178,8 @@ files:
|
|
176
178
|
- lib/bivouac/template.rb
|
177
179
|
- lib/bivouac/utils.rb
|
178
180
|
- lib/bivouac.rb
|
179
|
-
- lib/
|
181
|
+
- lib/camping
|
182
|
+
- lib/camping/cookies_sessions.rb
|
180
183
|
- examples/bivouac_sample
|
181
184
|
- examples/bivouac_sample/app
|
182
185
|
- examples/bivouac_sample/app/bivouac_sample.rb
|
@@ -1,342 +0,0 @@
|
|
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( )
|