manveru-ramaze 2008.10 → 2008.12
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/benchmark/run.rb +1 -1
- data/examples/app/blog/spec/blog.rb +2 -2
- data/examples/app/rapaste/spec/rapaste.rb +1 -1
- data/examples/app/rapaste/start.rb +2 -2
- data/examples/app/todolist/spec/todolist.rb +1 -1
- data/examples/app/whywiki/spec/whywiki.rb +1 -1
- data/examples/app/wikore/spec/wikore.rb +1 -1
- data/examples/app/wikore/src/model.rb +1 -1
- data/examples/app/wiktacular/spec/wiktacular.rb +1 -1
- data/examples/app/wiktacular/src/model.rb +1 -1
- data/examples/basic/partial.rb +28 -0
- data/examples/misc/ramaise.rb +2 -2
- data/examples/templates/template_amrita2.rb +1 -1
- data/examples/templates/template_erubis.rb +1 -1
- data/examples/templates/template_ezamar.rb +1 -1
- data/examples/templates/template_haml.rb +2 -2
- data/examples/templates/template_liquid.rb +1 -1
- data/examples/templates/template_markaby.rb +2 -2
- data/examples/templates/template_nagoro.rb +1 -1
- data/examples/templates/template_redcloth.rb +1 -1
- data/examples/templates/template_remarkably.rb +2 -2
- data/examples/templates/template_tenjin.rb +1 -1
- data/examples/templates/template_xslt.rb +1 -1
- data/lib/proto/public/dispatch.fcgi +2 -2
- data/lib/proto/spec/main.rb +3 -3
- data/lib/ramaze/action.rb +7 -1
- data/lib/ramaze/cache/file.rb +71 -0
- data/lib/ramaze/cache.rb +1 -0
- data/lib/ramaze/contrib/email.rb +2 -0
- data/lib/ramaze/contrib/facebook.rb +2 -2
- data/lib/ramaze/contrib/file_cache.rb +2 -64
- data/lib/ramaze/contrib/sequel/image.rb +1 -1
- data/lib/ramaze/controller.rb +6 -1
- data/lib/ramaze/current/request.rb +85 -68
- data/lib/ramaze/current/session/hash.rb +7 -11
- data/lib/ramaze/current/session.rb +3 -5
- data/lib/ramaze/dispatcher/action.rb +2 -0
- data/lib/ramaze/dispatcher/file.rb +4 -0
- data/lib/ramaze/helper/aspect.rb +2 -2
- data/lib/ramaze/helper/form.rb +5 -2
- data/lib/ramaze/helper/formatting.rb +4 -0
- data/lib/ramaze/helper/gravatar.rb +18 -1
- data/lib/ramaze/helper/maruku.rb +2 -0
- data/lib/ramaze/helper/redirect.rb +22 -4
- data/lib/ramaze/helper.rb +9 -2
- data/lib/ramaze/reloader/watch_inotify.rb +73 -0
- data/lib/ramaze/reloader/watch_stat.rb +62 -0
- data/lib/ramaze/reloader.rb +25 -41
- data/lib/ramaze/snippets/object/__dir__.rb +3 -3
- data/lib/ramaze/snippets/ramaze/acquire.rb +31 -0
- data/lib/ramaze/spec/helper/mock_http.rb +6 -5
- data/lib/ramaze/template/ezamar/render_partial.rb +8 -0
- data/lib/ramaze.rb +4 -0
- data/ramaze.gemspec +757 -756
- data/spec/contrib/profiling.rb +1 -1
- data/spec/ramaze/action/file_cache.rb +1 -1
- data/spec/ramaze/action/layout.rb +1 -1
- data/spec/ramaze/controller/actionless_templates.rb +1 -1
- data/spec/ramaze/controller/resolve.rb +1 -1
- data/spec/ramaze/controller/template_resolving.rb +1 -1
- data/spec/ramaze/dispatcher/directory.rb +3 -3
- data/spec/ramaze/helper/aspect.rb +1 -1
- data/spec/ramaze/helper/partial.rb +1 -1
- data/spec/ramaze/localize.rb +1 -1
- data/spec/ramaze/rewrite.rb +1 -1
- data/spec/ramaze/template/amrita2.rb +1 -1
- data/spec/ramaze/template/erubis.rb +1 -1
- data/spec/ramaze/template/ezamar.rb +1 -1
- data/spec/ramaze/template/haml.rb +2 -2
- data/spec/ramaze/template/nagoro.rb +1 -1
- data/spec/ramaze/template/redcloth.rb +1 -1
- data/spec/ramaze/template/sass.rb +1 -1
- data/spec/ramaze/template/tenjin.rb +1 -1
- data/spec/ramaze/template.rb +3 -3
- data/spec/snippets/object/__dir__.rb +6 -0
- data/spec/snippets/ramaze/acquire.rb +77 -0
- metadata +8 -8
data/benchmark/run.rb
CHANGED
@@ -176,7 +176,7 @@ class RamazeBenchmark
|
|
176
176
|
|
177
177
|
# benchmarks
|
178
178
|
__DIR__ = File.expand_path(File.dirname(__FILE__))
|
179
|
-
Dir[__DIR__
|
179
|
+
Dir[__DIR__('suite/*.rb')].each do |filename|
|
180
180
|
@adapters.each do |adapter|
|
181
181
|
@paths.each do |path|
|
182
182
|
benchmark(filename, adapter, path) if @target.match(filename)
|
@@ -3,7 +3,7 @@ require 'ramaze/spec/helper'
|
|
3
3
|
|
4
4
|
spec_require 'hpricot', 'sequel'
|
5
5
|
|
6
|
-
$LOAD_PATH.unshift base = __DIR__
|
6
|
+
$LOAD_PATH.unshift base = __DIR__('..')
|
7
7
|
require 'start'
|
8
8
|
|
9
9
|
describe 'Blog' do
|
@@ -83,5 +83,5 @@ describe 'Blog' do
|
|
83
83
|
(check_page/'div.entry').size.should == 1
|
84
84
|
end
|
85
85
|
|
86
|
-
FileUtils.rm_f(__DIR__
|
86
|
+
FileUtils.rm_f(__DIR__('../blog.db'))
|
87
87
|
end
|
@@ -7,7 +7,7 @@ require 'uv'
|
|
7
7
|
|
8
8
|
Ramaze::Log.debug "Initializing UltraViolet..."
|
9
9
|
|
10
|
-
Uv.copy_files "xhtml", __DIR__
|
10
|
+
Uv.copy_files "xhtml", __DIR__("public")
|
11
11
|
Uv.init_syntaxes
|
12
12
|
|
13
13
|
UV_PRIORITY_NAMES = %w[ ruby plain_text html css javascript yaml diff ]
|
@@ -16,7 +16,7 @@ STYLE = 'iplastic'
|
|
16
16
|
|
17
17
|
Ramaze::Log.debug "done."
|
18
18
|
|
19
|
-
DB_FILE = "
|
19
|
+
DB_FILE = __DIR__("rapaste.sqlite") # for specs
|
20
20
|
DB = Sequel.connect("sqlite://#{DB_FILE}")
|
21
21
|
|
22
22
|
require 'model/paste'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'ramaze'
|
3
|
+
|
4
|
+
# This is a small extension to the hello world example, showing how to use the
|
5
|
+
# <render> tag of Ezamar.
|
6
|
+
#
|
7
|
+
# Browse to /more and /even_more
|
8
|
+
|
9
|
+
pipeline = Ramaze::Template::Ezamar::TRANSFORM_PIPELINE
|
10
|
+
pipeline.put_after(::Ezamar::Element, ::Ezamar::RenderPartial)
|
11
|
+
pipeline.uniq!
|
12
|
+
|
13
|
+
class MainController < Ramaze::Controller
|
14
|
+
def index
|
15
|
+
"Hello, World!"
|
16
|
+
end
|
17
|
+
|
18
|
+
def more
|
19
|
+
@tail = request[:tail] || 'the standard'
|
20
|
+
'More of <render src="/index" /> #@tail'
|
21
|
+
end
|
22
|
+
|
23
|
+
def even_more
|
24
|
+
'<render src="/more" tail="This is even more" />'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
Ramaze.start
|
data/examples/misc/ramaise.rb
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
%w(rubygems ramaze bluecloth rubypants haml).each{|lib| require lib }
|
16
16
|
|
17
17
|
class BlogPost
|
18
|
-
DIR = __DIR__
|
18
|
+
DIR = __DIR__(:entries)
|
19
19
|
|
20
20
|
def initialize filename
|
21
21
|
raise 'Invalid BlogPost filename' unless File.exists?(filename)
|
@@ -129,4 +129,4 @@ class MainController < Ramaze::Controller
|
|
129
129
|
|
130
130
|
end
|
131
131
|
|
132
|
-
Ramaze.start :sessions => false #, :adapter => :mongrel, :port => 3000
|
132
|
+
Ramaze.start :sessions => false #, :adapter => :mongrel, :port => 3000
|
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'ramaze'
|
3
3
|
|
4
4
|
class MainController < Ramaze::Controller
|
5
|
-
view_root __DIR__
|
5
|
+
view_root __DIR__(:template)
|
6
6
|
engine :Haml
|
7
7
|
|
8
8
|
def index
|
@@ -29,7 +29,7 @@ class MainController < Ramaze::Controller
|
|
29
29
|
= A("#@place/one/two/three")
|
30
30
|
%br/
|
31
31
|
= A("#@place/one?foo=bar")
|
32
|
-
%div
|
32
|
+
%div
|
33
33
|
The arguments you have passed to this action are:
|
34
34
|
- if @args.empty?
|
35
35
|
none
|
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'ramaze'
|
3
3
|
|
4
4
|
class MainController < Ramaze::Controller
|
5
|
-
view_root __DIR__
|
5
|
+
view_root __DIR__('template')
|
6
6
|
engine :Markaby
|
7
7
|
|
8
8
|
helper :markaby
|
@@ -33,7 +33,7 @@ class MainController < Ramaze::Controller
|
|
33
33
|
br
|
34
34
|
end
|
35
35
|
div do
|
36
|
-
text "The arguments you have passed to this action are:"
|
36
|
+
text "The arguments you have passed to this action are:"
|
37
37
|
if @args.empty?
|
38
38
|
text "none"
|
39
39
|
else
|
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'ramaze'
|
3
3
|
|
4
4
|
class MainController < Ramaze::Controller
|
5
|
-
view_root __DIR__
|
5
|
+
view_root __DIR__(:template)
|
6
6
|
engine :Remarkably
|
7
7
|
|
8
8
|
include Remarkably::Common
|
@@ -31,7 +31,7 @@ class MainController < Ramaze::Controller
|
|
31
31
|
br
|
32
32
|
end
|
33
33
|
div do
|
34
|
-
text "The arguments you have passed to this action are:"
|
34
|
+
text "The arguments you have passed to this action are:"
|
35
35
|
if args.empty?
|
36
36
|
"none"
|
37
37
|
else
|
@@ -4,8 +4,8 @@ require 'rubygems'
|
|
4
4
|
require 'ramaze'
|
5
5
|
|
6
6
|
# FCGI doesn't like you writing to stdout
|
7
|
-
Ramaze::Log.loggers = [ Ramaze::Logger::Informer.new(
|
7
|
+
Ramaze::Log.loggers = [ Ramaze::Logger::Informer.new( __DIR__("../ramaze.fcgi.log") ) ]
|
8
8
|
Ramaze::Global.adapter = :fcgi
|
9
9
|
|
10
|
-
$0 =
|
10
|
+
$0 = __DIR__("../start.rb")
|
11
11
|
require $0
|
data/lib/proto/spec/main.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'ramaze'
|
2
2
|
require 'ramaze/spec/helper'
|
3
3
|
|
4
|
-
require __DIR__
|
4
|
+
require __DIR__('../start')
|
5
5
|
|
6
6
|
describe MainController do
|
7
7
|
behaves_like 'http', 'xpath'
|
8
|
-
ramaze :view_root => __DIR__
|
9
|
-
:public_root => __DIR__
|
8
|
+
ramaze :view_root => __DIR__('../view'),
|
9
|
+
:public_root => __DIR__('../public')
|
10
10
|
|
11
11
|
it 'should show start page' do
|
12
12
|
got = get('/')
|
data/lib/ramaze/action.rb
CHANGED
@@ -110,17 +110,21 @@ module Ramaze
|
|
110
110
|
end
|
111
111
|
|
112
112
|
# Try to figure out a sane name for current action.
|
113
|
+
|
113
114
|
def name
|
114
115
|
File.basename((self[:method] || self[:template]).to_s).split('.').first
|
115
116
|
end
|
116
117
|
|
117
118
|
# combined path to current action, from path and params
|
119
|
+
|
118
120
|
def extended_path
|
119
121
|
(path == "index" && !params.empty? ? params : Array[path, *params]).join('/')
|
120
122
|
end
|
121
123
|
|
124
|
+
# same as Ramaze::Action#extended_path, with mapping of the current controller prepended.
|
125
|
+
|
122
126
|
def full_path
|
123
|
-
self.controller.mapping
|
127
|
+
File.join(self.controller.mapping, extended_path)
|
124
128
|
end
|
125
129
|
|
126
130
|
# Hook for AspectHelper
|
@@ -133,6 +137,8 @@ module Ramaze
|
|
133
137
|
def after_process
|
134
138
|
end
|
135
139
|
|
140
|
+
# Returns true if current request is valid REST request.
|
141
|
+
|
136
142
|
def valid_rest?
|
137
143
|
return true unless rest = controller.trait[:REST]
|
138
144
|
meth = Request.current.request_method
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module Ramaze
|
2
|
+
# Persist cache contents to the filesystem.
|
3
|
+
# By default this will create a `/cache` directory in your APPDIR
|
4
|
+
#
|
5
|
+
# Usage for sessions only:
|
6
|
+
#
|
7
|
+
# Ramaze::Global::cache_alternative[:sessions] = Ramaze::FileCache
|
8
|
+
#
|
9
|
+
# Usage for everything:
|
10
|
+
#
|
11
|
+
# Ramaze::Global::cache = Ramaze::FileCache
|
12
|
+
|
13
|
+
class FileCache
|
14
|
+
attr_accessor :root, :subdir
|
15
|
+
attr_reader :host, :pid
|
16
|
+
|
17
|
+
def initialize(root = Ramaze::Global.root, subdir = 'cache')
|
18
|
+
@root, @subdir = root, subdir
|
19
|
+
@host = Socket.gethostname
|
20
|
+
@pid = $$
|
21
|
+
|
22
|
+
FileUtils.mkdir_p(dir)
|
23
|
+
end
|
24
|
+
|
25
|
+
def dir(*further)
|
26
|
+
File.join(root, subdir, *further)
|
27
|
+
end
|
28
|
+
|
29
|
+
def [](key)
|
30
|
+
Marshal.load(File.read(dir(key.to_s, 'data')))
|
31
|
+
rescue
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
|
35
|
+
def []=(key, value)
|
36
|
+
key = key.to_s
|
37
|
+
tmp_name = dir(key, "data.#{host}.#{pid}")
|
38
|
+
key_name = dir(key, 'data')
|
39
|
+
dir_name = dir(key)
|
40
|
+
|
41
|
+
data = Marshal.dump(value)
|
42
|
+
|
43
|
+
FileUtils.rm_rf(dir_name)
|
44
|
+
FileUtils.mkdir_p(dir_name)
|
45
|
+
|
46
|
+
File.open(tmp_name, 'w'){|fd| fd.write(data) }
|
47
|
+
|
48
|
+
FileUtils.mv(tmp_name, key_name)
|
49
|
+
|
50
|
+
return value
|
51
|
+
end
|
52
|
+
|
53
|
+
def values_at(*keys)
|
54
|
+
keys.map{|key| self[key] }
|
55
|
+
end
|
56
|
+
|
57
|
+
def delete(*keys)
|
58
|
+
keys.map do |key|
|
59
|
+
FileUtils.rm_rf(dir(key.to_s))
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def clear
|
64
|
+
Dir[dir('*')].each{|entry| FileUtils.rm_rf(entry) }
|
65
|
+
end
|
66
|
+
|
67
|
+
def to_sym
|
68
|
+
name.split('::').last.to_sym
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/ramaze/cache.rb
CHANGED
@@ -6,6 +6,7 @@ require 'ramaze/cache/memory'
|
|
6
6
|
module Ramaze
|
7
7
|
autoload :YAMLStoreCache, "ramaze/cache/yaml_store.rb"
|
8
8
|
autoload :MemcachedCache, "ramaze/cache/memcached.rb"
|
9
|
+
autoload :FileCache, "ramaze/cache/file.rb"
|
9
10
|
|
10
11
|
# This is the wrapper of all caches, providing mechanism
|
11
12
|
# for switching caching from one adapter to another.
|
data/lib/ramaze/contrib/email.rb
CHANGED
@@ -67,6 +67,8 @@ Message-Id: #{id}
|
|
67
67
|
send_smtp( email, recipient, subject )
|
68
68
|
end
|
69
69
|
|
70
|
+
# the raw mail sending method used by Ramaze::EmailHelper
|
71
|
+
|
70
72
|
def send_smtp( email, recipient, subject )
|
71
73
|
options = trait.values_at(:smtp_server, :smtp_port, :smtp_helo_domain,
|
72
74
|
:smtp_username, :smtp_password, :smtp_auth_type)
|
@@ -1,65 +1,3 @@
|
|
1
|
-
|
2
|
-
# drop-in replacement for Ramaze's built-in MemoryCache built on the
|
3
|
-
# filesystem. # to use with sessions do
|
4
|
-
#
|
5
|
-
# Ramaze::Global::cache_alternative[:sessions] = Ramaze::FileCache
|
6
|
-
#
|
7
|
-
# to use with everything do
|
8
|
-
#
|
9
|
-
# Ramaze::Global::cache = Ramaze::FileCache
|
10
|
-
#
|
1
|
+
Ramaze::Log.warn("ramaze/contrib/file_cache is now ramaze/cache/file")
|
11
2
|
|
12
|
-
|
13
|
-
require "fileutils"
|
14
|
-
require "socket"
|
15
|
-
|
16
|
-
Host = Socket.gethostname
|
17
|
-
Pid = Process.pid
|
18
|
-
Fu = FileUtils
|
19
|
-
Root = File.join Ramaze::APPDIR, "cache"
|
20
|
-
|
21
|
-
Fu.mkdir_p(Root) rescue nil
|
22
|
-
|
23
|
-
def self.[] key
|
24
|
-
path = File.join Root, key, "data"
|
25
|
-
Marshal.load(IO.read(path))
|
26
|
-
rescue
|
27
|
-
nil
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.[]= key, value
|
31
|
-
tmp = File.join Root, key, "data.#{ Host }.#{ Pid }"
|
32
|
-
dirname = File.join Root, key
|
33
|
-
path = File.join Root, key, "data"
|
34
|
-
data = Marshal.dump value
|
35
|
-
Fu.rm_rf dirname rescue nil
|
36
|
-
Fu.mkdir_p dirname rescue nil
|
37
|
-
open(tmp, 'w'){|fd| fd.write data}
|
38
|
-
Fu.mv tmp, path
|
39
|
-
rescue
|
40
|
-
nil
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.values_at *keys
|
44
|
-
keys.map{|key| self[key]}
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.delete *keys
|
48
|
-
keys.map do |key|
|
49
|
-
dirname = File.join Root, key
|
50
|
-
Fu.rm_rf dirname rescue next
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def self.clear
|
55
|
-
Dir["#{ Root }/*"].each{|entry| Fu.rm_rf entry}
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.new
|
59
|
-
self
|
60
|
-
end
|
61
|
-
|
62
|
-
def self.to_sym
|
63
|
-
name.split(%r/::/).last.to_sym
|
64
|
-
end
|
65
|
-
end
|
3
|
+
require 'ramaze/cache/file'
|
@@ -31,7 +31,7 @@
|
|
31
31
|
# # Creates a square thumbnail of the image cropping the longest edge
|
32
32
|
# # to match the shortest edge, resizes to +size+.
|
33
33
|
#
|
34
|
-
# :
|
34
|
+
# :algorithm => :thumbnail,
|
35
35
|
#
|
36
36
|
#
|
37
37
|
# # Key specifies the filename and accessors, value are arguments to the
|
data/lib/ramaze/controller.rb
CHANGED
@@ -67,7 +67,8 @@ module Ramaze
|
|
67
67
|
|
68
68
|
# if trait[:automap] is set and controller is not in Global.mapping yet
|
69
69
|
# this will build a new default mapping-point, MainController is put
|
70
|
-
# at '/' by default.
|
70
|
+
# at '/' by default. For other Class names, String#snake_case is called,
|
71
|
+
# e.g. FooBarController is mapped at '/foo_bar'.
|
71
72
|
|
72
73
|
def mapping
|
73
74
|
global_mapping = Global.mapping.invert[self]
|
@@ -265,6 +266,10 @@ module Ramaze
|
|
265
266
|
action.render
|
266
267
|
end
|
267
268
|
|
269
|
+
# By default, returns all ancestors of current Controller that have
|
270
|
+
# Ramaze::Controller as their ancestor. Optional argument parent
|
271
|
+
# can be used return ancestors that have parent as an ancestor.
|
272
|
+
|
268
273
|
def relevant_ancestors(parent = Ramaze::Controller)
|
269
274
|
ancestors.select do |anc|
|
270
275
|
anc.ancestors.include?(parent)
|