merb 0.3.4 → 0.3.7
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/README +206 -197
- data/Rakefile +12 -21
- data/bin/merb +1 -1
- data/examples/skeleton/Rakefile +6 -20
- data/examples/skeleton/dist/app/mailers/layout/application.erb +1 -0
- data/examples/skeleton/dist/conf/database.yml +23 -0
- data/examples/skeleton/dist/conf/environments/development.rb +1 -0
- data/examples/skeleton/dist/conf/environments/production.rb +1 -0
- data/examples/skeleton/dist/conf/environments/test.rb +1 -0
- data/examples/skeleton/dist/conf/merb.yml +32 -28
- data/examples/skeleton/dist/conf/merb_init.rb +16 -13
- data/examples/skeleton/dist/conf/router.rb +9 -9
- data/examples/skeleton/dist/schema/migrations/001_add_sessions_table.rb +2 -2
- data/lib/merb.rb +23 -18
- data/lib/merb/caching/fragment_cache.rb +3 -7
- data/lib/merb/caching/store/memcache.rb +20 -0
- data/lib/merb/core_ext/merb_array.rb +0 -0
- data/lib/merb/core_ext/merb_class.rb +44 -4
- data/lib/merb/core_ext/merb_enumerable.rb +43 -1
- data/lib/merb/core_ext/merb_hash.rb +200 -122
- data/lib/merb/core_ext/merb_kernel.rb +2 -0
- data/lib/merb/core_ext/merb_module.rb +41 -0
- data/lib/merb/core_ext/merb_numeric.rb +57 -5
- data/lib/merb/core_ext/merb_object.rb +172 -6
- data/lib/merb/generators/merb_app/merb_app.rb +15 -9
- data/lib/merb/merb_abstract_controller.rb +193 -0
- data/lib/merb/merb_constants.rb +26 -1
- data/lib/merb/merb_controller.rb +143 -234
- data/lib/merb/merb_dispatcher.rb +28 -20
- data/lib/merb/merb_drb_server.rb +2 -3
- data/lib/merb/merb_exceptions.rb +194 -49
- data/lib/merb/merb_handler.rb +34 -26
- data/lib/merb/merb_mail_controller.rb +200 -0
- data/lib/merb/merb_mailer.rb +33 -13
- data/lib/merb/merb_part_controller.rb +42 -0
- data/lib/merb/merb_plugins.rb +293 -0
- data/lib/merb/merb_request.rb +6 -4
- data/lib/merb/merb_router.rb +99 -65
- data/lib/merb/merb_server.rb +65 -21
- data/lib/merb/merb_upload_handler.rb +2 -1
- data/lib/merb/merb_view_context.rb +36 -15
- data/lib/merb/mixins/basic_authentication_mixin.rb +5 -5
- data/lib/merb/mixins/controller_mixin.rb +67 -28
- data/lib/merb/mixins/erubis_capture_mixin.rb +1 -8
- data/lib/merb/mixins/form_control_mixin.rb +280 -42
- data/lib/merb/mixins/render_mixin.rb +127 -45
- data/lib/merb/mixins/responder_mixin.rb +5 -7
- data/lib/merb/mixins/view_context_mixin.rb +260 -94
- data/lib/merb/session.rb +23 -0
- data/lib/merb/session/merb_ar_session.rb +28 -16
- data/lib/merb/session/merb_mem_cache_session.rb +108 -0
- data/lib/merb/session/merb_memory_session.rb +65 -20
- data/lib/merb/template/erubis.rb +22 -13
- data/lib/merb/template/haml.rb +5 -16
- data/lib/merb/template/markaby.rb +5 -3
- data/lib/merb/template/xml_builder.rb +17 -5
- data/lib/merb/test/merb_fake_request.rb +63 -0
- data/lib/merb/test/merb_multipart.rb +58 -0
- data/lib/tasks/db.rake +2 -0
- data/lib/tasks/merb.rake +20 -8
- metadata +24 -25
- 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::
|
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
|
data/lib/tasks/db.rake
CHANGED
@@ -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
|
|
data/lib/tasks/merb.rake
CHANGED
@@ -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
|
-
|
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
|
-
|
28
|
-
|
29
|
-
|
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.
|
7
|
-
date: 2007-
|
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/
|
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:
|
data/examples/skeleton.tar
DELETED
Binary file
|