merb 0.3.4 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. data/README +206 -197
  2. data/Rakefile +12 -21
  3. data/bin/merb +1 -1
  4. data/examples/skeleton/Rakefile +6 -20
  5. data/examples/skeleton/dist/app/mailers/layout/application.erb +1 -0
  6. data/examples/skeleton/dist/conf/database.yml +23 -0
  7. data/examples/skeleton/dist/conf/environments/development.rb +1 -0
  8. data/examples/skeleton/dist/conf/environments/production.rb +1 -0
  9. data/examples/skeleton/dist/conf/environments/test.rb +1 -0
  10. data/examples/skeleton/dist/conf/merb.yml +32 -28
  11. data/examples/skeleton/dist/conf/merb_init.rb +16 -13
  12. data/examples/skeleton/dist/conf/router.rb +9 -9
  13. data/examples/skeleton/dist/schema/migrations/001_add_sessions_table.rb +2 -2
  14. data/lib/merb.rb +23 -18
  15. data/lib/merb/caching/fragment_cache.rb +3 -7
  16. data/lib/merb/caching/store/memcache.rb +20 -0
  17. data/lib/merb/core_ext/merb_array.rb +0 -0
  18. data/lib/merb/core_ext/merb_class.rb +44 -4
  19. data/lib/merb/core_ext/merb_enumerable.rb +43 -1
  20. data/lib/merb/core_ext/merb_hash.rb +200 -122
  21. data/lib/merb/core_ext/merb_kernel.rb +2 -0
  22. data/lib/merb/core_ext/merb_module.rb +41 -0
  23. data/lib/merb/core_ext/merb_numeric.rb +57 -5
  24. data/lib/merb/core_ext/merb_object.rb +172 -6
  25. data/lib/merb/generators/merb_app/merb_app.rb +15 -9
  26. data/lib/merb/merb_abstract_controller.rb +193 -0
  27. data/lib/merb/merb_constants.rb +26 -1
  28. data/lib/merb/merb_controller.rb +143 -234
  29. data/lib/merb/merb_dispatcher.rb +28 -20
  30. data/lib/merb/merb_drb_server.rb +2 -3
  31. data/lib/merb/merb_exceptions.rb +194 -49
  32. data/lib/merb/merb_handler.rb +34 -26
  33. data/lib/merb/merb_mail_controller.rb +200 -0
  34. data/lib/merb/merb_mailer.rb +33 -13
  35. data/lib/merb/merb_part_controller.rb +42 -0
  36. data/lib/merb/merb_plugins.rb +293 -0
  37. data/lib/merb/merb_request.rb +6 -4
  38. data/lib/merb/merb_router.rb +99 -65
  39. data/lib/merb/merb_server.rb +65 -21
  40. data/lib/merb/merb_upload_handler.rb +2 -1
  41. data/lib/merb/merb_view_context.rb +36 -15
  42. data/lib/merb/mixins/basic_authentication_mixin.rb +5 -5
  43. data/lib/merb/mixins/controller_mixin.rb +67 -28
  44. data/lib/merb/mixins/erubis_capture_mixin.rb +1 -8
  45. data/lib/merb/mixins/form_control_mixin.rb +280 -42
  46. data/lib/merb/mixins/render_mixin.rb +127 -45
  47. data/lib/merb/mixins/responder_mixin.rb +5 -7
  48. data/lib/merb/mixins/view_context_mixin.rb +260 -94
  49. data/lib/merb/session.rb +23 -0
  50. data/lib/merb/session/merb_ar_session.rb +28 -16
  51. data/lib/merb/session/merb_mem_cache_session.rb +108 -0
  52. data/lib/merb/session/merb_memory_session.rb +65 -20
  53. data/lib/merb/template/erubis.rb +22 -13
  54. data/lib/merb/template/haml.rb +5 -16
  55. data/lib/merb/template/markaby.rb +5 -3
  56. data/lib/merb/template/xml_builder.rb +17 -5
  57. data/lib/merb/test/merb_fake_request.rb +63 -0
  58. data/lib/merb/test/merb_multipart.rb +58 -0
  59. data/lib/tasks/db.rake +2 -0
  60. data/lib/tasks/merb.rake +20 -8
  61. metadata +24 -25
  62. data/examples/skeleton.tar +0 -0
@@ -1,17 +1,29 @@
1
+ begin
2
+ require 'builder'
3
+ rescue LoadError
4
+ puts "you must install the builder gem to use .rxml templates"
5
+ end
6
+
1
7
  module Merb
2
8
 
3
- module Template
4
-
9
+ module Template # :nodoc:
10
+ # A module to allow you to use Builder["http://builder.rubyforge.org/"] templates in your Merb applications.
11
+ # Your Builder templates must end in .rxml, .xerb, or .builder for Merb to use them.
5
12
  module XMLBuilder
6
13
 
7
- ::Merb::Controller.register_engine self, %w[ rxml xerb builder]
14
+ ::Merb::AbstractController.register_engine self, %w[ rxml xerb builder]
8
15
 
9
16
  class << self
10
17
 
11
- def exempt_from_layout?
18
+ def exempt_from_layout? # :nodoc:
12
19
  true
13
20
  end
14
-
21
+
22
+ # Main method to run the Builder template.
23
+ #
24
+ # In Builder's case, it sets the content type and encoding,
25
+ # executes the Builder template by feeding it to <tt>Builder::XmlMarkup.new</tt>,
26
+ # then calls <tt>target!</tt> on the<tt>Builder::XmlMarkup</tt> instance to get its XML output.
15
27
  def transform(options = {})
16
28
  opts, file, view_context = options.values_at(:opts, :file, :view_context)
17
29
  xml_body = IO.read(file)
@@ -0,0 +1,63 @@
1
+ module Merb
2
+ module Test
3
+ # FakeRequest sets up a default enviroment which can be overridden either
4
+ # by passing and env into initialize or using request['HTTP_VAR'] = 'foo'
5
+ class FakeRequest < Request
6
+ attr_reader :req
7
+ alias :body :req
8
+ alias :params :env
9
+ alias :to_hash :env
10
+
11
+ def initialize(env = {}, method = 'GET', req = StringIO.new)
12
+ env[:http_cookie] = env.delete(:cookies) if env[:cookies]
13
+ env.environmentize_keys!
14
+ super(DEFAULT_ENV.dup.merge(env), method, req)
15
+ self.post_body = ''
16
+ end
17
+
18
+ def self.with(path, options = {})
19
+ options.environmentize_keys!
20
+ new({'REQUEST_URI' => path,
21
+ 'PATH_INFO' => path.sub(/\?.*$/,'')}.merge(options))
22
+ end
23
+
24
+ def post_body=(post)
25
+ @req = StringIO.new(post)
26
+ end
27
+
28
+ def [](key)
29
+ @env[key]
30
+ end
31
+
32
+ def []=(key, value)
33
+ @env[key] = value
34
+ end
35
+
36
+
37
+ private
38
+ DEFAULT_ENV = {
39
+ 'SERVER_NAME' => 'localhost',
40
+ 'PATH_INFO' => '/',
41
+ 'HTTP_ACCEPT_ENCODING' => 'gzip,deflate',
42
+ 'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.1) Gecko/20060214 Camino/1.0',
43
+ 'SCRIPT_NAME' => '/',
44
+ 'SERVER_PROTOCOL' => 'HTTP/1.1',
45
+ 'HTTP_CACHE_CONTROL' => 'max-age=0',
46
+ 'HTTP_ACCEPT_LANGUAGE' => 'en,ja;q=0.9,fr;q=0.9,de;q=0.8,es;q=0.7,it;q=0.7,nl;q=0.6,sv;q=0.5,nb;q=0.5,da;q=0.4,fi;q=0.3,pt;q=0.3,zh-Hans;q=0.2,zh-Hant;q=0.1,ko;q=0.1',
47
+ 'HTTP_HOST' => 'localhost',
48
+ 'REMOTE_ADDR' => '127.0.0.1',
49
+ 'SERVER_SOFTWARE' => 'Mongrel 1.1',
50
+ 'HTTP_KEEP_ALIVE' => '300',
51
+ 'HTTP_REFERER' => 'http://localhost/',
52
+ 'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
53
+ 'HTTP_VERSION' => 'HTTP/1.1',
54
+ 'REQUEST_URI' => '/',
55
+ 'SERVER_PORT' => '80',
56
+ 'GATEWAY_INTERFACE' => 'CGI/1.2',
57
+ 'HTTP_ACCEPT' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
58
+ 'HTTP_CONNECTION' => 'keep-alive',
59
+ 'REQUEST_METHOD' => 'GET'
60
+ }
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,58 @@
1
+ module Merb
2
+ module Test
3
+ module Multipart
4
+ require 'rubygems'
5
+ require 'mime/types'
6
+
7
+ class Param
8
+ attr_accessor :key, :value
9
+ def initialize(key, value)
10
+ @key = key
11
+ @value = value
12
+ end
13
+
14
+ def to_multipart
15
+ return %(Content-Disposition: form-data; name="#{key}"\r\n\r\n#{value}\r\n)
16
+ end
17
+ end
18
+
19
+ class FileParam
20
+ attr_accessor :key, :filename, :content
21
+ def initialize(key, filename, content)
22
+ @key = key
23
+ @filename = filename
24
+ @content = content
25
+ end
26
+
27
+ def to_multipart
28
+ return %(Content-Disposition: form-data; name="#{key}"; filename="#{filename}"\r\n) + "Content-Type: #{MIME::Types.type_for(@filename)}\r\n\r\n" + content + "\r\n"
29
+ end
30
+ end
31
+
32
+ class Post
33
+ BOUNDARY = '----------0xKhTmLbOuNdArY'
34
+ CONTENT_TYPE = "multipart/form-data, boundary=" + BOUNDARY
35
+
36
+ def initialize(params = {})
37
+ @multipart_params = []
38
+ push_params(params)
39
+ end
40
+
41
+ def push_params(params)
42
+ params.each do |key, value|
43
+ if value.respond_to?(:read)
44
+ @multipart_params << FileParam.new(key, value.path, value.read)
45
+ else
46
+ @multipart_params << Param.new(key, value)
47
+ end
48
+ end
49
+ end
50
+
51
+ def to_multipart
52
+ query = @multipart_params.collect { |param| "--" + BOUNDARY + "\r\n" + param.to_multipart }.join("") + "--" + BOUNDARY + "--"
53
+ return query, CONTENT_TYPE
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -4,6 +4,8 @@ desc "Setup the Merb Environment by requiring merb and loading your merb_init.rb
4
4
  task :merb_env do
5
5
  require 'rubygems'
6
6
  require 'merb'
7
+ Merb::Server.config[:environment] = ENV['MERB_ENV'] if ENV['MERB_ENV']
8
+ MERB_ENV = Merb::Server.config[:environment].nil? ? 'development' : Merb::Server.config[:environment]
7
9
  load MERB_ROOT+'/dist/conf/merb_init.rb'
8
10
  end
9
11
 
@@ -1,13 +1,19 @@
1
+ def install_merb_script
2
+ script_filepath = MERB_ROOT / 'script/merb'
3
+ FileUtils.rm script_filepath if File.exist? script_filepath
4
+ tmpl = "#!/usr/bin/env ruby\nrequire File.expand_path(File.dirname(__FILE__)+'/../dist/framework/merb/merb_server')\nMerb::Server.run\n"
5
+ File.open(script_filepath, 'wb') {|f|
6
+ f.write tmpl
7
+ f.chmod(0744)
8
+ }
9
+ end
10
+
1
11
  namespace :merb do
2
12
  desc "freeze the merb framework into dist/merb for portability"
3
13
  task :freeze do
4
14
  FileUtils.rm_rf MERB_ROOT / 'dist/framework'
5
15
  FileUtils.cp_r MERB_FRAMEWORK_ROOT, (MERB_ROOT / 'dist/framework')
6
- tmpl = "#!/usr/local/bin/ruby\nrequire File.expand_path(File.dirname(__FILE__)+'/../dist/framework/merb/merb_server')\nMerb::Server.run\n"
7
- File.open(MERB_ROOT / 'script/merb', 'wb') {|f|
8
- f.write tmpl
9
- f.chmod(0744)
10
- }
16
+ install_merb_script
11
17
 
12
18
  puts " Freezing Merb Framework into dist/framework"
13
19
  puts " Use script/merb to start instead of plain merb"
@@ -24,9 +30,15 @@ namespace :merb do
24
30
 
25
31
  desc "freeze the merb framework from svn"
26
32
  task :freeze_from_svn do
27
- puts "Freezing Merb Framework from svn"
28
- FileUtils.rm_rf MERB_ROOT / 'dist/framework'
29
- system "svn co http://svn.devjavu.com/merb/trunk/lib #{MERB_ROOT / 'dist/framework'}"
33
+ install_path = MERB_ROOT / 'dist/framework'
34
+ puts " Removing old framework" if File.exist? install_path
35
+ FileUtils.rm_rf install_path
36
+
37
+ puts " Freezing Merb Framework from svn"
38
+ system "svn co http://svn.devjavu.com/merb/trunk/lib #{install_path}"
39
+ install_merb_script
40
+
41
+ puts " Use script/merb to start instead of plain merb"
30
42
  end
31
43
 
32
44
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: merb
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.4
7
- date: 2007-05-31 00:00:00 -07:00
6
+ version: 0.3.7
7
+ date: 2007-08-04 00:00:00 -07:00
8
8
  summary: Merb == Mongrel + Erb. Pocket rocket web framework.
9
9
  require_paths:
10
10
  - lib
@@ -40,9 +40,11 @@ files:
40
40
  - lib/merb/caching/fragment_cache.rb
41
41
  - lib/merb/caching/store
42
42
  - lib/merb/caching/store/file_cache.rb
43
+ - lib/merb/caching/store/memcache.rb
43
44
  - lib/merb/caching/store/memory_cache.rb
44
45
  - lib/merb/caching.rb
45
46
  - lib/merb/core_ext
47
+ - lib/merb/core_ext/merb_array.rb
46
48
  - lib/merb/core_ext/merb_class.rb
47
49
  - lib/merb/core_ext/merb_enumerable.rb
48
50
  - lib/merb/core_ext/merb_hash.rb
@@ -58,13 +60,17 @@ files:
58
60
  - lib/merb/generators
59
61
  - lib/merb/generators/merb_app
60
62
  - lib/merb/generators/merb_app/merb_app.rb
63
+ - lib/merb/merb_abstract_controller.rb
61
64
  - lib/merb/merb_constants.rb
62
65
  - lib/merb/merb_controller.rb
63
66
  - lib/merb/merb_dispatcher.rb
64
67
  - lib/merb/merb_drb_server.rb
65
68
  - lib/merb/merb_exceptions.rb
66
69
  - lib/merb/merb_handler.rb
70
+ - lib/merb/merb_mail_controller.rb
67
71
  - lib/merb/merb_mailer.rb
72
+ - lib/merb/merb_part_controller.rb
73
+ - lib/merb/merb_plugins.rb
68
74
  - lib/merb/merb_request.rb
69
75
  - lib/merb/merb_router.rb
70
76
  - lib/merb/merb_server.rb
@@ -82,13 +88,18 @@ files:
82
88
  - lib/merb/mixins/view_context_mixin.rb
83
89
  - lib/merb/session
84
90
  - lib/merb/session/merb_ar_session.rb
91
+ - lib/merb/session/merb_mem_cache_session.rb
85
92
  - lib/merb/session/merb_memory_session.rb
93
+ - lib/merb/session.rb
86
94
  - lib/merb/template
87
95
  - lib/merb/template/erubis.rb
88
96
  - lib/merb/template/haml.rb
89
97
  - lib/merb/template/markaby.rb
90
98
  - lib/merb/template/xml_builder.rb
91
99
  - lib/merb/template.rb
100
+ - lib/merb/test
101
+ - lib/merb/test/merb_fake_request.rb
102
+ - lib/merb/test/merb_multipart.rb
92
103
  - lib/merb/vendor
93
104
  - lib/merb/vendor/paginator
94
105
  - lib/merb/vendor/paginator/paginator.rb
@@ -106,16 +117,25 @@ files:
106
117
  - examples/skeleton/dist/app/controllers/application.rb
107
118
  - examples/skeleton/dist/app/helpers
108
119
  - examples/skeleton/dist/app/helpers/global_helper.rb
120
+ - examples/skeleton/dist/app/mailers
121
+ - examples/skeleton/dist/app/mailers/helpers
122
+ - examples/skeleton/dist/app/mailers/layout
123
+ - examples/skeleton/dist/app/mailers/layout/application.erb
124
+ - examples/skeleton/dist/app/mailers/views
109
125
  - examples/skeleton/dist/app/models
110
126
  - examples/skeleton/dist/app/views
111
127
  - examples/skeleton/dist/app/views/layout
112
128
  - examples/skeleton/dist/app/views/layout/application.herb
113
129
  - examples/skeleton/dist/conf
130
+ - examples/skeleton/dist/conf/database.yml
131
+ - examples/skeleton/dist/conf/environments
132
+ - examples/skeleton/dist/conf/environments/development.rb
133
+ - examples/skeleton/dist/conf/environments/production.rb
134
+ - examples/skeleton/dist/conf/environments/test.rb
114
135
  - examples/skeleton/dist/conf/merb.yml
115
136
  - examples/skeleton/dist/conf/merb_init.rb
116
137
  - examples/skeleton/dist/conf/router.rb
117
138
  - examples/skeleton/dist/conf/upload.conf
118
- - examples/skeleton/dist/lib
119
139
  - examples/skeleton/dist/plugins
120
140
  - examples/skeleton/dist/public
121
141
  - examples/skeleton/dist/public/images
@@ -124,15 +144,12 @@ files:
124
144
  - examples/skeleton/dist/schema
125
145
  - examples/skeleton/dist/schema/migrations
126
146
  - examples/skeleton/dist/schema/migrations/001_add_sessions_table.rb
127
- - examples/skeleton/log
147
+ - examples/skeleton/plugins
128
148
  - examples/skeleton/Rakefile
129
149
  - examples/skeleton/script
130
150
  - examples/skeleton/script/new_migration
131
151
  - examples/skeleton/script/stop_merb
132
152
  - examples/skeleton/test
133
- - examples/skeleton/test/specs
134
- - examples/skeleton/test/unit
135
- - examples/skeleton.tar
136
153
  test_files: []
137
154
 
138
155
  rdoc_options: []
@@ -184,21 +201,3 @@ dependencies:
184
201
  - !ruby/object:Gem::Version
185
202
  version: 0.0.0
186
203
  version:
187
- - !ruby/object:Gem::Dependency
188
- name: xml-simple
189
- version_requirement:
190
- version_requirements: !ruby/object:Gem::Version::Requirement
191
- requirements:
192
- - - ">"
193
- - !ruby/object:Gem::Version
194
- version: 0.0.0
195
- version:
196
- - !ruby/object:Gem::Dependency
197
- name: archive-tar-minitar
198
- version_requirement:
199
- version_requirements: !ruby/object:Gem::Version::Requirement
200
- requirements:
201
- - - ">"
202
- - !ruby/object:Gem::Version
203
- version: 0.0.0
204
- version:
Binary file