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.
- data/README +14 -2
- data/Rakefile +43 -27
- data/TODO +13 -0
- data/bin/merb-gen +5 -93
- data/lib/generators/controller.rb +44 -0
- data/lib/generators/freezer.rb +19 -0
- data/lib/generators/helper.rb +31 -0
- data/lib/generators/layout.rb +27 -0
- data/lib/generators/merb.rb +24 -0
- data/lib/generators/merb/merb_flat.rb +27 -0
- data/lib/generators/merb/merb_full.rb +35 -0
- data/lib/generators/merb/merb_very_flat.rb +29 -0
- data/lib/generators/merb_plugin.rb +29 -0
- data/lib/generators/migration.rb +54 -0
- data/lib/generators/model.rb +47 -0
- data/lib/generators/part_controller.rb +33 -0
- data/lib/generators/resource.rb +32 -0
- data/lib/generators/resource_controller.rb +78 -0
- data/lib/generators/session_migration.rb +34 -0
- data/lib/generators/templates/application/merb/Rakefile +75 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/controllers/application.rb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/controllers/exceptions.rb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/helpers/global_helpers.rb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/views/exceptions/internal_server_error.html.erb +1 -1
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/views/exceptions/not_acceptable.html.erb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/app/views/exceptions/not_found.html.erb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/autotest/discover.rb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/autotest/merb.rb +2 -2
- data/lib/generators/templates/application/merb/autotest/merb_rspec.rb +166 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/environments/development.rb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/environments/production.rb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/environments/rake.rb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/environments/test.rb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/init.rb +38 -27
- data/lib/generators/templates/application/merb/config/rack.rb +12 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/config/router.rb +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/public/images/merb.jpg +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/public/merb.fcgi +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/public/stylesheets/master.css +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/spec/spec.opts +0 -0
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/spec/spec_helper.rb +3 -1
- data/{app_generators/merb/templates → lib/generators/templates/application/merb}/test/test_helper.rb +0 -0
- data/{app_generators/merb_flat/templates → lib/generators/templates/application/merb_flat}/README.txt +0 -0
- data/{app_generators/merb_flat/templates → lib/generators/templates/application/merb_flat}/application.rb +0 -0
- data/lib/generators/templates/application/merb_flat/config/framework.rb +7 -0
- data/{app_generators/merb_flat/templates → lib/generators/templates/application/merb_flat}/config/init.rb +0 -1
- data/{app_generators/merb_flat/templates → lib/generators/templates/application/merb_flat}/views/foo.html.erb +0 -0
- data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/LICENSE +0 -0
- data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/README +0 -0
- data/lib/generators/templates/application/merb_plugin/Rakefile +59 -0
- data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/TODO +0 -0
- data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/lib/%base_name%.rb +1 -1
- data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/lib/%base_name%/merbtasks.rb +1 -1
- data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/spec/%base_name%_spec.rb +0 -0
- data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/spec/spec_helper.rb +0 -0
- data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/test/%base_name%_test.rb +0 -0
- data/{app_generators/merb_plugin/templates → lib/generators/templates/application/merb_plugin}/test/test_helper.rb +0 -0
- data/lib/generators/templates/application/merb_very_flat/application.rbt +17 -0
- data/lib/generators/templates/component/controller/app/controllers/%file_name%.rb +11 -0
- data/lib/generators/templates/component/controller/app/views/%file_name%/index.html.erb +1 -0
- data/lib/generators/templates/component/controller/spec/controllers/%file_name%_spec.rb +7 -0
- data/lib/generators/templates/component/controller/test/controllers/%file_name%_test.rb +17 -0
- data/lib/generators/templates/component/freezer/script/frozen_merb +43 -0
- data/lib/generators/templates/component/helper/app/helpers/%file_name%_helper.rb +7 -0
- data/lib/generators/templates/component/helper/spec/helpers/%file_name%_helper_spec.rb +5 -0
- 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
- data/lib/generators/templates/component/layout/spec/views/layout/%file_name%.html.erb_spec.rb +1 -0
- data/lib/generators/templates/component/model/app/models/%file_name%.rb +7 -0
- data/lib/generators/templates/component/model/spec/models/%file_name%_spec.rb +7 -0
- data/lib/generators/templates/component/model/test/models/%file_name%_test.rb +9 -0
- data/lib/generators/templates/component/part_controller/app/parts/%file_name%_part.rb +9 -0
- data/lib/generators/templates/component/part_controller/app/parts/views/%file_name%_part/index.html.erb +3 -0
- data/lib/generators/templates/component/resource_controller/app/controllers/%file_name%.rb +44 -0
- data/lib/generators/templates/component/resource_controller/app/views/%file_name%/edit.html.erb +3 -0
- data/lib/generators/templates/component/resource_controller/app/views/%file_name%/index.html.erb +3 -0
- data/lib/generators/templates/component/resource_controller/app/views/%file_name%/new.html.erb +3 -0
- data/lib/generators/templates/component/resource_controller/app/views/%file_name%/show.html.erb +3 -0
- data/lib/generators/templates/component/resource_controller/spec/controllers/%file_name%_spec.rb +7 -0
- data/lib/generators/templates/component/resource_controller/test/controllers/%file_name%_test.rb +17 -0
- data/lib/merb-gen.rb +34 -36
- data/lib/merb-gen/generator.rb +54 -0
- data/lib/merb-gen/named_generator.rb +33 -0
- data/lib/merb-gen/namespaced_generator.rb +47 -0
- data/lib/merb-gen/spec_helper.rb +65 -0
- data/spec/controller_spec.rb +106 -0
- data/spec/fixtures/results/no_modules.test +1 -0
- data/spec/fixtures/results/some_modules.test +5 -0
- data/spec/fixtures/templates/no_modules.test +3 -0
- data/spec/fixtures/templates/some_modules.test +3 -0
- data/spec/freezer_spec.rb +17 -0
- data/spec/generator_spec.rb +51 -0
- data/spec/helper_spec.rb +43 -0
- data/spec/layout_spec.rb +25 -0
- data/spec/merb_flat_spec.rb +21 -0
- data/spec/merb_full_spec.rb +31 -0
- data/spec/merb_plugin_spec.rb +21 -0
- data/spec/merb_spec.rb +20 -0
- data/spec/merb_very_flat_spec.rb +19 -0
- data/spec/migration_spec.rb +47 -0
- data/spec/model_spec.rb +66 -0
- data/spec/named_generator_spec.rb +11 -0
- data/spec/namespaced_generator_spec.rb +11 -0
- data/spec/part_controller_spec.rb +74 -0
- data/spec/resource_controller_spec.rb +102 -0
- data/spec/resource_spec.rb +18 -0
- data/spec/session_migration_spec.rb +15 -0
- data/spec/spec_helper.rb +271 -0
- metadata +246 -181
- data/app_generators/merb/USAGE +0 -0
- data/app_generators/merb/merb_generator.rb +0 -40
- data/app_generators/merb/templates/Rakefile +0 -34
- data/app_generators/merb/templates/autotest/merb_rspec.rb +0 -223
- data/app_generators/merb/templates/config/rack.rb +0 -1
- data/app_generators/merb_flat/merb_flat_generator.rb +0 -22
- data/app_generators/merb_flat/templates/config/framework.rb +0 -5
- data/app_generators/merb_plugin/merb_plugin_generator.rb +0 -22
- data/app_generators/merb_plugin/templates/Rakefile +0 -44
- data/app_generators/merb_very_flat/merb_very_flat_generator.rb +0 -37
- data/app_generators/merb_very_flat/templates/%app_file_name%.rb +0 -15
- data/app_generators/merb_very_flat/templates/README.txt +0 -9
- data/lib/merb-gen/base.rb +0 -66
- data/lib/merb-gen/helpers.rb +0 -108
- data/merb_default_generators/model/USAGE +0 -0
- data/merb_default_generators/model/model_generator.rb +0 -40
- data/merb_default_generators/model/templates/app/models/%model_file_name%.rb +0 -5
- data/merb_default_generators/resource_controller/USAGE +0 -0
- data/merb_default_generators/resource_controller/resource_controller_generator.rb +0 -74
- data/merb_default_generators/resource_controller/templates/app/controllers/%controller_file_name%.rb +0 -46
- data/merb_default_generators/resource_controller/templates/app/helpers/%controller_file_name%_helper.rb +0 -16
- data/merb_default_generators/resource_controller/templates/app/views/%controller_file_name%/delete.html.erb +0 -3
- data/merb_default_generators/resource_controller/templates/app/views/%controller_file_name%/edit.html.erb +0 -3
- data/merb_default_generators/resource_controller/templates/app/views/%controller_file_name%/index.html.erb +0 -3
- data/merb_default_generators/resource_controller/templates/app/views/%controller_file_name%/new.html.erb +0 -3
- data/merb_default_generators/resource_controller/templates/app/views/%controller_file_name%/show.html.erb +0 -3
- data/merb_generators/controller/USAGE +0 -0
- data/merb_generators/controller/controller_generator.rb +0 -59
- data/merb_generators/controller/templates/app/controllers/%controller_file_name%.rb +0 -18
- data/merb_generators/controller/templates/app/helpers/%controller_file_name%_helper.rb +0 -16
- data/merb_generators/controller/templates/app/views/%controller_file_name%/index.html.erb +0 -1
- data/merb_generators/part_controller/USAGE +0 -0
- data/merb_generators/part_controller/part_controller_generator.rb +0 -58
- data/merb_generators/part_controller/templates/app/helpers/%controller_file_name%_part_helper.rb +0 -16
- data/merb_generators/part_controller/templates/app/parts/%controller_file_name%_part.rb +0 -18
- data/merb_generators/part_controller/templates/app/parts/views/%controller_file_name%_part/index.html.erb +0 -3
- data/merb_generators/resource/USAGE +0 -0
- data/merb_generators/resource/resource_generator.rb +0 -48
- data/rspec_generators/merb_controller_test/merb_controller_test_generator.rb +0 -49
- data/rspec_generators/merb_controller_test/templates/spec/controllers/%controller_full_file_path%_spec.rb +0 -7
- data/rspec_generators/merb_controller_test/templates/spec/helpers/%controller_full_file_path%_helper_spec.rb +0 -5
- data/rspec_generators/merb_model_test/merb_model_test_generator.rb +0 -35
- data/rspec_generators/merb_model_test/templates/spec/models/%model_file_name%_spec.rb +0 -7
- data/rspec_generators/merb_resource_controller_test/merb_resource_controller_test_generator.rb +0 -49
- data/rspec_generators/merb_resource_controller_test/templates/spec/controllers/%controller_full_file_path%_spec.rb +0 -7
- data/rspec_generators/merb_resource_controller_test/templates/spec/helpers/%controller_full_file_path%_helpers.rb +0 -5
- data/rspec_generators/merb_resource_controller_test/templates/spec/views/%controller_full_file_path%/delete.html.erb_spec.rb +0 -1
- data/rspec_generators/merb_resource_controller_test/templates/spec/views/%controller_full_file_path%/edit.html.erb_spec.rb +0 -1
- data/rspec_generators/merb_resource_controller_test/templates/spec/views/%controller_full_file_path%/index.html.erb_spec.rb +0 -1
- data/rspec_generators/merb_resource_controller_test/templates/spec/views/%controller_full_file_path%/new.html.erb_spec.rb +0 -1
- data/rspec_generators/merb_resource_controller_test/templates/spec/views/%controller_full_file_path%/show.html.erb_spec.rb +0 -1
- data/test_unit_generators/merb_controller_test/merb_controller_test_generator.rb +0 -47
- data/test_unit_generators/merb_controller_test/templates/test/functional/%controller_full_file_path%_test.rb +0 -17
- data/test_unit_generators/merb_model_test/merb_model_test_generator.rb +0 -34
- data/test_unit_generators/merb_model_test/templates/test/unit/%model_file_name%_test.rb +0 -9
- 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
|
+
##############################################################################
|
File without changes
|
File without changes
|
File without changes
|
@@ -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 -%>
|
File without changes
|