manveru-innate 2009.02.25 → 2009.03.24
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +383 -0
- data/MANIFEST +17 -8
- data/README.md +222 -136
- data/Rakefile +7 -2
- data/example/provides.rb +28 -0
- data/innate.gemspec +19 -10
- data/lib/innate/action.rb +21 -47
- data/lib/innate/adapter.rb +65 -56
- data/lib/innate/cache.rb +16 -8
- data/lib/innate/dynamap.rb +39 -29
- data/lib/innate/helper/aspect.rb +60 -0
- data/lib/innate/helper/cgi.rb +2 -0
- data/lib/innate/helper/link.rb +43 -11
- data/lib/innate/helper/partial.rb +6 -5
- data/lib/innate/helper.rb +10 -13
- data/lib/innate/log/hub.rb +1 -0
- data/lib/innate/log.rb +3 -6
- data/lib/{rack → innate}/middleware_compiler.rb +19 -12
- data/lib/innate/mock.rb +3 -2
- data/lib/innate/node.rb +573 -179
- data/lib/innate/options/dsl.rb +46 -6
- data/lib/innate/options/stub.rb +7 -0
- data/lib/innate/options.rb +14 -93
- data/lib/innate/request.rb +21 -7
- data/lib/innate/response.rb +12 -0
- data/lib/innate/route.rb +2 -3
- data/lib/innate/session.rb +37 -20
- data/lib/innate/spec.rb +4 -0
- data/lib/innate/state/fiber.rb +14 -7
- data/lib/innate/state/thread.rb +10 -2
- data/lib/innate/state.rb +8 -11
- data/lib/innate/traited.rb +14 -6
- data/lib/innate/trinity.rb +0 -4
- data/lib/innate/version.rb +1 -1
- data/lib/innate/view/erb.rb +4 -2
- data/lib/innate/view/none.rb +2 -2
- data/lib/innate/view.rb +14 -21
- data/lib/innate.rb +49 -30
- data/spec/helper.rb +8 -0
- data/spec/innate/action/layout.rb +9 -6
- data/spec/innate/cache/common.rb +3 -3
- data/spec/innate/helper/aspect.rb +3 -5
- data/spec/innate/helper/flash.rb +1 -1
- data/spec/innate/helper/link.rb +45 -2
- data/spec/innate/helper/partial.rb +34 -10
- data/spec/innate/helper/view/loop.erb +1 -1
- data/spec/innate/helper/view/recursive.erb +1 -1
- data/spec/innate/node/mapping.rb +37 -0
- data/spec/innate/node/node.rb +142 -0
- data/spec/innate/node/resolve.rb +82 -0
- data/spec/innate/node/{another_layout → view/another_layout}/another_layout.erb +0 -0
- data/spec/innate/node/{bar.html → view/bar.erb} +0 -0
- data/spec/innate/node/{foo.html.erb → view/foo.html.erb} +0 -0
- data/spec/innate/node/{only_view.html → view/only_view.erb} +0 -0
- data/spec/innate/node/view/with_layout.erb +1 -0
- data/spec/innate/node/wrap_action_call.rb +83 -0
- data/spec/innate/options.rb +28 -6
- data/spec/innate/provides/list.html.erb +1 -0
- data/spec/innate/provides/list.txt.erb +1 -0
- data/spec/innate/provides.rb +99 -0
- data/spec/innate/request.rb +23 -10
- data/spec/innate/route.rb +2 -4
- data/spec/innate/session.rb +1 -1
- data/spec/innate/state/fiber.rb +57 -0
- data/spec/innate/state/thread.rb +40 -0
- metadata +20 -11
- data/lib/rack/reloader.rb +0 -192
- data/spec/innate/node/with_layout.erb +0 -3
- data/spec/innate/node.rb +0 -224
data/lib/innate/helper.rb
CHANGED
@@ -147,11 +147,8 @@ module Innate
|
|
147
147
|
# Innate::HelpersHelper.each_include(self, :cgi, :link, :aspect)
|
148
148
|
# end
|
149
149
|
def each_include(into, *names, &block)
|
150
|
-
return if names.empty?
|
151
|
-
|
152
|
-
into.include(*mods)
|
153
|
-
rescue NoMethodError
|
154
|
-
into.__send__(:include, *mods)
|
150
|
+
return if names.compact.empty?
|
151
|
+
into.__send__(:include, *each(*names, &block))
|
155
152
|
end
|
156
153
|
|
157
154
|
# Based on a simple set of rules we will first construct the most likely
|
@@ -162,10 +159,10 @@ module Innate
|
|
162
159
|
# helper :foo # => Foo
|
163
160
|
def get(name)
|
164
161
|
name = name.to_s.split('_').map{|e| e.capitalize}.join
|
162
|
+
|
165
163
|
POOL.each do |namespace|
|
166
|
-
|
167
|
-
|
168
|
-
end
|
164
|
+
found = namespace.constants.grep(/^#{name}$/i).first
|
165
|
+
return namespace.const_get(found) if found
|
169
166
|
end
|
170
167
|
|
171
168
|
nil
|
@@ -174,11 +171,11 @@ module Innate
|
|
174
171
|
# Figure out files that might have the helper we ask for and then require
|
175
172
|
# the first we find, if any.
|
176
173
|
def try_require(name)
|
177
|
-
found = Dir[glob(name)].first
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
174
|
+
if found = Dir[glob(name)].first
|
175
|
+
require(found) || true
|
176
|
+
else
|
177
|
+
raise(LoadError, "Helper #{name} not found")
|
178
|
+
end
|
182
179
|
end
|
183
180
|
|
184
181
|
# Return a nice list of filenames in correct locations with correct
|
data/lib/innate/log/hub.rb
CHANGED
data/lib/innate/log.rb
CHANGED
@@ -2,13 +2,10 @@ require 'innate/log/hub'
|
|
2
2
|
require 'innate/log/color_formatter'
|
3
3
|
|
4
4
|
module Innate
|
5
|
-
logdev
|
6
|
-
|
7
|
-
color = Logger::ColorFormatter.color?(logdev) if color.nil?
|
5
|
+
logdev = $stderr
|
6
|
+
logger = Logger.new(logdev)
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
if color
|
8
|
+
if Logger::ColorFormatter.color?(logdev)
|
12
9
|
begin
|
13
10
|
require 'win32console' if RUBY_PLATFORM =~ /win32/i
|
14
11
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module Innate
|
2
2
|
class MiddlewareCompiler
|
3
3
|
COMPILED = {}
|
4
4
|
|
@@ -13,15 +13,18 @@ module Rack
|
|
13
13
|
attr_reader :middlewares, :name
|
14
14
|
|
15
15
|
def initialize(name)
|
16
|
-
@name = name
|
16
|
+
@name = name.to_sym
|
17
17
|
@middlewares = []
|
18
18
|
@compiled = nil
|
19
19
|
yield(self) if block_given?
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
def use(app, *args, &block)
|
23
|
+
@middlewares << [app, args, block]
|
24
|
+
end
|
25
|
+
|
26
|
+
def apps(*middlewares)
|
27
|
+
@middlewares.concat(middlewares.map{|mw| [mw, [], nil]})
|
25
28
|
end
|
26
29
|
|
27
30
|
def run(app)
|
@@ -33,12 +36,15 @@ module Rack
|
|
33
36
|
end
|
34
37
|
|
35
38
|
# Default application for Innate
|
36
|
-
def innate
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
def innate(app = Innate::DynaMap, options = Innate.options)
|
40
|
+
roots, publics = options[:roots], options[:publics]
|
41
|
+
|
42
|
+
joined = roots.map{|root| publics.map{|public| ::File.join(root, public)}}
|
43
|
+
|
44
|
+
apps = joined.flatten.map{|pr| Rack::File.new(pr) }
|
45
|
+
apps << Current.new(Route.new(app), Rewrite.new(app))
|
46
|
+
|
47
|
+
cascade(*apps)
|
42
48
|
end
|
43
49
|
|
44
50
|
def static(path)
|
@@ -65,7 +71,8 @@ module Rack
|
|
65
71
|
end
|
66
72
|
|
67
73
|
def compile!
|
68
|
-
@compiled = @middlewares.inject(@app){|
|
74
|
+
@compiled = @middlewares.inject(@app){|s, (app, args, block)|
|
75
|
+
app.new(s, *args, &block) }
|
69
76
|
self
|
70
77
|
end
|
71
78
|
end
|
data/lib/innate/mock.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Innate
|
2
2
|
module Mock
|
3
3
|
HTTP_METHODS = %w[ CONNECT DELETE GET HEAD OPTIONS POST PUT TRACE ]
|
4
|
+
OPTIONS = {:app => Innate}
|
4
5
|
|
5
6
|
HTTP_METHODS.each do |method|
|
6
7
|
(class << self; self; end).
|
@@ -13,8 +14,8 @@ module Innate
|
|
13
14
|
mock_request.request(method, *args)
|
14
15
|
end
|
15
16
|
|
16
|
-
def self.mock_request
|
17
|
-
Rack::MockRequest.new(
|
17
|
+
def self.mock_request(app = OPTIONS[:app])
|
18
|
+
Rack::MockRequest.new(app)
|
18
19
|
end
|
19
20
|
|
20
21
|
def self.session
|