hassox-pancake 0.1.6

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.
Files changed (125) hide show
  1. data/LICENSE +20 -0
  2. data/README.textile +95 -0
  3. data/Rakefile +56 -0
  4. data/TODO +18 -0
  5. data/bin/jeweler +19 -0
  6. data/bin/pancake-gen +17 -0
  7. data/bin/rubyforge +19 -0
  8. data/lib/pancake.rb +48 -0
  9. data/lib/pancake/bootloaders.rb +180 -0
  10. data/lib/pancake/configuration.rb +140 -0
  11. data/lib/pancake/core_ext/class.rb +44 -0
  12. data/lib/pancake/core_ext/object.rb +22 -0
  13. data/lib/pancake/core_ext/symbol.rb +15 -0
  14. data/lib/pancake/errors.rb +61 -0
  15. data/lib/pancake/generators.rb +8 -0
  16. data/lib/pancake/generators/base.rb +12 -0
  17. data/lib/pancake/generators/flat_generator.rb +17 -0
  18. data/lib/pancake/generators/short_generator.rb +17 -0
  19. data/lib/pancake/generators/stack_generator.rb +17 -0
  20. data/lib/pancake/generators/templates/common/dotgitignore +22 -0
  21. data/lib/pancake/generators/templates/common/dothtaccess +17 -0
  22. data/lib/pancake/generators/templates/flat/%stack_name%/%stack_name%.rb.tt +8 -0
  23. data/lib/pancake/generators/templates/flat/%stack_name%/.gitignore +21 -0
  24. data/lib/pancake/generators/templates/flat/%stack_name%/config.ru.tt +12 -0
  25. data/lib/pancake/generators/templates/flat/%stack_name%/pancake.init.tt +1 -0
  26. data/lib/pancake/generators/templates/flat/%stack_name%/public/.empty_directory +0 -0
  27. data/lib/pancake/generators/templates/flat/%stack_name%/tmp/.empty_directory +0 -0
  28. data/lib/pancake/generators/templates/short/%stack_name%/.gitignore +21 -0
  29. data/lib/pancake/generators/templates/short/%stack_name%/LICENSE.tt +20 -0
  30. data/lib/pancake/generators/templates/short/%stack_name%/README.tt +7 -0
  31. data/lib/pancake/generators/templates/short/%stack_name%/Rakefile.tt +48 -0
  32. data/lib/pancake/generators/templates/short/%stack_name%/VERSION.tt +1 -0
  33. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%.rb.tt +5 -0
  34. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/%stack_name%.rb.tt +6 -0
  35. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/config.ru.tt +12 -0
  36. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/gems/cache/.empty_directory +0 -0
  37. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/mounts/.empty_directory +0 -0
  38. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/public/.empty_directory +0 -0
  39. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/tmp/.empty_directory +0 -0
  40. data/lib/pancake/generators/templates/short/%stack_name%/pancake.init.tt +1 -0
  41. data/lib/pancake/generators/templates/short/%stack_name%/spec/%stack_name%_spec.rb.tt +7 -0
  42. data/lib/pancake/generators/templates/short/%stack_name%/spec/spec_helper.rb.tt +9 -0
  43. data/lib/pancake/generators/templates/stack/%stack_name%/.gitignore +21 -0
  44. data/lib/pancake/generators/templates/stack/%stack_name%/LICENSE.tt +20 -0
  45. data/lib/pancake/generators/templates/stack/%stack_name%/README.tt +7 -0
  46. data/lib/pancake/generators/templates/stack/%stack_name%/Rakefile.tt +48 -0
  47. data/lib/pancake/generators/templates/stack/%stack_name%/VERSION.tt +1 -0
  48. data/lib/pancake/generators/templates/stack/%stack_name%/lib/%stack_name%.rb.tt +3 -0
  49. data/lib/pancake/generators/templates/stack/%stack_name%/lib/%stack_name%/config.ru.tt +12 -0
  50. data/lib/pancake/generators/templates/stack/%stack_name%/lib/%stack_name%/config/environments/development.rb.tt +18 -0
  51. data/lib/pancake/generators/templates/stack/%stack_name%/lib/%stack_name%/config/environments/production.rb.tt +18 -0
  52. data/lib/pancake/generators/templates/stack/%stack_name%/lib/%stack_name%/config/router.rb.tt +6 -0
  53. data/lib/pancake/generators/templates/stack/%stack_name%/lib/%stack_name%/gems/cache/.empty_directory +0 -0
  54. data/lib/pancake/generators/templates/stack/%stack_name%/lib/%stack_name%/mounts/.empty_directory +0 -0
  55. data/lib/pancake/generators/templates/stack/%stack_name%/lib/%stack_name%/public/.empty_directory +0 -0
  56. data/lib/pancake/generators/templates/stack/%stack_name%/lib/%stack_name%/tmp/.empty_directory +0 -0
  57. data/lib/pancake/generators/templates/stack/%stack_name%/pancake.init.tt +1 -0
  58. data/lib/pancake/generators/templates/stack/%stack_name%/spec/%stack_name%_spec.rb.tt +7 -0
  59. data/lib/pancake/generators/templates/stack/%stack_name%/spec/spec_helper.rb.tt +9 -0
  60. data/lib/pancake/hooks/inheritable_inner_classes.rb +60 -0
  61. data/lib/pancake/hooks/on_inherit.rb +34 -0
  62. data/lib/pancake/master.rb +87 -0
  63. data/lib/pancake/middleware.rb +354 -0
  64. data/lib/pancake/mime_types.rb +265 -0
  65. data/lib/pancake/mixins/publish.rb +125 -0
  66. data/lib/pancake/mixins/publish/action_options.rb +104 -0
  67. data/lib/pancake/mixins/render.rb +61 -0
  68. data/lib/pancake/mixins/request_helper.rb +92 -0
  69. data/lib/pancake/mixins/stack_helper.rb +44 -0
  70. data/lib/pancake/mixins/url.rb +10 -0
  71. data/lib/pancake/more/controller.rb +4 -0
  72. data/lib/pancake/more/controller/base.rb +34 -0
  73. data/lib/pancake/paths.rb +218 -0
  74. data/lib/pancake/router.rb +99 -0
  75. data/lib/pancake/stack/app.rb +10 -0
  76. data/lib/pancake/stack/bootloader.rb +79 -0
  77. data/lib/pancake/stack/configuration.rb +44 -0
  78. data/lib/pancake/stack/middleware.rb +0 -0
  79. data/lib/pancake/stack/router.rb +18 -0
  80. data/lib/pancake/stack/stack.rb +57 -0
  81. data/lib/pancake/stacks/short.rb +2 -0
  82. data/lib/pancake/stacks/short/controller.rb +105 -0
  83. data/lib/pancake/stacks/short/stack.rb +194 -0
  84. data/spec/helpers/helpers.rb +20 -0
  85. data/spec/helpers/matchers.rb +25 -0
  86. data/spec/pancake/bootloaders_spec.rb +109 -0
  87. data/spec/pancake/configuration_spec.rb +177 -0
  88. data/spec/pancake/fixtures/foo_stack/pancake.init +0 -0
  89. data/spec/pancake/fixtures/paths/controllers/controller1.rb +0 -0
  90. data/spec/pancake/fixtures/paths/controllers/controller2.rb +0 -0
  91. data/spec/pancake/fixtures/paths/controllers/controller3.rb +0 -0
  92. data/spec/pancake/fixtures/paths/models/model1.rb +0 -0
  93. data/spec/pancake/fixtures/paths/models/model2.rb +0 -0
  94. data/spec/pancake/fixtures/paths/models/model3.rb +0 -0
  95. data/spec/pancake/fixtures/paths/stack/controllers/controller1.rb +0 -0
  96. data/spec/pancake/fixtures/paths/stack/models/model3.rb +0 -0
  97. data/spec/pancake/fixtures/paths/stack/views/view1.erb +0 -0
  98. data/spec/pancake/fixtures/paths/stack/views/view1.rb +0 -0
  99. data/spec/pancake/fixtures/paths/stack/views/view2.erb +0 -0
  100. data/spec/pancake/fixtures/paths/stack/views/view2.haml +0 -0
  101. data/spec/pancake/fixtures/render_templates/context_template.html.erb +1 -0
  102. data/spec/pancake/fixtures/render_templates/erb_template.html.erb +1 -0
  103. data/spec/pancake/fixtures/render_templates/erb_template.json.erb +1 -0
  104. data/spec/pancake/fixtures/render_templates/haml_template.html.haml +1 -0
  105. data/spec/pancake/fixtures/render_templates/haml_template.xml.haml +1 -0
  106. data/spec/pancake/hooks/on_inherit_spec.rb +65 -0
  107. data/spec/pancake/inheritance_spec.rb +100 -0
  108. data/spec/pancake/middleware_spec.rb +401 -0
  109. data/spec/pancake/mime_types_spec.rb +234 -0
  110. data/spec/pancake/mixins/publish_spec.rb +94 -0
  111. data/spec/pancake/mixins/render_spec.rb +55 -0
  112. data/spec/pancake/mixins/stack_helper_spec.rb +46 -0
  113. data/spec/pancake/pancake_spec.rb +31 -0
  114. data/spec/pancake/paths_spec.rb +210 -0
  115. data/spec/pancake/stack/app_spec.rb +28 -0
  116. data/spec/pancake/stack/bootloader_spec.rb +41 -0
  117. data/spec/pancake/stack/middleware_spec.rb +0 -0
  118. data/spec/pancake/stack/router_spec.rb +266 -0
  119. data/spec/pancake/stack/stack_configuration_spec.rb +101 -0
  120. data/spec/pancake/stack/stack_spec.rb +55 -0
  121. data/spec/pancake/stacks/short/controller_spec.rb +287 -0
  122. data/spec/pancake/stacks/short/router_spec.rb +132 -0
  123. data/spec/pancake/stacks/short/stack_spec.rb +40 -0
  124. data/spec/spec_helper.rb +21 -0
  125. metadata +238 -0
@@ -0,0 +1,140 @@
1
+ module Pancake
2
+ class Configuration
3
+
4
+ class Base
5
+ class_inheritable_reader :defaults
6
+ @defaults = Hash.new{|h,k| h[k] = {:value => nil, :description => ""}}
7
+
8
+ # Set a default on the the configuartion
9
+ class << self
10
+
11
+ # Set a default for this configuration class
12
+ # Provide a field/method name and a value to set this to.
13
+ # If you don't provide a value, and instead provide a block, then
14
+ # a proc will be called lazily when requested.
15
+ #
16
+ # Example
17
+ # config_klass = Pancake::Configuration.make
18
+ # config_class.default :foo, :bar, "This foo is a bar"
19
+ # config = config_class.new
20
+ #
21
+ # :api: public
22
+ def default(meth, *args, &block)
23
+ value, description = args
24
+ if block
25
+ description = value
26
+ value = block
27
+ end
28
+ defaults[meth][:value] = value
29
+ defaults[meth][:description] = description || ""
30
+ end
31
+
32
+ # Provides aaccess to the description for a default setting
33
+ #
34
+ # :api: public
35
+ def description_for(field)
36
+ defaults.keys.include?(field) ? defaults[field][:description] : ""
37
+ end
38
+ end
39
+
40
+ # access to the singleton class
41
+ # :api: private
42
+ def singleton_class # :nodoc:
43
+ class << self; self; end
44
+ end
45
+
46
+ # Access to the configuration defaults via the instance. Defers to the
47
+ # clas smethod for defaults
48
+ # :api: public
49
+ def defaults
50
+ self.class.defaults
51
+ end
52
+
53
+ # Access to the class descritpion for defaults
54
+ # :api: public
55
+ def description_for(field)
56
+ self.class.description_for(field)
57
+ end
58
+
59
+ # Access to the currently set values for this configuration object
60
+ # :api: public
61
+ def values
62
+ @values ||= {}
63
+ end
64
+
65
+ private
66
+ def method_missing(name, *args)
67
+ if name.to_s =~ /(.*?)=$/
68
+ set_actual_value($1.to_sym, args.first)
69
+ else
70
+ if defaults.keys.include?(name) # We don't want to trigger a default value if we're blindly setting it
71
+ # If the default is a proc, do not cache it
72
+ case defaults[name][:value]
73
+ when Proc
74
+ instance_eval(&defaults[name][:value])
75
+ else
76
+ val = defaults[name][:value]
77
+ val = val.dup rescue val
78
+ set_actual_value(name, val)
79
+ end
80
+ else
81
+ nil
82
+ end
83
+ end
84
+ end
85
+
86
+ # Caches the values via a method rather than going through method_missing
87
+ # :api: private
88
+ def set_actual_value(name, val) # :nodoc:
89
+ singleton_class.class_eval <<-RUBY
90
+ def #{name}=(val) # def foo=(val)
91
+ values[#{name.inspect}] = val # values[:foo] = val
92
+ end # end
93
+
94
+ def #{name} # def foo
95
+ values[#{name.inspect}] # values[:foo]
96
+ end # end
97
+ RUBY
98
+ values[name] = val
99
+ end
100
+
101
+ end # Base
102
+
103
+ class << self
104
+
105
+ # Make a new configuration class
106
+ # :api: public
107
+ def make(&block)
108
+ Class.new(Pancake::Configuration::Base, &block)
109
+ end
110
+
111
+ end # self
112
+ end # Configuration
113
+
114
+ class PancakeConfig < Configuration::Base
115
+ def stacks(label = nil)
116
+ @stacks ||= {}
117
+ result = label.nil? ? @stacks : @stacks[label]
118
+ yield result if block_given?
119
+ result
120
+ end
121
+
122
+ def configs(label = nil)
123
+ @configs ||= Hash.new do |h,k|
124
+ if (k.is_a?(Class) || k.is_a?(Module)) && defined?(k::Configuration)
125
+ h[k] = k::Configuration.new
126
+ else
127
+ nil
128
+ end
129
+ end
130
+ result = label.nil? ? @configs : @configs[label]
131
+ yield result if block_given?
132
+ result
133
+ end
134
+ end
135
+
136
+ def self.configuration
137
+ @configuration ||= PancakeConfig.new
138
+ end
139
+
140
+ end # Pancake
@@ -0,0 +1,44 @@
1
+ class Class
2
+ # Taken from extlib but uses a full Marshall.dump rather than just a dup.
3
+ # This may not work for some data types. The data must be marshalable to use this method.
4
+ #
5
+ # Defines class-level inheritable attribute reader. Attributes are available to subclasses,
6
+ # each subclass has a copy of parent's attribute.
7
+ #
8
+ # @param *syms<Array[#to_s]> Array of attributes to define inheritable reader for.
9
+ # @return <Array[#to_s]> Array of attributes converted into inheritable_readers.
10
+ #
11
+ # @api public
12
+ #
13
+ # @todo Do we want to block instance_reader via :instance_reader => false
14
+ # @todo It would be preferable that we do something with a Hash passed in
15
+ # (error out or do the same as other methods above) instead of silently
16
+ # moving on). In particular, this makes the return value of this function
17
+ # less useful.
18
+ def deep_copy_class_inheritable_reader(*ivars)
19
+ instance_reader = ivars.pop[:reader] if ivars.last.is_a?(Hash)
20
+
21
+ ivars.each do |ivar|
22
+ self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
23
+ def self.#{ivar}
24
+ return @#{ivar} if self == #{self} || defined?(@#{ivar})
25
+ ivar = superclass.#{ivar}
26
+ return nil if ivar.nil? && !#{self}.instance_variable_defined?("@#{ivar}")
27
+ @#{ivar} = ivar && !ivar.is_a?(Module) && !ivar.is_a?(Numeric) ? Marshal.load(Marshal.dump(ivar)) : ivar
28
+ end
29
+ RUBY
30
+ unless instance_reader == false
31
+ self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
32
+ def #{ivar}
33
+ self.class.#{ivar}
34
+ end
35
+ RUBY
36
+ end # unless
37
+ end # ivars.each
38
+ end # self.deep_inheritable_reader
39
+
40
+ def deep_copy_class_inheritable_accessor(*ivars)
41
+ deep_copy_class_inheritable_reader(*ivars)
42
+ class_inheritable_writer(*ivars)
43
+ end
44
+ end # Class
@@ -0,0 +1,22 @@
1
+ class Object
2
+ extend ::Pancake::Hooks::InheritableInnerClasses
3
+ end
4
+
5
+ # Vendored from http://eigenclass.org/hiki/instance_exec
6
+ # 2009-06-02
7
+ # Adapted for ruby 1.9 where the method is deinfed on Object
8
+ unless Object.method_defined?(:instance_exec)
9
+ class Object
10
+ # Like instace_eval but allows parameters to be passed.
11
+ def instance_exec(*args, &block)
12
+ mname = "__instance_exec_#{Thread.current.object_id.abs}_#{object_id.abs}"
13
+ Object.class_eval{ define_method(mname, &block) }
14
+ begin
15
+ ret = send(mname, *args)
16
+ ensure
17
+ Object.class_eval{ undef_method(mname) } rescue nil
18
+ end
19
+ ret
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,15 @@
1
+ # Taken from Rails d6b9f8410c990b3d68d1970f1461a1d385d098d7 20090731
2
+ unless :to_proc.respond_to?(:to_proc)
3
+ class Symbol
4
+ # Turns the symbol into a simple proc, which is especially useful for enumerations. Examples:
5
+ #
6
+ # # The same as people.collect { |p| p.name }
7
+ # people.collect(&:name)
8
+ #
9
+ # # The same as people.select { |p| p.manager? }.collect { |p| p.salary }
10
+ # people.select(&:manager?).collect(&:salary)
11
+ def to_proc
12
+ Proc.new { |*args| args.shift.__send__(self, *args) }
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,61 @@
1
+ module Pancake
2
+ module Errors
3
+ class HttpError < StandardError
4
+ class_inheritable_accessor :name, :code, :description
5
+
6
+ def name; self.class.name; end
7
+
8
+ def code; self.class.code; end
9
+
10
+ def description; self.class.description; end
11
+ end
12
+
13
+ class NotFound < HttpError
14
+ self.name = "Not Found"
15
+ self.code = 404
16
+ self.description = "The requested resource could not be found but may be available again in the future."
17
+ end
18
+
19
+ class UnknownRouter < NotFound
20
+ self.description = "The router could not be found"
21
+ end
22
+
23
+ class UnknownConfiguration < NotFound
24
+ self.description = "The configuration could not be found"
25
+ end
26
+
27
+ class Unauthorized < HttpError
28
+ self.name = "Unauthorized"
29
+ self.code = 401
30
+ self.description = "Authentication is required to access this resource."
31
+ end
32
+
33
+ class Forbidden < HttpError
34
+ self.name = "Forbidden"
35
+ self.code = 403
36
+ self.description = "Access to this resource is denied."
37
+ end
38
+
39
+ class Server < HttpError
40
+ attr_accessor :exceptions
41
+
42
+ self.name = "Server Error"
43
+ self.code = 500
44
+ self.description = "An internal server error"
45
+
46
+ def initialize(*args)
47
+ super
48
+ @exceptions = []
49
+ end
50
+ end
51
+
52
+ class NotAcceptable < HttpError
53
+ self.name = "Not Acceptable"
54
+ self.code = 406
55
+ self.description = "The requeseted format could not be provided"
56
+ end
57
+
58
+
59
+
60
+ end
61
+ end
@@ -0,0 +1,8 @@
1
+ require 'thor'
2
+ require 'extlib'
3
+
4
+ require File.join(File.dirname(__FILE__), "generators", "base.rb")
5
+
6
+ Dir[File.join(File.dirname(__FILE__), "generators", "*.rb")].each do |f|
7
+ require f unless f == 'base.rb'
8
+ end
@@ -0,0 +1,12 @@
1
+ module Pancake
2
+ module Generators
3
+ class Base < Thor::Group
4
+ include Thor::Actions
5
+
6
+ def self.source_root
7
+ File.join(File.dirname(__FILE__), "templates")
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module Pancake
2
+ module Generators
3
+ class Flat < Base
4
+ argument :stack_name, :banner => "Name of stack"
5
+
6
+ desc "Generates a stack"
7
+ def stack
8
+ say "Creating The Stack For #{stack_name}"
9
+ directory "flat/%stack_name%", stack_name
10
+ template File.join(self.class.source_root, "common/dotgitignore"), "#{stack_name}/.gitignore"
11
+ template File.join(self.class.source_root, "common/dothtaccess"), "#{stack_name}/public/.htaccess"
12
+ end
13
+
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Pancake
2
+ module Generators
3
+ class Short < Base
4
+ argument :stack_name, :banner => "Name of stack"
5
+
6
+ desc "Generates a short stack"
7
+ def stack
8
+ say "Creating The Short Stack For #{stack_name}"
9
+ directory "short/%stack_name%", stack_name
10
+ template File.join(self.class.source_root, "common/dotgitignore"), "#{stack_name}/.gitignore"
11
+ template File.join(self.class.source_root, "common/dothtaccess"), "#{stack_name}/lib/#{stack_name}/public/.htaccess"
12
+ end
13
+
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Pancake
2
+ module Generators
3
+ class Stack < Base
4
+ argument :stack_name, :banner => "Name of stack"
5
+
6
+ desc "Generates a stack"
7
+ def stack
8
+ say "Creating The Stack For #{stack_name}"
9
+ directory "stack/%stack_name%", stack_name
10
+ template File.join(self.class.source_root, "common/dotgitignore"), "#{stack_name}/.gitignore"
11
+ template File.join(self.class.source_root, "common/dothtaccess"), "#{stack_name}/lib/#{stack_name}/public/.htaccess"
12
+ end
13
+
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ .DS_Store
2
+ log/*
3
+ tmp/*
4
+ TAGS
5
+ *~
6
+ .#*
7
+ schema/schema.rb
8
+ schema/*_structure.sql
9
+ schema/*.sqlite3
10
+ schema/*.sqlite
11
+ schema/*.db
12
+ *.sqlite
13
+ *.sqlite3
14
+ *.db
15
+ src/*
16
+ .hgignore
17
+ .hg/*
18
+ .svn/*
19
+ gems/gems/*/
20
+ gems/specifications/*
21
+ !gems/gems/thor*/
22
+ !gems/specifications/thor*
@@ -0,0 +1,17 @@
1
+ # Sets the default handler for FastCGI scripts
2
+ AddHandler fastcgi-script .fcgi
3
+
4
+ # If Apache2 is used together with mod_fcgid,
5
+ # uncomment the line below and comment in the line
6
+ # above to set the correct script handler
7
+ #AddHandler fcgid-script .fcgi
8
+
9
+ RewriteEngine On
10
+
11
+ RewriteRule ^$ index.html [QSA]
12
+ RewriteRule ^([^.]+)$ $1.html [QSA]
13
+ RewriteCond %{REQUEST_FILENAME} !-f
14
+ RewriteRule ^(.*)$ merb.fcgi [QSA,L]
15
+
16
+
17
+ ErrorDocument 500 "<h2>Application Error</h2>Merb could not be reached"
@@ -0,0 +1,8 @@
1
+ class <%= stack_name.camel_case %> < Pancake::Stacks::Short
2
+ roots << Pancake.get_root(__FILE__)
3
+
4
+ get "/" do
5
+ "Welcome to Pancake!"
6
+ end
7
+ end
8
+
@@ -0,0 +1,21 @@
1
+ .DS_Store
2
+ log/*
3
+ TAGS
4
+ *~
5
+ .#*
6
+ schema/schema.rb
7
+ schema/*_structure.sql
8
+ schema/*.sqlite3
9
+ schema/*.sqlite
10
+ schema/*.db
11
+ *.sqlite
12
+ *.sqlite3
13
+ *.db
14
+ src/*
15
+ .hgignore
16
+ .hg/*
17
+ .svn/*
18
+ gems/gems/*/
19
+ gems/specifications/*
20
+ !gems/gems/thor*/
21
+ !gems/specifications/thor*
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+
3
+ require 'pancake'
4
+ require ::File.join(::File.expand_path(::File.dirname(__FILE__)), "<%= stack_name %>")
5
+
6
+ # get the application to run. The applicadtion in the Pancake.start block
7
+ # is the master application. It will have all requests directed to it through the
8
+ # pancake middleware
9
+ # This should be a very minimal file, but should be used when any stand alone code needs to be included
10
+ app = Pancake.start(:root => Pancake.get_root(__FILE__)){ <%= stack_name.camel_case %>.stackup }
11
+
12
+ run app