merb-gen 0.9.3 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. data/README +14 -2
  2. data/Rakefile +43 -27
  3. data/TODO +13 -0
  4. data/bin/merb-gen +5 -93
  5. data/lib/generators/controller.rb +44 -0
  6. data/lib/generators/freezer.rb +19 -0
  7. data/lib/generators/helper.rb +31 -0
  8. data/lib/generators/layout.rb +27 -0
  9. data/lib/generators/merb.rb +24 -0
  10. data/lib/generators/merb/merb_flat.rb +27 -0
  11. data/lib/generators/merb/merb_full.rb +35 -0
  12. data/lib/generators/merb/merb_very_flat.rb +29 -0
  13. data/lib/generators/merb_plugin.rb +29 -0
  14. data/lib/generators/migration.rb +54 -0
  15. data/lib/generators/model.rb +47 -0
  16. data/lib/generators/part_controller.rb +33 -0
  17. data/lib/generators/resource.rb +32 -0
  18. data/lib/generators/resource_controller.rb +78 -0
  19. data/lib/generators/session_migration.rb +34 -0
  20. data/lib/generators/templates/application/merb/Rakefile +75 -0
  21. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/controllers/application.rb +0 -0
  22. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/controllers/exceptions.rb +0 -0
  23. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/helpers/global_helpers.rb +0 -0
  24. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/views/exceptions/internal_server_error.html.erb +1 -1
  25. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/views/exceptions/not_acceptable.html.erb +0 -0
  26. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/views/exceptions/not_found.html.erb +0 -0
  27. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/autotest/discover.rb +0 -0
  28. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/autotest/merb.rb +2 -2
  29. data/lib/generators/templates/application/merb/autotest/merb_rspec.rb +166 -0
  30. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/environments/development.rb +0 -0
  31. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/environments/production.rb +0 -0
  32. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/environments/rake.rb +0 -0
  33. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/environments/test.rb +0 -0
  34. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/init.rb +38 -27
  35. data/lib/generators/templates/application/merb/config/rack.rb +12 -0
  36. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/router.rb +0 -0
  37. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/public/images/merb.jpg +0 -0
  38. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/public/merb.fcgi +0 -0
  39. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/public/stylesheets/master.css +0 -0
  40. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/spec/spec.opts +0 -0
  41. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/spec/spec_helper.rb +3 -1
  42. data/{app_generators/merb/templates → lib/generators/templates/application/merb}/test/test_helper.rb +0 -0
  43. data/{app_generators/merb_flat/templates → lib/generators/templates/application/merb_flat}/README.txt +0 -0
  44. data/{app_generators/merb_flat/templates → lib/generators/templates/application/merb_flat}/application.rb +0 -0
  45. data/lib/generators/templates/application/merb_flat/config/framework.rb +7 -0
  46. data/{app_generators/merb_flat/templates → lib/generators/templates/application/merb_flat}/config/init.rb +0 -1
  47. data/{app_generators/merb_flat/templates → lib/generators/templates/application/merb_flat}/views/foo.html.erb +0 -0
  48. data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/LICENSE +0 -0
  49. data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/README +0 -0
  50. data/lib/generators/templates/application/merb_plugin/Rakefile +59 -0
  51. data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/TODO +0 -0
  52. data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/lib/%base_name%.rb +1 -1
  53. data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/lib/%base_name%/merbtasks.rb +1 -1
  54. data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/spec/%base_name%_spec.rb +0 -0
  55. data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/spec/spec_helper.rb +0 -0
  56. data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/test/%base_name%_test.rb +0 -0
  57. data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/test/test_helper.rb +0 -0
  58. data/lib/generators/templates/application/merb_very_flat/application.rbt +17 -0
  59. data/lib/generators/templates/component/controller/app/controllers/%file_name%.rb +11 -0
  60. data/lib/generators/templates/component/controller/app/views/%file_name%/index.html.erb +1 -0
  61. data/lib/generators/templates/component/controller/spec/controllers/%file_name%_spec.rb +7 -0
  62. data/lib/generators/templates/component/controller/test/controllers/%file_name%_test.rb +17 -0
  63. data/lib/generators/templates/component/freezer/script/frozen_merb +43 -0
  64. data/lib/generators/templates/component/helper/app/helpers/%file_name%_helper.rb +7 -0
  65. data/lib/generators/templates/component/helper/spec/helpers/%file_name%_helper_spec.rb +5 -0
  66. data/{app_generators/merb/templates/app/views/layout/application.html.erb → lib/generators/templates/component/layout/app/views/layout/%file_name%.html.erb} +0 -0
  67. data/lib/generators/templates/component/layout/spec/views/layout/%file_name%.html.erb_spec.rb +1 -0
  68. data/lib/generators/templates/component/model/app/models/%file_name%.rb +7 -0
  69. data/lib/generators/templates/component/model/spec/models/%file_name%_spec.rb +7 -0
  70. data/lib/generators/templates/component/model/test/models/%file_name%_test.rb +9 -0
  71. data/lib/generators/templates/component/part_controller/app/parts/%file_name%_part.rb +9 -0
  72. data/lib/generators/templates/component/part_controller/app/parts/views/%file_name%_part/index.html.erb +3 -0
  73. data/lib/generators/templates/component/resource_controller/app/controllers/%file_name%.rb +44 -0
  74. data/lib/generators/templates/component/resource_controller/app/views/%file_name%/edit.html.erb +3 -0
  75. data/lib/generators/templates/component/resource_controller/app/views/%file_name%/index.html.erb +3 -0
  76. data/lib/generators/templates/component/resource_controller/app/views/%file_name%/new.html.erb +3 -0
  77. data/lib/generators/templates/component/resource_controller/app/views/%file_name%/show.html.erb +3 -0
  78. data/lib/generators/templates/component/resource_controller/spec/controllers/%file_name%_spec.rb +7 -0
  79. data/lib/generators/templates/component/resource_controller/test/controllers/%file_name%_test.rb +17 -0
  80. data/lib/merb-gen.rb +34 -36
  81. data/lib/merb-gen/generator.rb +54 -0
  82. data/lib/merb-gen/named_generator.rb +33 -0
  83. data/lib/merb-gen/namespaced_generator.rb +47 -0
  84. data/lib/merb-gen/spec_helper.rb +65 -0
  85. data/spec/controller_spec.rb +106 -0
  86. data/spec/fixtures/results/no_modules.test +1 -0
  87. data/spec/fixtures/results/some_modules.test +5 -0
  88. data/spec/fixtures/templates/no_modules.test +3 -0
  89. data/spec/fixtures/templates/some_modules.test +3 -0
  90. data/spec/freezer_spec.rb +17 -0
  91. data/spec/generator_spec.rb +51 -0
  92. data/spec/helper_spec.rb +43 -0
  93. data/spec/layout_spec.rb +25 -0
  94. data/spec/merb_flat_spec.rb +21 -0
  95. data/spec/merb_full_spec.rb +31 -0
  96. data/spec/merb_plugin_spec.rb +21 -0
  97. data/spec/merb_spec.rb +20 -0
  98. data/spec/merb_very_flat_spec.rb +19 -0
  99. data/spec/migration_spec.rb +47 -0
  100. data/spec/model_spec.rb +66 -0
  101. data/spec/named_generator_spec.rb +11 -0
  102. data/spec/namespaced_generator_spec.rb +11 -0
  103. data/spec/part_controller_spec.rb +74 -0
  104. data/spec/resource_controller_spec.rb +102 -0
  105. data/spec/resource_spec.rb +18 -0
  106. data/spec/session_migration_spec.rb +15 -0
  107. data/spec/spec_helper.rb +271 -0
  108. metadata +246 -181
  109. data/app_generators/merb/USAGE +0 -0
  110. data/app_generators/merb/merb_generator.rb +0 -40
  111. data/app_generators/merb/templates/Rakefile +0 -34
  112. data/app_generators/merb/templates/autotest/merb_rspec.rb +0 -223
  113. data/app_generators/merb/templates/config/rack.rb +0 -1
  114. data/app_generators/merb_flat/merb_flat_generator.rb +0 -22
  115. data/app_generators/merb_flat/templates/config/framework.rb +0 -5
  116. data/app_generators/merb_plugin/merb_plugin_generator.rb +0 -22
  117. data/app_generators/merb_plugin/templates/Rakefile +0 -44
  118. data/app_generators/merb_very_flat/merb_very_flat_generator.rb +0 -37
  119. data/app_generators/merb_very_flat/templates/%app_file_name%.rb +0 -15
  120. data/app_generators/merb_very_flat/templates/README.txt +0 -9
  121. data/lib/merb-gen/base.rb +0 -66
  122. data/lib/merb-gen/helpers.rb +0 -108
  123. data/merb_default_generators/model/USAGE +0 -0
  124. data/merb_default_generators/model/model_generator.rb +0 -40
  125. data/merb_default_generators/model/templates/app/models/%model_file_name%.rb +0 -5
  126. data/merb_default_generators/resource_controller/USAGE +0 -0
  127. data/merb_default_generators/resource_controller/resource_controller_generator.rb +0 -74
  128. data/merb_default_generators/resource_controller/templates/app/controllers/%controller_file_name%.rb +0 -46
  129. data/merb_default_generators/resource_controller/templates/app/helpers/%controller_file_name%_helper.rb +0 -16
  130. data/merb_default_generators/resource_controller/templates/app/views/%controller_file_name%/delete.html.erb +0 -3
  131. data/merb_default_generators/resource_controller/templates/app/views/%controller_file_name%/edit.html.erb +0 -3
  132. data/merb_default_generators/resource_controller/templates/app/views/%controller_file_name%/index.html.erb +0 -3
  133. data/merb_default_generators/resource_controller/templates/app/views/%controller_file_name%/new.html.erb +0 -3
  134. data/merb_default_generators/resource_controller/templates/app/views/%controller_file_name%/show.html.erb +0 -3
  135. data/merb_generators/controller/USAGE +0 -0
  136. data/merb_generators/controller/controller_generator.rb +0 -59
  137. data/merb_generators/controller/templates/app/controllers/%controller_file_name%.rb +0 -18
  138. data/merb_generators/controller/templates/app/helpers/%controller_file_name%_helper.rb +0 -16
  139. data/merb_generators/controller/templates/app/views/%controller_file_name%/index.html.erb +0 -1
  140. data/merb_generators/part_controller/USAGE +0 -0
  141. data/merb_generators/part_controller/part_controller_generator.rb +0 -58
  142. data/merb_generators/part_controller/templates/app/helpers/%controller_file_name%_part_helper.rb +0 -16
  143. data/merb_generators/part_controller/templates/app/parts/%controller_file_name%_part.rb +0 -18
  144. data/merb_generators/part_controller/templates/app/parts/views/%controller_file_name%_part/index.html.erb +0 -3
  145. data/merb_generators/resource/USAGE +0 -0
  146. data/merb_generators/resource/resource_generator.rb +0 -48
  147. data/rspec_generators/merb_controller_test/merb_controller_test_generator.rb +0 -49
  148. data/rspec_generators/merb_controller_test/templates/spec/controllers/%controller_full_file_path%_spec.rb +0 -7
  149. data/rspec_generators/merb_controller_test/templates/spec/helpers/%controller_full_file_path%_helper_spec.rb +0 -5
  150. data/rspec_generators/merb_model_test/merb_model_test_generator.rb +0 -35
  151. data/rspec_generators/merb_model_test/templates/spec/models/%model_file_name%_spec.rb +0 -7
  152. data/rspec_generators/merb_resource_controller_test/merb_resource_controller_test_generator.rb +0 -49
  153. data/rspec_generators/merb_resource_controller_test/templates/spec/controllers/%controller_full_file_path%_spec.rb +0 -7
  154. data/rspec_generators/merb_resource_controller_test/templates/spec/helpers/%controller_full_file_path%_helpers.rb +0 -5
  155. data/rspec_generators/merb_resource_controller_test/templates/spec/views/%controller_full_file_path%/delete.html.erb_spec.rb +0 -1
  156. data/rspec_generators/merb_resource_controller_test/templates/spec/views/%controller_full_file_path%/edit.html.erb_spec.rb +0 -1
  157. data/rspec_generators/merb_resource_controller_test/templates/spec/views/%controller_full_file_path%/index.html.erb_spec.rb +0 -1
  158. data/rspec_generators/merb_resource_controller_test/templates/spec/views/%controller_full_file_path%/new.html.erb_spec.rb +0 -1
  159. data/rspec_generators/merb_resource_controller_test/templates/spec/views/%controller_full_file_path%/show.html.erb_spec.rb +0 -1
  160. data/test_unit_generators/merb_controller_test/merb_controller_test_generator.rb +0 -47
  161. data/test_unit_generators/merb_controller_test/templates/test/functional/%controller_full_file_path%_test.rb +0 -17
  162. data/test_unit_generators/merb_model_test/merb_model_test_generator.rb +0 -34
  163. data/test_unit_generators/merb_model_test/templates/test/unit/%model_file_name%_test.rb +0 -9
  164. data/test_unit_generators/merb_resource_controller_test/merb_resource_controller_test_generator.rb +0 -31
@@ -0,0 +1,29 @@
1
+ module Merb::Generators
2
+
3
+ class MerbVeryFlatGenerator < NamedGenerator
4
+
5
+ def self.source_root
6
+ File.join(super, 'application', 'merb_very_flat')
7
+ end
8
+
9
+ desc <<-DESC
10
+ This generates a very flat merb application: the whole application
11
+ fits in one file, very much like Sinatra or Camping.
12
+ DESC
13
+
14
+ first_argument :name, :required => true, :desc => "Application name"
15
+
16
+ template :application do
17
+ source('application.rbt')
18
+ destination("#{base_name}.rb")
19
+ end
20
+
21
+ def class_name
22
+ self.name.camel_case
23
+ end
24
+
25
+ end
26
+
27
+ add_private :app_very_flat, MerbVeryFlatGenerator
28
+
29
+ end
@@ -0,0 +1,29 @@
1
+ module Merb::Generators
2
+
3
+ class MerbPluginGenerator < NamedGenerator
4
+
5
+ def self.source_root
6
+ File.join(super, 'application', 'merb_plugin')
7
+ end
8
+
9
+ option :testing_framework, :default => :rspec, :desc => 'Testing framework to use (one of: spec, test_unit)'
10
+ option :orm, :default => :none, :desc => 'Object-Relation Mapper to use (one of: none, activerecord, datamapper, sequel)'
11
+ option :bin, :as => :boolean # TODO: explain this
12
+
13
+ desc <<-DESC
14
+ Merb plugin generator: lets you kick start your Merb plugin.
15
+ DESC
16
+
17
+ glob!
18
+
19
+ first_argument :name, :required => true, :desc => "Plugin name"
20
+
21
+ def destination_root
22
+ File.join(@destination_root, base_name)
23
+ end
24
+
25
+ end
26
+
27
+ add :plugin, MerbPluginGenerator
28
+
29
+ end
@@ -0,0 +1,54 @@
1
+ module Merb::Generators
2
+
3
+ class MigrationGenerator < Generator
4
+
5
+ def self.source_root
6
+ File.join(super, 'component', 'migration')
7
+ end
8
+
9
+ desc <<-DESC
10
+ This is a migration generator
11
+ DESC
12
+
13
+ option :orm, :desc => 'Object-Relation Mapper to use (one of: none, activerecord, datamapper, sequel)'
14
+ option :model, :as => :boolean, :desc => 'Specify this option to generate a migration which creates a table for the provided model'
15
+
16
+ first_argument :name, :required => true
17
+ second_argument :attributes, :as => :hash, :default => {}
18
+
19
+ def table_name
20
+ self.name.snake_case.pluralize
21
+ end
22
+
23
+ def class_name
24
+ "#{self.name.camel_case}Migration"
25
+ end
26
+
27
+ def migration_name
28
+ self.name.snake_case
29
+ end
30
+
31
+ def file_name
32
+ "#{version}_#{migration_name}_migration"
33
+ end
34
+
35
+ def version
36
+ # TODO: handle ActiveRecord timestamped migrations
37
+ format("%03d", current_migration_nr + 1)
38
+ end
39
+
40
+ protected
41
+
42
+ def destination_directory
43
+ File.join(destination_root, 'schema', 'migrations')
44
+ end
45
+
46
+ def current_migration_nr
47
+ current_migration_number = Dir["#{destination_directory}/*"].map{|f| File.basename(f).match(/^(\d+)/)[0].to_i }.max.to_i
48
+ end
49
+
50
+ end
51
+
52
+ add :migration, MigrationGenerator
53
+
54
+ end
@@ -0,0 +1,47 @@
1
+ module Merb::Generators
2
+
3
+ class ModelGenerator < NamespacedGenerator
4
+
5
+ def self.source_root
6
+ File.join(super, 'component', 'model')
7
+ end
8
+
9
+ desc <<-DESC
10
+ Generates a new model. You can specify an ORM different from what the rest
11
+ of the application uses.
12
+ DESC
13
+
14
+ option :testing_framework, :desc => 'Testing framework to use (one of: spec, test_unit)'
15
+ option :orm, :desc => 'Object-Relation Mapper to use (one of: none, activerecord, datamapper, sequel)'
16
+
17
+ first_argument :name, :required => true, :desc => "model name"
18
+ second_argument :attributes, :as => :hash, :default => {}, :desc => "space separated model properties in form of name:type. Example: state:string"
19
+
20
+ template :model_none, :orm => :none do
21
+ source("app/models/%file_name%.rb")
22
+ destination("app/models", base_path, "#{file_name}.rb")
23
+ end
24
+
25
+ template :spec, :testing_framework => :rspec do
26
+ source('spec/models/%file_name%_spec.rb')
27
+ destination("spec/models", base_path, "#{file_name}_spec.rb")
28
+ end
29
+
30
+ template :test_unit, :testing_framework => :test_unit do
31
+ source('test/models/%file_name%_test.rb')
32
+ destination("test/models", base_path, "#{file_name}_test.rb")
33
+ end
34
+
35
+ def attributes?
36
+ self.attributes && !self.attributes.empty?
37
+ end
38
+
39
+ def attributes_for_accessor
40
+ self.attributes.keys.map{|a| ":#{a}" }.compact.uniq.join(", ")
41
+ end
42
+
43
+ end
44
+
45
+ add :model, ModelGenerator
46
+
47
+ end
@@ -0,0 +1,33 @@
1
+ module Merb::Generators
2
+
3
+ class PartControllerGenerator < NamespacedGenerator
4
+
5
+ def self.source_root
6
+ File.join(super, 'component', 'part_controller')
7
+ end
8
+
9
+ desc <<-DESC
10
+ This is a part controller generator
11
+ DESC
12
+
13
+ first_argument :name, :required => true
14
+
15
+ invoke :helper do |generator|
16
+ generator.new(destination_root, options, "#{full_class_name}Part")
17
+ end
18
+
19
+ template :controller do
20
+ source('app/parts/%file_name%_part.rb')
21
+ destination("app/parts", base_path, "#{file_name}_part.rb")
22
+ end
23
+
24
+ template :index do
25
+ source('app/parts/views/%file_name%_part/index.html.erb')
26
+ destination("app/parts/views", base_path, "#{file_name}_part/index.html.erb")
27
+ end
28
+
29
+ end
30
+
31
+ add :part, PartControllerGenerator
32
+
33
+ end
@@ -0,0 +1,32 @@
1
+ module Merb::Generators
2
+
3
+ class ResourceGenerator < Generator
4
+
5
+ desc <<-DESC
6
+ Generates a new resource.
7
+ DESC
8
+
9
+ first_argument :name, :required => true, :desc => "resource name"
10
+ second_argument :attributes, :as => :hash, :default => {}, :desc => "space separated resource model properties in form of name:type. Example: state:string"
11
+
12
+ invoke :model do |generator|
13
+ generator.new(destination_root, options, model_name, attributes)
14
+ end
15
+
16
+ invoke :resource_controller do |generator|
17
+ generator.new(destination_root, options, controller_name, attributes)
18
+ end
19
+
20
+ def controller_name
21
+ name.pluralize
22
+ end
23
+
24
+ def model_name
25
+ name.singularize
26
+ end
27
+
28
+ end
29
+
30
+ add :resource, ResourceGenerator
31
+
32
+ end
@@ -0,0 +1,78 @@
1
+ module Merb::Generators
2
+
3
+ class ResourceControllerGenerator < NamespacedGenerator
4
+
5
+ def self.source_root
6
+ File.join(super, 'component', 'resource_controller')
7
+ end
8
+
9
+ desc <<-DESC
10
+ Generates a new resource controller.
11
+ DESC
12
+
13
+ option :testing_framework, :desc => 'Testing framework to use (one of: spec, test_unit)'
14
+ option :orm, :desc => 'Object-Relation Mapper to use (one of: none, activerecord, datamapper, sequel)'
15
+ option :template_engine, :default => :erb, :desc => 'Template Engine to use (one of: erb, haml, markaby, etc...)'
16
+
17
+ first_argument :name, :required => true,
18
+ :desc => "model name"
19
+ second_argument :attributes, :as => :hash,
20
+ :default => {},
21
+ :desc => "space separated resource model properties in form of name:type. Example: state:string"
22
+
23
+ invoke :helper do |generator|
24
+ generator.new(destination_root, options, name)
25
+ end
26
+
27
+ # add controller and view templates for each of the four big ORM's
28
+
29
+
30
+ template :controller_none, :orm => :none do
31
+ source("app/controllers/%file_name%.rb")
32
+ destination("app/controllers", base_path, "#{file_name}.rb")
33
+ end
34
+
35
+ [:index, :show, :edit, :new].each do |view|
36
+ template "view_#{view}_none".to_sym, :orm => :none do
37
+ source("app/views/%file_name%/#{view}.html.erb")
38
+ destination("app/views", base_path, "#{file_name}/#{view}.html.erb")
39
+ end
40
+ end
41
+
42
+ template :controller_spec, :testing_framework => :rspec, :orm => :none do
43
+ source('spec/controllers/%file_name%_spec.rb')
44
+ destination("spec/controllers", base_path, "#{file_name}_spec.rb")
45
+ end
46
+
47
+ template :controller_test_unit, :testing_framework => :test_unit, :orm => :none do
48
+ source('test/controllers/%file_name%_test.rb')
49
+ destination("test/controllers", base_path, "#{file_name}_test.rb")
50
+ end
51
+
52
+ def model_class_name
53
+ class_name.singularize
54
+ end
55
+
56
+ def plural_model
57
+ class_name.snake_case
58
+ end
59
+
60
+ def singular_model
61
+ plural_model.singularize
62
+ end
63
+
64
+ # TODO: fix this for Datamapper, so that it returns the primary keys for the model
65
+ def params_for_get
66
+ "params[:id]"
67
+ end
68
+
69
+ # TODO: implement this for Datamapper so that we get the model properties
70
+ def properties
71
+ []
72
+ end
73
+
74
+ end
75
+
76
+ add :resource_controller, ResourceControllerGenerator
77
+
78
+ end
@@ -0,0 +1,34 @@
1
+ module Merb::Generators
2
+
3
+ class SessionMigrationGenerator < Generator
4
+
5
+ def self.source_root
6
+ File.join(super, 'component', 'session_migration')
7
+ end
8
+
9
+ desc <<-DESC
10
+ Generates a new session migration.
11
+ DESC
12
+
13
+ option :orm, :desc => 'Object-Relation Mapper to use (one of: none, activerecord, datamapper, sequel)'
14
+
15
+ def version
16
+ # TODO: handle ActiveRecord timestamped migrations
17
+ format("%03d", current_migration_nr + 1)
18
+ end
19
+
20
+ protected
21
+
22
+ def destination_directory
23
+ File.join(destination_root, 'schema', 'migrations')
24
+ end
25
+
26
+ def current_migration_nr
27
+ current_migration_number = Dir["#{destination_directory}/*"].map{|f| File.basename(f).match(/^(\d+)/)[0].to_i }.max.to_i
28
+ end
29
+
30
+ end
31
+
32
+ add :session_migration, SessionMigrationGenerator
33
+
34
+ end
@@ -0,0 +1,75 @@
1
+ require 'rubygems'
2
+ Gem.clear_paths
3
+ Gem.path.unshift(File.join(File.dirname(__FILE__), "gems"))
4
+
5
+ require 'rake'
6
+ require 'rake/rdoctask'
7
+ require 'rake/testtask'
8
+ require 'spec/rake/spectask'
9
+ require 'fileutils'
10
+
11
+ ##
12
+ # requires frozen merb-core (from /framework)
13
+ # adds the other components to the load path
14
+ def require_frozen_framework
15
+ framework = File.join(File.dirname(__FILE__), "framework")
16
+ if File.directory?(framework)
17
+ puts "Running from frozen framework"
18
+ core = File.join(framework,"merb-core")
19
+ if File.directory?(core)
20
+ puts "using merb-core from #{core}"
21
+ $:.unshift File.join(core,"lib")
22
+ require 'merb-core'
23
+ end
24
+ more = File.join(framework,"merb-more")
25
+ if File.directory?(more)
26
+ Dir.new(more).select {|d| d =~ /merb-/}.each do |d|
27
+ $:.unshift File.join(more,d,'lib')
28
+ end
29
+ end
30
+ plugins = File.join(framework,"merb-plugins")
31
+ if File.directory?(plugins)
32
+ Dir.new(plugins).select {|d| d =~ /merb_/}.each do |d|
33
+ $:.unshift File.join(plugins,d,'lib')
34
+ end
35
+ end
36
+ require "merb-core/core_ext/kernel"
37
+ require "merb-core/core_ext/rubygems"
38
+ else
39
+ p "merb doesn't seem to be frozen in /framework"
40
+ require 'merb-core'
41
+ end
42
+ end
43
+
44
+ if ENV['FROZEN']
45
+ require_frozen_framework
46
+ else
47
+ require 'merb-core'
48
+ end
49
+
50
+ require 'merb-core/tasks/merb'
51
+ include FileUtils
52
+
53
+ # Load the basic runtime dependencies; this will include
54
+ # any plugins and therefore plugin rake tasks.
55
+ init_env = ENV['MERB_ENV'] || 'rake'
56
+ Merb.load_dependencies(:environment => init_env)
57
+
58
+ # Get Merb plugins and dependencies
59
+ Merb::Plugins.rakefiles.each { |r| require r }
60
+
61
+ # Load any app level custom rakefile extensions from lib/tasks
62
+ tasks_path = File.join(File.dirname(__FILE__), "lib", "tasks")
63
+ rake_files = Dir["#{tasks_path}/*.rake"]
64
+ rake_files.each{|rake_file| load rake_file }
65
+
66
+
67
+ desc "start runner environment"
68
+ task :merb_env do
69
+ Merb.start_environment(:environment => init_env, :adapter => 'runner')
70
+ end
71
+
72
+ ##############################################################################
73
+ # ADD YOUR CUSTOM TASKS IN /lib/tasks
74
+ # NAME YOUR RAKE FILES file_name.rake
75
+ ##############################################################################
@@ -131,7 +131,7 @@
131
131
  <div class="header">
132
132
  <h1><%%= @exception_name %> <sup class="error_<%%= @exception.class::STATUS %>"><%%= @exception.class::STATUS %></sup></h1>
133
133
  <%% if show_details = ::Merb::Config[:exception_details] -%>
134
- <h2><%%= @exception.message %></h2>
134
+ <h2><%%=h @exception.message %></h2>
135
135
  <%% else -%>
136
136
  <h2>Sorry about that...</h2>
137
137
  <%% end -%>