dyoder-waves 0.7.7 → 0.8.0
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/bin/waves +19 -56
- data/doc/HISTORY +1 -0
- data/doc/LICENSE +22 -0
- data/doc/README +1 -0
- data/doc/VERSION +1 -0
- data/lib/caches/file.rb +48 -0
- data/lib/caches/memcached.rb +40 -0
- data/lib/caches/simple.rb +25 -0
- data/lib/caches/synchronized.rb +25 -0
- data/lib/commands/console.rb +35 -0
- data/lib/commands/generate.rb +52 -0
- data/lib/commands/help.rb +5 -0
- data/lib/commands/{waves-server.rb → server.rb} +16 -3
- data/lib/dispatchers/base.rb +21 -20
- data/lib/dispatchers/default.rb +11 -63
- data/lib/ext/float.rb +13 -0
- data/lib/{utilities → ext}/hash.rb +2 -2
- data/lib/{utilities → ext}/integer.rb +5 -2
- data/lib/ext/kernel.rb +20 -0
- data/lib/ext/module.rb +20 -0
- data/lib/{utilities → ext}/object.rb +3 -5
- data/lib/ext/string.rb +20 -0
- data/lib/ext/symbol.rb +11 -0
- data/lib/ext/tempfile.rb +5 -0
- data/lib/foundations/classic.rb +64 -0
- data/lib/foundations/compact.rb +50 -0
- data/lib/helpers/basic.rb +11 -0
- data/lib/helpers/doc_type.rb +34 -0
- data/lib/helpers/extended.rb +21 -0
- data/lib/helpers/form.rb +3 -1
- data/lib/helpers/formatting.rb +3 -3
- data/lib/helpers/layouts.rb +37 -0
- data/lib/helpers/model.rb +8 -4
- data/lib/helpers/view.rb +2 -4
- data/lib/layers/inflect/english.rb +67 -0
- data/lib/layers/mvc.rb +18 -18
- data/lib/layers/mvc/controllers.rb +41 -0
- data/lib/layers/mvc/extensions.rb +52 -0
- data/lib/layers/orm/{active_record.rb → providers/active_record.rb} +12 -18
- data/lib/layers/orm/{active_record → providers/active_record}/migrations/empty.rb.erb +0 -0
- data/lib/layers/orm/{active_record → providers/active_record}/tasks/generate.rb +1 -1
- data/lib/layers/orm/{active_record → providers/active_record}/tasks/schema.rb +1 -1
- data/lib/layers/orm/{data_mapper.rb → providers/data_mapper.rb} +3 -4
- data/lib/layers/orm/providers/filebase.rb +25 -0
- data/lib/layers/orm/{sequel.rb → providers/sequel.rb} +16 -12
- data/lib/layers/orm/{sequel → providers/sequel}/migrations/empty.rb.erb +0 -0
- data/lib/layers/orm/{sequel → providers/sequel}/tasks/generate.rb +5 -3
- data/lib/layers/orm/{sequel → providers/sequel}/tasks/schema.rb +2 -2
- data/lib/{renderers → layers/renderers}/erubis.rb +10 -13
- data/lib/layers/renderers/haml.rb +47 -0
- data/lib/layers/renderers/markaby.rb +29 -0
- data/lib/matchers/accept.rb +21 -0
- data/lib/matchers/base.rb +30 -0
- data/lib/matchers/content_type.rb +17 -0
- data/lib/matchers/path.rb +67 -0
- data/lib/matchers/query.rb +21 -0
- data/lib/matchers/request.rb +27 -0
- data/lib/matchers/resource.rb +19 -0
- data/lib/matchers/traits.rb +19 -0
- data/lib/matchers/uri.rb +20 -0
- data/lib/renderers/mixin.rb +15 -29
- data/lib/resources/mixin.rb +132 -0
- data/lib/resources/paths.rb +34 -0
- data/lib/runtime/configuration.rb +55 -135
- data/lib/runtime/console.rb +4 -1
- data/lib/runtime/logger.rb +24 -48
- data/lib/runtime/mime_types.rb +516 -2
- data/lib/runtime/mocks.rb +14 -0
- data/lib/runtime/monitor.rb +32 -0
- data/lib/runtime/request.rb +107 -39
- data/lib/runtime/response.rb +5 -2
- data/lib/runtime/response_mixin.rb +43 -22
- data/lib/runtime/runtime.rb +67 -0
- data/lib/runtime/server.rb +14 -101
- data/lib/runtime/session.rb +4 -43
- data/lib/runtime/worker.rb +86 -0
- data/lib/servers/base.rb +42 -0
- data/lib/servers/mongrel.rb +13 -0
- data/lib/servers/webrick.rb +13 -0
- data/lib/tasks/gem.rb +1 -0
- data/lib/tasks/generate.rb +67 -62
- data/lib/views/errors.rb +49 -0
- data/lib/views/mixin.rb +34 -82
- data/lib/waves.rb +36 -55
- data/samples/blog/Rakefile +25 -0
- data/samples/blog/configurations/default.rb +11 -0
- data/samples/blog/configurations/development.rb +29 -0
- data/samples/blog/configurations/production.rb +26 -0
- data/samples/blog/models/comment.rb +23 -0
- data/samples/blog/models/entry.rb +31 -0
- data/samples/blog/public/css/site.css +13 -0
- data/samples/blog/public/javascript/jquery-1.2.6.min.js +32 -0
- data/samples/blog/public/javascript/site.js +13 -0
- data/samples/blog/resources/entry.rb +39 -0
- data/samples/blog/resources/map.rb +9 -0
- data/samples/blog/schema/migrations/001_initial_schema.rb +17 -0
- data/samples/blog/schema/migrations/002_add_comments.rb +18 -0
- data/samples/blog/schema/migrations/templates/empty.rb.erb +9 -0
- data/samples/blog/startup.rb +8 -0
- data/samples/blog/templates/comment/add.mab +12 -0
- data/samples/blog/templates/comment/list.mab +6 -0
- data/samples/blog/templates/entry/edit.mab +14 -0
- data/samples/blog/templates/entry/list.mab +16 -0
- data/samples/blog/templates/entry/show.mab +18 -0
- data/samples/blog/templates/entry/summary.mab +9 -0
- data/samples/blog/templates/errors/not_found_404.mab +7 -0
- data/{app → samples/blog}/templates/errors/server_error_500.mab +0 -0
- data/samples/blog/templates/layouts/default.mab +19 -0
- data/samples/blog/templates/waves/status.mab +85 -0
- data/templates/classic/Rakefile +130 -0
- data/templates/classic/configurations/default.rb.erb +9 -0
- data/{app → templates/classic}/configurations/development.rb.erb +3 -7
- data/{app → templates/classic}/configurations/production.rb.erb +3 -4
- data/templates/classic/resources/map.rb.erb +8 -0
- data/templates/classic/startup.rb.erb +11 -0
- data/{app → templates/classic}/templates/errors/not_found_404.mab +0 -0
- data/templates/classic/templates/errors/server_error_500.mab +2 -0
- data/{app → templates/classic}/templates/layouts/default.mab +0 -0
- data/templates/compact/startup.rb.erb +11 -0
- metadata +967 -144
- data/app/Rakefile +0 -14
- data/app/bin/waves-console +0 -4
- data/app/bin/waves-server +0 -4
- data/app/configurations/mapping.rb.erb +0 -13
- data/app/controllers/.gitignore +0 -0
- data/app/doc/.gitignore +0 -0
- data/app/helpers/.gitignore +0 -0
- data/app/lib/application.rb.erb +0 -5
- data/app/lib/tasks/.gitignore +0 -0
- data/app/log/.gitignore +0 -0
- data/app/models/.gitignore +0 -0
- data/app/public/css/.gitignore +0 -0
- data/app/public/flash/.gitignore +0 -0
- data/app/public/images/.gitignore +0 -0
- data/app/public/javascript/.gitignore +0 -0
- data/app/schema/migrations/.gitignore +0 -0
- data/app/startup.rb +0 -5
- data/app/tmp/sessions/.gitignore +0 -0
- data/app/views/.gitignore +0 -0
- data/bin/waves-console +0 -4
- data/bin/waves-server +0 -4
- data/lib/commands/waves-console.rb +0 -21
- data/lib/controllers/base.rb +0 -11
- data/lib/controllers/mixin.rb +0 -165
- data/lib/foundations/default.rb +0 -26
- data/lib/foundations/simple.rb +0 -30
- data/lib/helpers/asset_helper.rb +0 -67
- data/lib/helpers/common.rb +0 -66
- data/lib/helpers/default.rb +0 -13
- data/lib/helpers/number_helper.rb +0 -25
- data/lib/helpers/tag_helper.rb +0 -58
- data/lib/helpers/url_helper.rb +0 -77
- data/lib/layers/default_errors.rb +0 -26
- data/lib/layers/orm/filebase.rb +0 -22
- data/lib/layers/simple.rb +0 -35
- data/lib/layers/simple_errors.rb +0 -23
- data/lib/mapping/mapping.rb +0 -289
- data/lib/mapping/pretty_urls.rb +0 -96
- data/lib/renderers/markaby.rb +0 -33
- data/lib/runtime/application.rb +0 -69
- data/lib/runtime/blackboard.rb +0 -57
- data/lib/runtime/debugger.rb +0 -9
- data/lib/runtime/response_proxy.rb +0 -30
- data/lib/tasks/cluster.rb +0 -26
- data/lib/utilities/inflect.rb +0 -110
- data/lib/utilities/inflect/english.rb +0 -84
- data/lib/utilities/module.rb +0 -21
- data/lib/utilities/proc.rb +0 -16
- data/lib/utilities/string.rb +0 -61
- data/lib/utilities/symbol.rb +0 -10
- data/lib/views/base.rb +0 -9
data/lib/dispatchers/default.rb
CHANGED
|
@@ -3,75 +3,23 @@ module Waves
|
|
|
3
3
|
module Dispatchers
|
|
4
4
|
|
|
5
5
|
#
|
|
6
|
-
# Waves::Dispatchers::Default
|
|
7
|
-
# determine what main action to take, as well as what before, after, always, and exception-handling
|
|
8
|
-
# blocks must run.
|
|
9
|
-
#
|
|
10
|
-
# The default dispatcher also attempts to set the content type based on the
|
|
11
|
-
# file extension used in the request URL. It does this using the class defined in
|
|
12
|
-
# the current configuration's +mime_types+ attribute, which defaults to Mongrel's
|
|
13
|
-
# MIME type handler.
|
|
14
|
-
#
|
|
15
|
-
# You can write your own dispatcher and use it in your application's configuration
|
|
16
|
-
# file. By default, they use the default dispatcher, like this:
|
|
17
|
-
#
|
|
18
|
-
# application do
|
|
19
|
-
# use Rack::ShowExceptions
|
|
20
|
-
# run Waves::Dispatchers::Default.new
|
|
21
|
-
# end
|
|
6
|
+
# Waves::Dispatchers::Default processes a Waves::Request and returns a Waves::Response as follows:
|
|
22
7
|
#
|
|
23
8
|
|
|
24
9
|
class Default < Base
|
|
25
10
|
|
|
26
|
-
#
|
|
27
|
-
# must provide a +safe+ method to handle creating a response from a request.
|
|
28
|
-
# Takes a Waves::Request and returns a Waves::Reponse
|
|
11
|
+
# Takes a Waves::Request and returns a Waves::Response
|
|
29
12
|
def safe( request )
|
|
30
|
-
|
|
31
|
-
response = request.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
begin
|
|
39
|
-
|
|
40
|
-
mapping[:before].each do | block, args |
|
|
41
|
-
ResponseProxy.new(request).instance_exec(*args,&block)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
request.not_found unless mapping[:action]
|
|
45
|
-
|
|
46
|
-
block, args = mapping[:action]
|
|
47
|
-
response.write( ResponseProxy.new(request).instance_exec(*args, &block) )
|
|
48
|
-
|
|
49
|
-
mapping[:after].each do | block, args |
|
|
50
|
-
ResponseProxy.new(request).instance_exec(*args,&block)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
rescue Exception => e
|
|
54
|
-
|
|
55
|
-
handler = mapping[:handlers].detect do | exception, block, args |
|
|
56
|
-
e.is_a? exception
|
|
57
|
-
end
|
|
58
|
-
if handler
|
|
59
|
-
ResponseProxy.new(request).instance_exec(*handler[2], &handler[1])
|
|
60
|
-
else
|
|
61
|
-
raise e
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
ensure
|
|
65
|
-
mapping[:always].each do | block, args |
|
|
66
|
-
begin
|
|
67
|
-
ResponseProxy.new(request).instance_exec(*args,&block)
|
|
68
|
-
rescue Exception => e
|
|
69
|
-
Waves::Logger.info e.to_s
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
13
|
+
# set a default content type -- this can be overridden by the resource
|
|
14
|
+
request.response.content_type = request.accept.default
|
|
15
|
+
resource = Waves.config.resource.new( request )
|
|
16
|
+
if request.response.body.empty?
|
|
17
|
+
request.response.body << resource.process.to_s
|
|
18
|
+
else
|
|
19
|
+
resource.process
|
|
73
20
|
end
|
|
74
|
-
|
|
21
|
+
# okay, we've handled the request, now write the response unless it was already done
|
|
22
|
+
request.response.finish
|
|
75
23
|
end
|
|
76
24
|
|
|
77
25
|
end
|
data/lib/ext/float.rb
ADDED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module Waves
|
|
2
|
-
module
|
|
2
|
+
module Ext
|
|
3
3
|
module Integer
|
|
4
4
|
def seconds ; self ; end
|
|
5
5
|
def minutes ; self * 60 ; end
|
|
@@ -15,10 +15,13 @@ module Waves
|
|
|
15
15
|
def exabytes ; self * 1024.petabytes ; end
|
|
16
16
|
def zettabytes ; self * 1024.exabytes ; end
|
|
17
17
|
def yottabytes ; self * 1024.zettabytes ; end
|
|
18
|
+
def to_delimited(delim=',')
|
|
19
|
+
self.to_s.gsub(/(\d)(?=(\d\d\d)+$)/, "\\1#{delim}")
|
|
20
|
+
end
|
|
18
21
|
end
|
|
19
22
|
end
|
|
20
23
|
end
|
|
21
24
|
|
|
22
25
|
class Integer # :nodoc:
|
|
23
|
-
include Waves::
|
|
26
|
+
include Waves::Ext::Integer
|
|
24
27
|
end
|
data/lib/ext/kernel.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Kernel
|
|
2
|
+
unless respond_to?(:debugger)
|
|
3
|
+
# Starts a debugging session if ruby-debug has been loaded (call waves-server --debugger to do load it).
|
|
4
|
+
def debugger
|
|
5
|
+
Waves::Logger.info "Debugger invoked but not loaded. Start server with --debugger to enable."
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
unless respond_to?(:engine)
|
|
10
|
+
# 'engine' exists to provide a quick and easy (and MRI-compatible!) interface to the RUBY_ENGINE constant
|
|
11
|
+
def engine; defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'; end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def safe_trap(*signals)
|
|
15
|
+
signals.each { |s| trap(s) { yield } }
|
|
16
|
+
Thread.new { loop { sleep 1 } } if RUBY_PLATFORM =~ /mswin32/
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
end
|
data/lib/ext/module.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Waves
|
|
2
|
+
module Ext
|
|
3
|
+
module Module
|
|
4
|
+
|
|
5
|
+
def basename ; self.name.split('::').last || '' ; end
|
|
6
|
+
def rootname ; self.name.split('::').first ; end
|
|
7
|
+
def root ; eval( "::#{self.rootname}" ) ; end
|
|
8
|
+
|
|
9
|
+
# Just a convenience method for dynamically referencing submodules. Note that
|
|
10
|
+
# you cannot do const_get, because that will also attempt to deref the cname
|
|
11
|
+
# at global scope. So it is more efficient to just use eval.
|
|
12
|
+
def []( cname ) ; eval( "self::#{cname.to_s.camel_case}" ) ; end
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class Module # :nodoc:
|
|
19
|
+
include Waves::Ext::Module
|
|
20
|
+
end
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
module Waves
|
|
2
|
-
module
|
|
2
|
+
module Ext
|
|
3
3
|
module Object
|
|
4
4
|
# This is an extremely powerful little function that will be built-in to Ruby 1.9.
|
|
5
5
|
# This version is from Mauricio Fernandez via ruby-talk. Works like instance_eval
|
|
6
|
-
# except that you can pass parameters to the block.
|
|
7
|
-
# intended for use with instance_eval, pass it to another method, which can then
|
|
8
|
-
# invoke with parameters. This is used quite a bit by the Waves::Mapping code.
|
|
6
|
+
# except that you can pass parameters to the block.
|
|
9
7
|
def instance_exec(*args, &block)
|
|
10
8
|
mname = "__instance_exec_#{Thread.current.object_id.abs}"
|
|
11
9
|
class << self; self end.class_eval{ define_method(mname, &block) }
|
|
@@ -21,5 +19,5 @@ module Waves
|
|
|
21
19
|
end
|
|
22
20
|
|
|
23
21
|
class Object # :nodoc:
|
|
24
|
-
include Waves::
|
|
22
|
+
include Waves::Ext::Object
|
|
25
23
|
end
|
data/lib/ext/string.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Utility methods mixed into String.
|
|
2
|
+
|
|
3
|
+
class String
|
|
4
|
+
|
|
5
|
+
# Syntactic sugar for using File.join to concatenate the argument to the receiver.
|
|
6
|
+
#
|
|
7
|
+
# require "lib" / "utilities" / "string"
|
|
8
|
+
#
|
|
9
|
+
# The idea is not original, but we can't remember where we first saw it.
|
|
10
|
+
# Waves::Ext::Symbol defines the same method, allowing for :files / 'afilename.txt'
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
def / ( s ) ; File.join( self, s.to_s ); end
|
|
14
|
+
|
|
15
|
+
alias_method :lower_camel_case, :subcamelcase
|
|
16
|
+
alias_method :camel_case, :camelcase
|
|
17
|
+
alias_method :snake_case, :snakecase
|
|
18
|
+
alias_method :title_case, :titlecase
|
|
19
|
+
|
|
20
|
+
end
|
data/lib/ext/symbol.rb
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class Symbol
|
|
2
|
+
|
|
3
|
+
# Syntactic sugar for using File.join to concatenate the argument to the receiver.
|
|
4
|
+
#
|
|
5
|
+
# require :lib / :utilities / :string
|
|
6
|
+
#
|
|
7
|
+
# The idea is not original, but we can't remember where we first saw it.
|
|
8
|
+
# Waves::Ext::Symbol defines the same method, allowing for :files / 'afilename.txt'
|
|
9
|
+
|
|
10
|
+
def / ( s ) ; File.join( self.to_s, s.to_s ) ; end
|
|
11
|
+
end
|
data/lib/ext/tempfile.rb
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module Waves
|
|
2
|
+
module Foundations
|
|
3
|
+
|
|
4
|
+
# Provides Sun MVC features for your application.
|
|
5
|
+
# Includes ERb-style templates. You can also include others via Renderer Layers.
|
|
6
|
+
# It does NOT include a default ORM. Use an ORM Layer for that.
|
|
7
|
+
|
|
8
|
+
module Classic
|
|
9
|
+
|
|
10
|
+
def self.included( app )
|
|
11
|
+
|
|
12
|
+
require 'autocode'
|
|
13
|
+
require 'layers/mvc'
|
|
14
|
+
require 'layers/inflect/english'
|
|
15
|
+
require 'helpers/extended'
|
|
16
|
+
require 'layers/renderers/erubis'
|
|
17
|
+
|
|
18
|
+
app.module_eval do
|
|
19
|
+
|
|
20
|
+
include AutoCode
|
|
21
|
+
|
|
22
|
+
app.auto_create_module( :Configurations ) do
|
|
23
|
+
include AutoCode
|
|
24
|
+
auto_create_class :Default
|
|
25
|
+
auto_load :Default, :directories => [ :configurations ]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
app.auto_eval( :Configurations ) do
|
|
29
|
+
auto_create_class true, app::Configurations::Default
|
|
30
|
+
auto_load true, :directories => [ :configurations ]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
app.auto_create_module( :Resources ) do
|
|
34
|
+
include AutoCode
|
|
35
|
+
auto_create_class :Default, Waves::Resources::Base
|
|
36
|
+
auto_load :Default, :directories => [ :resources ]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
app.auto_eval( :Resources ) do
|
|
40
|
+
auto_create_class true, app::Resources::Default
|
|
41
|
+
auto_load true, :directories => [ :resources ]
|
|
42
|
+
auto_eval :Map do
|
|
43
|
+
|
|
44
|
+
handler( Waves::Dispatchers::NotFoundError ) do
|
|
45
|
+
app::Views::Errors.new( request ).not_found_404
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
include Waves::Layers::Inflect::English
|
|
52
|
+
include Waves::Layers::MVC
|
|
53
|
+
include Waves::Renderers::Erubis
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
Waves << app
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module Waves
|
|
2
|
+
module Foundations
|
|
3
|
+
module Compact
|
|
4
|
+
def self.included( app )
|
|
5
|
+
app.module_eval {
|
|
6
|
+
const_set( :Resources, Module.new {
|
|
7
|
+
const_set( :Map, Class.new {
|
|
8
|
+
include Waves::Resources::Mixin
|
|
9
|
+
handler( Exception ) {
|
|
10
|
+
Waves::Views::Errors.new( request ).server_error_500
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
handler( Waves::Dispatchers::NotFoundError ) {
|
|
14
|
+
Waves::Views::Errors.new( request ).not_found_404
|
|
15
|
+
}
|
|
16
|
+
})
|
|
17
|
+
})
|
|
18
|
+
const_set( :Configurations, Module.new {
|
|
19
|
+
const_set( :Development, Class.new( Waves::Configurations::Default ) {
|
|
20
|
+
log :level => :debug
|
|
21
|
+
host '127.0.0.1'
|
|
22
|
+
port 3000
|
|
23
|
+
server Waves::Servers::Mongrel
|
|
24
|
+
resource app::Resources::Map
|
|
25
|
+
})
|
|
26
|
+
const_set( :Production, Class.new( self::Development ) {
|
|
27
|
+
log :level => :error, :output => ( "log.#{$$}" ), :rotation => :weekly
|
|
28
|
+
port 80
|
|
29
|
+
host '0.0.0.0'
|
|
30
|
+
server Waves::Servers::Mongrel
|
|
31
|
+
application {
|
|
32
|
+
use Rack::Session::Cookie, :key => 'rack.session',
|
|
33
|
+
# :domain => 'foo.com',
|
|
34
|
+
:path => '/',
|
|
35
|
+
:expire_after => 2592000,
|
|
36
|
+
:secret => 'Change it'
|
|
37
|
+
|
|
38
|
+
run ::Waves::Dispatchers::Default.new
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
}
|
|
44
|
+
Waves << app
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Waves
|
|
2
|
+
|
|
3
|
+
module Helpers
|
|
4
|
+
|
|
5
|
+
module DocType
|
|
6
|
+
|
|
7
|
+
DOCTYPES = {
|
|
8
|
+
:html3 => "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n",
|
|
9
|
+
:html4_transitional =>
|
|
10
|
+
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" " <<
|
|
11
|
+
"\"http://www.w3.org/TR/html4/loose.dtd\">\n",
|
|
12
|
+
:html4_strict =>
|
|
13
|
+
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" " <<
|
|
14
|
+
"\"http://www.w3.org/TR/html4/strict.dtd\">\n",
|
|
15
|
+
:html4_frameset =>
|
|
16
|
+
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" " <<
|
|
17
|
+
"\"http://www.w3.org/TR/html4/frameset.dtd\">\n",
|
|
18
|
+
:xhtml1_transitional =>
|
|
19
|
+
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " <<
|
|
20
|
+
"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n",
|
|
21
|
+
:xhtml1_strict =>
|
|
22
|
+
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" " <<
|
|
23
|
+
"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n",
|
|
24
|
+
:xhtml1_frameset =>
|
|
25
|
+
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" " <<
|
|
26
|
+
"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n",
|
|
27
|
+
:xhtml2 => "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n"
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
def doctype(type) ; self << DOCTYPES[type||:html4_strict] ; end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'helpers/basic'
|
|
2
|
+
require 'helpers/doc_type'
|
|
3
|
+
require 'helpers/layouts'
|
|
4
|
+
require 'helpers/formatting'
|
|
5
|
+
require 'helpers/model'
|
|
6
|
+
require 'helpers/view'
|
|
7
|
+
require 'helpers/form'
|
|
8
|
+
|
|
9
|
+
module Waves
|
|
10
|
+
module Helpers
|
|
11
|
+
module Extended
|
|
12
|
+
include Waves::Helpers::Basic
|
|
13
|
+
include Waves::Helpers::DocType
|
|
14
|
+
include Waves::Helpers::Layouts
|
|
15
|
+
include Waves::Helpers::Formatting
|
|
16
|
+
include Waves::Helpers::Model
|
|
17
|
+
include Waves::Helpers::View
|
|
18
|
+
include Waves::Helpers::Form
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
data/lib/helpers/form.rb
CHANGED
|
@@ -15,7 +15,9 @@ module Waves
|
|
|
15
15
|
# will invoke the +text+ form view (the template in +templates/form/text.mab+),
|
|
16
16
|
# passing in the name ('blog.title') and the value (@blog.title) as instance variables.
|
|
17
17
|
#
|
|
18
|
-
# These helpers
|
|
18
|
+
# These helpers work best with Markaby, but may work for other Renderers.
|
|
19
|
+
#
|
|
20
|
+
|
|
19
21
|
module Form
|
|
20
22
|
|
|
21
23
|
# This method really is a place-holder for common wrappers around groups of
|