merb 0.3.4 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|