innate 2009.04 → 2009.04.12

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,165 +1,3 @@
1
- [ffd8edd | Sat Apr 25 14:59:47 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
2
-
3
- * Give innate a rubyforge project
4
-
5
- [cf62a9c | Sat Apr 25 14:59:20 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
6
-
7
- * Version 2009.04
8
-
9
- [0ec2012 | Thu Apr 23 06:21:17 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
10
-
11
- * Allow deletion of mapped apps in DynaMap
12
-
13
- [cbedd9c | Thu Apr 23 05:04:04 UTC 2009] Ryan Grove <ryan@wonko.com>
14
-
15
- * Add path and full_path to Innate::Action
16
-
17
- Signed-off-by: Michael Fellinger <m.fellinger@gmail.com>
18
-
19
- [b9a0d4b | Mon Apr 20 05:12:29 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
20
-
21
- * Make the u and h aliases for the CGI helper module_functions too
22
-
23
- [b68aad4 | Mon Apr 20 05:12:10 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
24
-
25
- * Allow further modification of the Action in the render_* methods via block
26
-
27
- [dca3531 | Sun Apr 19 23:38:06 UTC 2009] Ryan Grove <ryan@wonko.com>
28
-
29
- * Preserve response headers when redirecting. Closes #1
30
-
31
- Signed-off-by: Michael Fellinger <m.fellinger@gmail.com>
32
-
33
- [d465ca3 | Sat Apr 18 02:46:09 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
34
-
35
- * Version 2009.04.18
36
-
37
- [987c5d7 | Sat Apr 18 02:44:26 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
38
-
39
- * Update the release tasks
40
-
41
- [f927c9d | Fri Apr 17 11:51:35 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
42
-
43
- * Add Content-Disposition support to send_file
44
-
45
- [888318c | Fri Apr 17 10:43:10 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
46
-
47
- * Better English in render_custom error
48
-
49
- [15078e6 | Wed Apr 15 16:49:04 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
50
-
51
- * Add comment about planned deprecation of SendFile helper's default status
52
-
53
- [4b487aa | Wed Apr 15 16:48:09 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
54
-
55
- * Remove the length from Response, Rack provides that
56
-
57
- [1634391 | Wed Apr 15 11:02:11 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
58
-
59
- * Don't camel-case the helper module name, simply remove underscores, we do case-insensitive lookup anyway
60
-
61
- [f97e8d7 | Wed Apr 15 10:58:35 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
62
-
63
- * Remove core_extensions, we don't need String#each or BasicObject anymore
64
-
65
- [0b33546 | Wed Apr 15 09:16:24 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
66
-
67
- * Action may be invalid if the node requires a method and view
68
-
69
- [39dd843 | Wed Apr 15 09:15:30 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
70
-
71
- * Escape non-hash arguments to Helper::Link#route (ryan grove)
72
-
73
- [22ee4df | Wed Apr 15 07:25:02 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
74
-
75
- * Raise if the Render helper cannot obtain an Action
76
-
77
- [e229299 | Mon Apr 13 12:48:05 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
78
-
79
- * Allow Action#call even if we are outside Current#wrap
80
-
81
- [b6e9558 | Mon Apr 13 04:37:42 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
82
-
83
- * Remove Action#exts member and use better terms
84
-
85
- [46d2a5e | Sun Apr 12 05:03:58 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
86
-
87
- * FileBased caches have access to @filename now
88
-
89
- [f84f18f | Sun Apr 12 05:03:39 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
90
-
91
- * Set a PROJECT_README for some rake tasks
92
-
93
- [8920482 | Sun Apr 12 05:03:21 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
94
-
95
- * Improvment and spec for provide example
96
-
97
- [a892dea | Sun Apr 12 05:02:50 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
98
-
99
- * Minor improvment and spec for retro games example
100
-
101
- [b3aeb97 | Fri Apr 10 12:30:08 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
102
-
103
- * Allow overriding of middleware mode for specs
104
-
105
- [7d65255 | Fri Apr 10 12:07:15 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
106
-
107
- * Compact code
108
-
109
- [cde9366 | Fri Apr 10 10:51:03 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
110
-
111
- * Simplify specs and make them pass using rack-test
112
-
113
- [f4c9572 | Fri Apr 10 10:50:34 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
114
-
115
- * Don't forget to specify an app for rack-test
116
-
117
- [41b1955 | Fri Apr 10 10:17:42 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
118
-
119
- * Remove spec for render_template
120
-
121
- [a3b73ca | Fri Apr 10 10:17:27 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
122
-
123
- * Add `rake setup` task to comply to convention. I will put up the corresponding gems ASAP
124
-
125
- [c648bf7 | Fri Apr 10 10:16:12 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
126
-
127
- * Switch to using rack-test for our specs, needs rack-test from the master branch head
128
-
129
- [5c08e25 | Thu Apr 09 17:52:28 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
130
-
131
- * Use ContentLength middleware
132
-
133
- [0dc50d4 | Thu Apr 09 16:10:51 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
134
-
135
- * Fix template caching... was using html instead of the wish the glob was for
136
-
137
- [622bbe3 | Thu Apr 09 16:01:08 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
138
-
139
- * Fix example apps
140
-
141
- [6e9e843 | Tue Apr 07 09:56:56 UTC 2009] Sam Carr <samcarr@gmail.com>
142
-
143
- * Minor tidy-ups to fix comments, add missing requires, add comments etc.
144
-
145
- Signed-off-by: Michael Fellinger <m.fellinger@gmail.com>
146
-
147
- [8f9af98 | Tue Apr 07 18:42:35 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
148
-
149
- * Set default interval for reloader to 2 seconds
150
-
151
- [9f7e749 | Tue Apr 07 18:42:14 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
152
-
153
- * Never assign $0, bad mojo
154
-
155
- [281501e | Tue Apr 07 17:53:08 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
156
-
157
- * Don't assign a directory to $0
158
-
159
- [8a2ddc7 | Tue Apr 07 17:16:37 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
160
-
161
- * Version 2009.04.08
162
-
163
1
  [89ab244 | Tue Apr 07 16:17:07 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
164
2
 
165
3
  * bring the retro_games example up to date
data/MANIFEST CHANGED
@@ -4,10 +4,10 @@ MANIFEST
4
4
  README.md
5
5
  Rakefile
6
6
  example/app/retro_games.rb
7
- example/app/todo/layout/default.xhtml
7
+ example/app/todo/layout/default.erb
8
8
  example/app/todo/spec/todo.rb
9
9
  example/app/todo/start.rb
10
- example/app/todo/view/index.xhtml
10
+ example/app/todo/view/index.erb
11
11
  example/app/whywiki_erb/layout/wiki.html.erb
12
12
  example/app/whywiki_erb/spec/wiki.rb
13
13
  example/app/whywiki_erb/start.rb
@@ -30,6 +30,8 @@ lib/innate/cache/file_based.rb
30
30
  lib/innate/cache/marshal.rb
31
31
  lib/innate/cache/memory.rb
32
32
  lib/innate/cache/yaml.rb
33
+ lib/innate/core_compatibility/basic_object.rb
34
+ lib/innate/core_compatibility/string.rb
33
35
  lib/innate/current.rb
34
36
  lib/innate/dynamap.rb
35
37
  lib/innate/helper.rb
@@ -66,10 +68,8 @@ lib/innate/view.rb
66
68
  lib/innate/view/erb.rb
67
69
  lib/innate/view/etanni.rb
68
70
  lib/innate/view/none.rb
69
- spec/example/app/retro_games.rb
70
71
  spec/example/hello.rb
71
72
  spec/example/link.rb
72
- spec/example/provides.rb
73
73
  spec/example/session.rb
74
74
  spec/helper.rb
75
75
  spec/innate/action/layout.rb
@@ -124,4 +124,3 @@ tasks/manifest.rake
124
124
  tasks/rcov.rake
125
125
  tasks/release.rake
126
126
  tasks/reversion.rake
127
- tasks/setup.rake
data/README.md CHANGED
@@ -67,7 +67,7 @@ encourages everybody to build on top of it whatever they want.
67
67
  * No clutter in your application directory structure, scales from a single file
68
68
  upwards
69
69
  * Seamless integration with Rack middleware
70
- * No patching of ruby core or stdlib.
70
+ * No patching[4] of ruby core or stdlib.
71
71
  * Direct access to the current Request, Response, and Session from anywhere via
72
72
  Trinity
73
73
  * Works out of the box with ERB the templating engine.
@@ -77,6 +77,7 @@ encourages everybody to build on top of it whatever they want.
77
77
  [1]: What you may think of as Controller.
78
78
  [2]: This includes: Ruby 1.8, Ruby 1.9.1, JRuby, Rubinius
79
79
  [3]: Fiber is available on 1.9 only at this point.
80
+ [4]: However, we add String#each if it isn't there to be compatible with Rack.
80
81
 
81
82
  ## Usage
82
83
 
@@ -448,6 +449,13 @@ authorization, etc.
448
449
 
449
450
  Innate abandons the snippets, keeping your core clean.
450
451
 
452
+ Two things that we need are (currently) String#each, because Rack relies on it,
453
+ and BasicObject as superclass for the Option class. They are only applied on
454
+ demand.
455
+
456
+ These are in the directory called core_extensions, to make it very, very clear
457
+ what we are doing and how we are doing it.
458
+
451
459
  Ramaze has still a lot of these snippets and will continue to, although I will
452
460
  constantly strive to reduce them slowly.
453
461
 
data/Rakefile CHANGED
@@ -4,7 +4,9 @@ require 'rake/gempackagetask'
4
4
  require 'time'
5
5
  require 'date'
6
6
 
7
- PROJECT_SPECS = FileList['spec/{innate,example}/**/*.rb'].exclude('common.rb')
7
+ specs = Dir['spec/{innate,example}/**/*.rb']
8
+ specs -= Dir['spec/innate/cache/common.rb']
9
+ PROJECT_SPECS = specs
8
10
  PROJECT_MODULE = 'Innate'
9
11
  PROJECT_README = 'README.md'
10
12
 
@@ -20,7 +22,6 @@ GEMSPEC = Gem::Specification.new{|s|
20
22
  s.files = `git ls-files`.split("\n").sort
21
23
  s.has_rdoc = true
22
24
  s.require_path = 'lib'
23
- s.rubyforge_project = "innate"
24
25
 
25
26
  # s.add_runtime_dependency('rack', '>= 0.9.1') # lies!
26
27
  # s.add_development_dependency('bacon', '>= 1.0')
data/innate.gemspec CHANGED
@@ -2,24 +2,23 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{innate}
5
- s.version = "2009.04"
5
+ s.version = "2009.04.08"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Michael 'manveru' Fellinger"]
9
- s.date = %q{2009-04-26}
9
+ s.date = %q{2009-04-08}
10
10
  s.description = %q{Simple, straight-forward base for web-frameworks.}
11
11
  s.email = %q{m.fellinger@gmail.com}
12
- s.files = ["CHANGELOG", "COPYING", "MANIFEST", "README.md", "Rakefile", "example/app/retro_games.rb", "example/app/todo/layout/default.xhtml", "example/app/todo/spec/todo.rb", "example/app/todo/start.rb", "example/app/todo/view/index.xhtml", "example/app/whywiki_erb/layout/wiki.html.erb", "example/app/whywiki_erb/spec/wiki.rb", "example/app/whywiki_erb/start.rb", "example/app/whywiki_erb/view/edit.erb", "example/app/whywiki_erb/view/index.erb", "example/custom_middleware.rb", "example/hello.rb", "example/howto_spec.rb", "example/link.rb", "example/provides.rb", "example/session.rb", "innate.gemspec", "lib/innate.rb", "lib/innate/action.rb", "lib/innate/adapter.rb", "lib/innate/cache.rb", "lib/innate/cache/api.rb", "lib/innate/cache/drb.rb", "lib/innate/cache/file_based.rb", "lib/innate/cache/marshal.rb", "lib/innate/cache/memory.rb", "lib/innate/cache/yaml.rb", "lib/innate/current.rb", "lib/innate/dynamap.rb", "lib/innate/helper.rb", "lib/innate/helper/aspect.rb", "lib/innate/helper/cgi.rb", "lib/innate/helper/flash.rb", "lib/innate/helper/link.rb", "lib/innate/helper/redirect.rb", "lib/innate/helper/render.rb", "lib/innate/helper/send_file.rb", "lib/innate/log.rb", "lib/innate/log/color_formatter.rb", "lib/innate/log/hub.rb", "lib/innate/middleware_compiler.rb", "lib/innate/mock.rb", "lib/innate/node.rb", "lib/innate/options.rb", "lib/innate/options/dsl.rb", "lib/innate/options/stub.rb", "lib/innate/request.rb", "lib/innate/response.rb", "lib/innate/route.rb", "lib/innate/session.rb", "lib/innate/session/flash.rb", "lib/innate/spec.rb", "lib/innate/state.rb", "lib/innate/state/accessor.rb", "lib/innate/state/fiber.rb", "lib/innate/state/thread.rb", "lib/innate/traited.rb", "lib/innate/trinity.rb", "lib/innate/version.rb", "lib/innate/view.rb", "lib/innate/view/erb.rb", "lib/innate/view/etanni.rb", "lib/innate/view/none.rb", "spec/example/app/retro_games.rb", "spec/example/hello.rb", "spec/example/link.rb", "spec/example/provides.rb", "spec/example/session.rb", "spec/helper.rb", "spec/innate/action/layout.rb", "spec/innate/action/layout/file_layout.xhtml", "spec/innate/cache/common.rb", "spec/innate/cache/marshal.rb", "spec/innate/cache/memory.rb", "spec/innate/cache/yaml.rb", "spec/innate/dynamap.rb", "spec/innate/helper.rb", "spec/innate/helper/aspect.rb", "spec/innate/helper/cgi.rb", "spec/innate/helper/flash.rb", "spec/innate/helper/link.rb", "spec/innate/helper/redirect.rb", "spec/innate/helper/render.rb", "spec/innate/helper/send_file.rb", "spec/innate/helper/view/aspect_hello.xhtml", "spec/innate/helper/view/locals.xhtml", "spec/innate/helper/view/loop.xhtml", "spec/innate/helper/view/num.xhtml", "spec/innate/helper/view/partial.xhtml", "spec/innate/helper/view/recursive.xhtml", "spec/innate/mock.rb", "spec/innate/node/mapping.rb", "spec/innate/node/node.rb", "spec/innate/node/resolve.rb", "spec/innate/node/view/another_layout/another_layout.xhtml", "spec/innate/node/view/bar.xhtml", "spec/innate/node/view/foo.html.xhtml", "spec/innate/node/view/only_view.xhtml", "spec/innate/node/view/with_layout.xhtml", "spec/innate/node/wrap_action_call.rb", "spec/innate/options.rb", "spec/innate/parameter.rb", "spec/innate/provides.rb", "spec/innate/provides/list.html.xhtml", "spec/innate/provides/list.txt.xhtml", "spec/innate/request.rb", "spec/innate/route.rb", "spec/innate/session.rb", "spec/innate/state/fiber.rb", "spec/innate/state/thread.rb", "spec/innate/traited.rb", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/gem.rake", "tasks/gem_installer.rake", "tasks/grancher.rake", "tasks/install_dependencies.rake", "tasks/manifest.rake", "tasks/rcov.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/setup.rake"]
12
+ s.files = ["CHANGELOG", "COPYING", "MANIFEST", "README.md", "Rakefile", "example/app/retro_games.rb", "example/app/todo/layout/default.erb", "example/app/todo/spec/todo.rb", "example/app/todo/start.rb", "example/app/todo/view/index.erb", "example/app/whywiki_erb/layout/wiki.html.erb", "example/app/whywiki_erb/spec/wiki.rb", "example/app/whywiki_erb/start.rb", "example/app/whywiki_erb/view/edit.erb", "example/app/whywiki_erb/view/index.erb", "example/custom_middleware.rb", "example/hello.rb", "example/howto_spec.rb", "example/link.rb", "example/provides.rb", "example/session.rb", "innate.gemspec", "lib/innate.rb", "lib/innate/action.rb", "lib/innate/adapter.rb", "lib/innate/cache.rb", "lib/innate/cache/api.rb", "lib/innate/cache/drb.rb", "lib/innate/cache/file_based.rb", "lib/innate/cache/marshal.rb", "lib/innate/cache/memory.rb", "lib/innate/cache/yaml.rb", "lib/innate/core_compatibility/basic_object.rb", "lib/innate/core_compatibility/string.rb", "lib/innate/current.rb", "lib/innate/dynamap.rb", "lib/innate/helper.rb", "lib/innate/helper/aspect.rb", "lib/innate/helper/cgi.rb", "lib/innate/helper/flash.rb", "lib/innate/helper/link.rb", "lib/innate/helper/redirect.rb", "lib/innate/helper/render.rb", "lib/innate/helper/send_file.rb", "lib/innate/log.rb", "lib/innate/log/color_formatter.rb", "lib/innate/log/hub.rb", "lib/innate/middleware_compiler.rb", "lib/innate/mock.rb", "lib/innate/node.rb", "lib/innate/options.rb", "lib/innate/options/dsl.rb", "lib/innate/options/stub.rb", "lib/innate/request.rb", "lib/innate/response.rb", "lib/innate/route.rb", "lib/innate/session.rb", "lib/innate/session/flash.rb", "lib/innate/spec.rb", "lib/innate/state.rb", "lib/innate/state/accessor.rb", "lib/innate/state/fiber.rb", "lib/innate/state/thread.rb", "lib/innate/traited.rb", "lib/innate/trinity.rb", "lib/innate/version.rb", "lib/innate/view.rb", "lib/innate/view/erb.rb", "lib/innate/view/etanni.rb", "lib/innate/view/none.rb", "spec/example/hello.rb", "spec/example/link.rb", "spec/example/session.rb", "spec/helper.rb", "spec/innate/action/layout.rb", "spec/innate/action/layout/file_layout.xhtml", "spec/innate/cache/common.rb", "spec/innate/cache/marshal.rb", "spec/innate/cache/memory.rb", "spec/innate/cache/yaml.rb", "spec/innate/dynamap.rb", "spec/innate/helper.rb", "spec/innate/helper/aspect.rb", "spec/innate/helper/cgi.rb", "spec/innate/helper/flash.rb", "spec/innate/helper/link.rb", "spec/innate/helper/redirect.rb", "spec/innate/helper/render.rb", "spec/innate/helper/send_file.rb", "spec/innate/helper/view/aspect_hello.xhtml", "spec/innate/helper/view/locals.xhtml", "spec/innate/helper/view/loop.xhtml", "spec/innate/helper/view/num.xhtml", "spec/innate/helper/view/partial.xhtml", "spec/innate/helper/view/recursive.xhtml", "spec/innate/mock.rb", "spec/innate/node/mapping.rb", "spec/innate/node/node.rb", "spec/innate/node/resolve.rb", "spec/innate/node/view/another_layout/another_layout.xhtml", "spec/innate/node/view/bar.xhtml", "spec/innate/node/view/foo.html.xhtml", "spec/innate/node/view/only_view.xhtml", "spec/innate/node/view/with_layout.xhtml", "spec/innate/node/wrap_action_call.rb", "spec/innate/options.rb", "spec/innate/parameter.rb", "spec/innate/provides.rb", "spec/innate/provides/list.html.xhtml", "spec/innate/provides/list.txt.xhtml", "spec/innate/request.rb", "spec/innate/route.rb", "spec/innate/session.rb", "spec/innate/state/fiber.rb", "spec/innate/state/thread.rb", "spec/innate/traited.rb", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/gem.rake", "tasks/gem_installer.rake", "tasks/grancher.rake", "tasks/install_dependencies.rake", "tasks/manifest.rake", "tasks/rcov.rake", "tasks/release.rake", "tasks/reversion.rake"]
13
13
  s.has_rdoc = true
14
14
  s.homepage = %q{http://github.com/manveru/innate}
15
15
  s.require_paths = ["lib"]
16
- s.rubyforge_project = %q{innate}
17
- s.rubygems_version = %q{1.3.2}
16
+ s.rubygems_version = %q{1.3.1}
18
17
  s.summary = %q{Powerful web-framework wrapper for Rack.}
19
18
 
20
19
  if s.respond_to? :specification_version then
21
20
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
22
- s.specification_version = 3
21
+ s.specification_version = 2
23
22
 
24
23
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
25
24
  else
data/lib/innate.rb CHANGED
@@ -3,7 +3,11 @@
3
3
  #
4
4
  # Name-space of Innate, just about everything goes in here.
5
5
  #
6
- # The only exception is Logger::ColorFormatter.
6
+ # Exceptions are:
7
+ #
8
+ # * Logger::ColorFormatter
9
+ # * In 1.8, we define ::BasicObject
10
+ # * In 1.9, we define ::String#each
7
11
  #
8
12
  module Innate
9
13
  ROOT = File.expand_path(File.dirname(__FILE__))
@@ -26,6 +30,10 @@ module Innate
26
30
  # 3rd party
27
31
  require 'rack'
28
32
 
33
+ # innate's ruby core patches
34
+ require 'innate/core_compatibility/string'
35
+ require 'innate/core_compatibility/basic_object'
36
+
29
37
  # innate core
30
38
  require 'innate/version'
31
39
  require 'innate/traited'
data/lib/innate/action.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Innate
2
- ACTION_MEMBERS = [ :node, :instance, :method, :params, :method_value, :view,
3
- :view_value, :layout, :wish, :options, :variables, :engine, :path ]
2
+ ACTION_MEMBERS = [ :node, :method, :params, :view, :layout, :instance, :exts,
3
+ :wish, :options, :variables, :value, :view_value, :engine ]
4
4
 
5
5
  class Action < Struct.new(*ACTION_MEMBERS)
6
6
  # Create a new Action instance.
@@ -32,7 +32,10 @@ module Innate
32
32
  # @api stable
33
33
  # @author manveru
34
34
  def call
35
- Current.actions ? wrap_in_current{ render } : render
35
+ Current.actions << self
36
+ render
37
+ ensure
38
+ Current.actions.delete(self)
36
39
  end
37
40
 
38
41
  # @return [Binding] binding of the instance for this Action
@@ -98,11 +101,11 @@ module Innate
98
101
 
99
102
  instance.wrap_action_call(self) do
100
103
  copy_variables # this might need another position after all
101
- self.method_value = instance.__send__(method, *params) if method
102
- self.view_value = ::File.read(view) if view
104
+ self.value = instance.__send__(method, *params) if method
105
+ self.view_value = File.read(view) if view
103
106
 
104
107
  body, content_type = wrap_in_layout{
105
- engine.call(self, view_value || method_value || '') }
108
+ engine.call(self, view_value || value || '') }
106
109
  options[:content_type] ||= content_type if content_type
107
110
  body
108
111
  end
@@ -125,26 +128,13 @@ module Innate
125
128
  [:layout, :view].include?(name) ? [arg, nil] : [nil, arg]
126
129
  end
127
130
 
128
- def wrap_in_current
129
- Current.actions << self
130
- yield
131
- ensure
132
- Current.actions.delete(self)
133
- end
134
-
135
131
  # Try to figure out a sane name for current action.
136
132
  def name
137
133
  File.basename((method || view).to_s).split('.').first
138
134
  end
139
135
 
140
- # Path to this action, including params, with the mapping of the current
141
- # controller prepended.
142
- def full_path
143
- File.join(node.mapping, path)
144
- end
145
-
146
136
  def valid?
147
- node.needs_method? ? (method && view) : (method || view)
137
+ method || view
148
138
  end
149
139
  end
150
140
  end
@@ -0,0 +1,10 @@
1
+ # We define BasicObject for compatibility with 1.9 if it isn't there yet.
2
+ class BasicObject
3
+ # Remove all but these methods
4
+ # NOTE: __id__ is not there in 1.9, but would give a warning in 1.8
5
+ KEEP = %w[== equal? ! != instance_eval instance_exec __send__ __id__]
6
+
7
+ (instance_methods - KEEP).each do |im|
8
+ undef_method(im)
9
+ end
10
+ end unless defined?(BasicObject)
@@ -0,0 +1,3 @@
1
+ class String # Dirty hack, but Rack needs it?
2
+ alias each each_line unless 'String'.respond_to?(:each)
3
+ end
@@ -18,11 +18,6 @@ module Innate
18
18
  remap(@originals.merge(location.to_s => object))
19
19
  end
20
20
 
21
- def delete(location)
22
- @originals.delete(location)
23
- remap(@originals)
24
- end
25
-
26
21
  def at(location)
27
22
  @originals[location]
28
23
  end
data/lib/innate/helper.rb CHANGED
@@ -152,10 +152,10 @@ module Innate
152
152
  # helper :foo_bar # => FooBar
153
153
  # helper :foo # => Foo
154
154
  def get(name)
155
- module_name = /^#{name.to_s.dup.delete('_')}$/i
155
+ name = name.to_s.split('_').map{|e| e.capitalize}.join
156
156
 
157
157
  options.namespaces.each do |namespace|
158
- found = namespace.constants.grep(module_name).first
158
+ found = namespace.constants.grep(/^#{name}$/i).first
159
159
  return namespace.const_get(found) if found
160
160
  end
161
161
 
@@ -46,9 +46,6 @@ module Innate
46
46
  Rack::Utils.escape_html(input.to_s).gsub(/#([{@$]@?)/, '&#35;\1')
47
47
  end
48
48
  alias h html_and_code_escape
49
-
50
- # aliases are ignored by module_function...
51
- module_function :u, :h
52
49
  end
53
50
  end
54
51
  end
@@ -28,12 +28,12 @@ module Innate
28
28
  hashes, names = args.partition{|arg| arg.respond_to?(:merge!) }
29
29
  hashes.each{|to_merge| hash.merge!(to_merge) }
30
30
 
31
- escape = Rack::Utils.method(:escape)
32
31
  location = route_location(self)
33
- front = Array[location, name, *names.map{|n| escape[n]}].join('/').squeeze('/')
32
+ front = Array[location, name, *names].join('/').squeeze('/')
34
33
 
35
34
  return URI(front) if hash.empty?
36
35
 
36
+ escape = Rack::Utils.method(:escape)
37
37
  query = hash.map{|k, v| "#{escape[k]}=#{escape[v]}" }.join(';')
38
38
  URI("#{front}?#{query}")
39
39
  end
@@ -57,7 +57,7 @@ module Innate
57
57
  end
58
58
 
59
59
  def raw_redirect(target, options = {}, &block)
60
- header = response.header.merge('Location' => target.to_s)
60
+ header = {'Location' => target.to_s}
61
61
  status = options[:status] || 302
62
62
  body = options[:body] || redirect_body(target)
63
63
 
@@ -38,21 +38,17 @@ module Innate
38
38
  end
39
39
 
40
40
  # Renders an action without any layout.
41
- # You can further tweak the action to be rendered by passing a block.
42
- #
43
41
  # @api external
44
42
  # @see render_custom
45
43
  # @author manveru
46
44
  def render_partial(action_name, variables = {})
47
45
  render_custom(action_name, variables) do |action|
48
46
  action.layout = nil
49
- yield(action) if block_given?
50
47
  end
51
48
  end
52
49
 
53
50
  # Renders an action view, doesn't execute any methods and won't wrap it
54
51
  # into a layout.
55
- # You can further tweak the action to be rendered by passing a block.
56
52
  #
57
53
  # @api external
58
54
  # @see render_custom
@@ -61,14 +57,11 @@ module Innate
61
57
  render_custom(action_name, variables) do |action|
62
58
  action.layout = nil
63
59
  action.method = nil
64
- yield(action) if block_given?
65
60
  end
66
61
  end
67
62
 
68
63
  def render_custom(action_name, variables = {})
69
- unless action = resolve(action_name.to_s)
70
- raise(ArgumentError, "No Action %p on #{self}" % action_name)
71
- end
64
+ action = resolve(action_name.to_s)
72
65
 
73
66
  action.sync_variables(self.action)
74
67
  action.instance = action.node.new
@@ -3,20 +3,12 @@ module Innate
3
3
  module SendFile
4
4
  # Not optimally performing but convenient way to send files by their
5
5
  # filename.
6
- #
7
- # I think we should remove this from the default helpers and move it into
8
- # Ramaze, the functionality is almost never used, the naming is ambigous,
9
- # and it doesn't use the send_file capabilities of frontend servers.
10
- #
11
- # So for now, I'll mark it for deprecation
12
- def send_file(filename, content_type = nil, content_disposition = nil)
6
+ def send_file(filename, content_type = nil)
13
7
  content_type ||= Rack::Mime.mime_type(::File.extname(filename))
14
- content_disposition ||= File.basename(filename)
15
8
 
16
9
  response.body = ::File.readlines(filename, 'rb')
17
10
  response['Content-Length'] = ::File.size(filename).to_s
18
11
  response['Content-Type'] = content_type
19
- response['Content-Disposition'] = content_disposition
20
12
  response.status = 200
21
13
 
22
14
  throw(:respond, response)
data/lib/innate/node.rb CHANGED
@@ -364,7 +364,7 @@ module Innate
364
364
  def resolve(path)
365
365
  name, wish, engine = find_provide(path)
366
366
  node = (respond_to?(:ancestors) && respond_to?(:new)) ? self : self.class
367
- action = Action.create(:node => node, :wish => wish, :engine => engine, :path => path)
367
+ action = Action.create(:node => node, :wish => wish, :engine => engine)
368
368
 
369
369
  if content_type = node.ancestral_trait["#{wish}_content_type"]
370
370
  action.options = {:content_type => content_type}
@@ -1,4 +1,9 @@
1
1
  module Innate
2
+
3
+ # In order to reset the body contents we also need to reset the length set by
4
+ # Response#write - until I can submit a patch to Rack and the next release we
5
+ # just do this.
6
+
2
7
  class Response < Rack::Response
3
8
  include Optioned
4
9
 
@@ -7,6 +12,8 @@ module Innate
7
12
  :headers, {'Content-Type' => 'text/html'}
8
13
  end
9
14
 
15
+ attr_accessor :length
16
+
10
17
  def reset
11
18
  self.status = 200
12
19
  self.header.delete('Content-Type')
@@ -1,3 +1,3 @@
1
1
  module Innate
2
- VERSION = "2009.04"
2
+ VERSION = "2009.04.08"
3
3
  end
@@ -56,14 +56,6 @@ describe Innate::Helper::Link do
56
56
  Two.route(:foo, :bar).should == URI('/two/foo/bar')
57
57
  end
58
58
 
59
- should 'respond with URI for node with path /foo/bar+baz' do
60
- One.route('/foo/bar+baz').should == URI('/foo/bar+baz')
61
- One.route(:foo, 'bar baz').should == URI('/foo/bar+baz')
62
-
63
- Two.route('/foo/bar+baz').should == URI('/two/foo/bar+baz')
64
- Two.route(:foo, 'bar baz').should == URI('/two/foo/bar+baz')
65
- end
66
-
67
59
  should 'respond with URI for node with GET params' do
68
60
  One.route('/', :a => :b).should == URI('/?a=b')
69
61
 
data/tasks/release.rake CHANGED
@@ -1,51 +1,12 @@
1
- namespace :release do
2
- task :all => [:release_github, :release_rubyforge]
1
+ desc 'publish to github'
2
+ task :release => [:reversion, :gemspec] do
3
+ name, version = GEMSPEC.name, GEMSPEC.version
3
4
 
4
- desc 'Display instructions to release on github'
5
- task :github => [:reversion, :gemspec] do
6
- name, version = GEMSPEC.name, GEMSPEC.version
5
+ sh("git add MANIFEST CHANGELOG #{name}.gemspec lib/#{name}/version.rb")
7
6
 
8
- puts <<INSTRUCTIONS
9
- First add the relevant files:
10
-
11
- git add MANIFEST CHANGELOG #{name}.gemspec lib/#{name}/version.rb
12
-
13
- Then commit them, tag the commit, and push:
14
-
15
- git commit -m 'Version #{version}'
16
- git tag -a -m '#{version}' '#{version}'
17
- git push
18
-
19
- INSTRUCTIONS
20
-
21
- end
22
-
23
- # TODO: Not tested
24
- desc 'Display instructions to release on rubyforge'
25
- task :rubyforge => [:reversion, :gemspec, :package] do
26
- name, version = GEMSPEC.name, GEMSPEC.version
27
-
28
- puts <<INSTRUCTIONS
29
- To publish to rubyforge do following:
30
-
31
- rubyforge login
32
- rubyforge add_release #{name} '#{version}' pkg/#{name}-#{version}.gem
33
-
34
- After you have done these steps, see:
35
-
36
- rake release:rubyforge_archives
37
-
38
- INSTRUCTIONS
39
- end
40
-
41
- desc 'Display instructions to add archives after release:rubyforge'
42
- task :rubyforge_archives do
43
- puts "Adding archives for distro packagers is:", ""
44
-
45
- Dir["pkg/#{name}-#{version}.{gz,zip}"].each do |file|
46
- puts "rubyforge add_file #{name} #{name} '#{version}' '#{file}'"
47
- end
48
-
49
- puts
50
- end
7
+ puts "I added the relevant files, you can now run:", ''
8
+ puts "git commit -m 'Version #{version}'"
9
+ puts "git tag -a -m '#{version}' '#{version}'"
10
+ puts "git push"
11
+ puts
51
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: innate
3
3
  version: !ruby/object:Gem::Version
4
- version: "2009.04"
4
+ version: 2009.04.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael 'manveru' Fellinger
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-26 00:00:00 +09:00
12
+ date: 2009-04-12 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -54,6 +54,8 @@ files:
54
54
  - lib/innate/cache/marshal.rb
55
55
  - lib/innate/cache/memory.rb
56
56
  - lib/innate/cache/yaml.rb
57
+ - lib/innate/core_compatibility/basic_object.rb
58
+ - lib/innate/core_compatibility/string.rb
57
59
  - lib/innate/current.rb
58
60
  - lib/innate/dynamap.rb
59
61
  - lib/innate/helper.rb
@@ -151,8 +153,6 @@ files:
151
153
  - tasks/setup.rake
152
154
  has_rdoc: true
153
155
  homepage: http://github.com/manveru/innate
154
- licenses: []
155
-
156
156
  post_install_message:
157
157
  rdoc_options: []
158
158
 
@@ -172,10 +172,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
172
  version:
173
173
  requirements: []
174
174
 
175
- rubyforge_project: innate
176
- rubygems_version: 1.3.2
175
+ rubyforge_project:
176
+ rubygems_version: 1.3.1
177
177
  signing_key:
178
- specification_version: 3
178
+ specification_version: 2
179
179
  summary: Powerful web-framework wrapper for Rack.
180
180
  test_files: []
181
181