trellis 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/Manifest.txt +1 -0
- data/examples/sessions/source/sessions.rb +42 -0
- data/lib/trellis/trellis.rb +26 -5
- data/lib/trellis/version.rb +1 -1
- metadata +3 -2
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 0.0.6
|
2
|
+
* 2 major enhancement:
|
3
|
+
* added dup.call for thread safety
|
4
|
+
* added ability to select Rack::Session middleware implementation
|
5
|
+
between cookie, pool and memcached
|
6
|
+
|
1
7
|
== 0.0.5
|
2
8
|
* 2 major enhancements:
|
3
9
|
* template can now use erb (erubis using Processing Instructions (PI))
|
data/Manifest.txt
CHANGED
@@ -84,6 +84,7 @@ examples/hilo/html/guess.xhtml
|
|
84
84
|
examples/hilo/html/start.xhtml
|
85
85
|
examples/hilo/source/hilo.rb
|
86
86
|
examples/routing/source/routing.rb
|
87
|
+
examples/sessions/source/sessions.rb
|
87
88
|
examples/simplest/source/simplest.rb
|
88
89
|
examples/stateful_counters/html/counters.xhtml
|
89
90
|
examples/stateful_counters/html/style/main.css
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'trellis'
|
3
|
+
|
4
|
+
include Trellis
|
5
|
+
|
6
|
+
module Sessions
|
7
|
+
|
8
|
+
class Sessions < Application
|
9
|
+
home :start
|
10
|
+
|
11
|
+
session :pool, { :key => 'rack.session', :path => '/', :expire_after => 2592000 }
|
12
|
+
end
|
13
|
+
|
14
|
+
class Start < Page
|
15
|
+
persistent :results
|
16
|
+
|
17
|
+
def on_select
|
18
|
+
logger.info "processing on_select"
|
19
|
+
@results = rand(9)
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
template do # using Markaby
|
24
|
+
xhtml_strict {
|
25
|
+
head { title "Simplest Trellis Application" }
|
26
|
+
body {
|
27
|
+
h1 "Persistent Fields via Session"
|
28
|
+
p "This application uses Rack::Session::Pool for in-memory, cookie backed HTTP sessions"
|
29
|
+
p {
|
30
|
+
text "The value is: "
|
31
|
+
text %[<trellis:value name="results">${results}.</trellis:value>]
|
32
|
+
}
|
33
|
+
p {
|
34
|
+
text %[[<trellis:action_link>Click Me</trellis:action_link>]]
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
Sessions.new.start 3012 if __FILE__ == $PROGRAM_NAME
|
42
|
+
end
|
data/lib/trellis/trellis.rb
CHANGED
@@ -40,6 +40,7 @@ require 'bluecloth'
|
|
40
40
|
require 'facets'
|
41
41
|
require 'directory_watcher'
|
42
42
|
require 'erubis'
|
43
|
+
require 'ostruct'
|
43
44
|
|
44
45
|
module Trellis
|
45
46
|
|
@@ -54,8 +55,10 @@ module Trellis
|
|
54
55
|
# holding homepage, dependent pages, static resource routing paths
|
55
56
|
def self.inherited(child) #:nodoc:
|
56
57
|
child.class_attr_reader(:homepage)
|
58
|
+
child.class_attr_reader(:session_config)
|
57
59
|
child.attr_array(:static_routes)
|
58
60
|
child.meta_def(:logger) { Application.logger }
|
61
|
+
child.instance_variable_set(:@session_config, OpenStruct.new({:impl => :cookie}))
|
59
62
|
super
|
60
63
|
end
|
61
64
|
|
@@ -63,6 +66,10 @@ module Trellis
|
|
63
66
|
# the entry point is the URL pattern / where the application is mounted
|
64
67
|
def self.home(sym)
|
65
68
|
@homepage = sym
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.session(sym, options={})
|
72
|
+
@session_config = OpenStruct.new({:impl => sym, :options => options})
|
66
73
|
end
|
67
74
|
|
68
75
|
# define url paths for static resources
|
@@ -77,7 +84,7 @@ module Trellis
|
|
77
84
|
directory_watcher = configure_directory_watcher
|
78
85
|
directory_watcher.start
|
79
86
|
|
80
|
-
Rack::Handler::Mongrel.run
|
87
|
+
Rack::Handler::Mongrel.run configured, :Port => port do |server|
|
81
88
|
trap(:INT) do
|
82
89
|
Application.logger.info "Exiting Trellis Application #{self.class}"
|
83
90
|
directory_watcher.stop
|
@@ -88,13 +95,23 @@ module Trellis
|
|
88
95
|
Application.logger.warn "#{ e } (#{ e.class })!"
|
89
96
|
end
|
90
97
|
|
91
|
-
def
|
98
|
+
def configured
|
92
99
|
# configure rack middleware
|
93
100
|
application = Rack::ShowStatus.new(self)
|
94
101
|
application = Rack::ShowExceptions.new(application)
|
95
102
|
application = Rack::Reloader.new(application)
|
96
103
|
application = Rack::CommonLogger.new(application, Application.logger)
|
97
|
-
|
104
|
+
|
105
|
+
# configure rack session
|
106
|
+
session_config = self.class.session_config
|
107
|
+
case session_config.impl
|
108
|
+
when :pool
|
109
|
+
application = Rack::Session::Pool.new(application, session_config.options)
|
110
|
+
when :memcached
|
111
|
+
application = Rack::Session::Memcache.new(application, session_config.options)
|
112
|
+
else
|
113
|
+
application = Rack::Session::Cookie.new(application)
|
114
|
+
end
|
98
115
|
|
99
116
|
# set all static resource paths
|
100
117
|
self.class.static_routes.each do |path|
|
@@ -109,8 +126,13 @@ module Trellis
|
|
109
126
|
match ? match.router : DefaultRouter.new(:application => self)
|
110
127
|
end
|
111
128
|
|
112
|
-
#
|
129
|
+
# Rack call interface.
|
113
130
|
def call(env)
|
131
|
+
dup.call!(env)
|
132
|
+
end
|
133
|
+
|
134
|
+
# implements the rack specification
|
135
|
+
def call!(env)
|
114
136
|
response = Rack::Response.new
|
115
137
|
request = Rack::Request.new(env)
|
116
138
|
|
@@ -654,7 +676,6 @@ module Trellis
|
|
654
676
|
unless @page.class.format == :eruby
|
655
677
|
@parser.parse(@page.class.parsed_template.to_html)
|
656
678
|
else
|
657
|
-
puts "eruby context is #{@eruby_context}"
|
658
679
|
preprocessed = Erubis::PI::Eruby.new(@page.class.parsed_template.to_html, :trim => false).evaluate(@eruby_context)
|
659
680
|
@parser.parse(preprocessed)
|
660
681
|
end
|
data/lib/trellis/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trellis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Sam-Bodden
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-09 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -313,6 +313,7 @@ files:
|
|
313
313
|
- examples/hilo/html/start.xhtml
|
314
314
|
- examples/hilo/source/hilo.rb
|
315
315
|
- examples/routing/source/routing.rb
|
316
|
+
- examples/sessions/source/sessions.rb
|
316
317
|
- examples/simplest/source/simplest.rb
|
317
318
|
- examples/stateful_counters/html/counters.xhtml
|
318
319
|
- examples/stateful_counters/html/style/main.css
|