ramaze 0.0.9 → 0.1.0

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.
Files changed (193) hide show
  1. data/Rakefile +14 -259
  2. data/bin/ramaze +52 -25
  3. data/doc/AUTHORS +6 -0
  4. data/doc/CHANGELOG +1363 -42
  5. data/doc/INSTALL +1 -1
  6. data/doc/README +48 -35
  7. data/doc/README.html +637 -0
  8. data/doc/TODO +7 -16
  9. data/doc/allison/allison.css +6 -7
  10. data/doc/allison/allison.gif +0 -0
  11. data/doc/allison/cache/STYLE +1 -2
  12. data/doc/changes.txt +3375 -0
  13. data/doc/changes.xml +3378 -0
  14. data/doc/meta/announcement.txt +47 -0
  15. data/doc/meta/configuration.txt +179 -0
  16. data/doc/meta/internals.txt +111 -0
  17. data/doc/readme_chunks/features.txt +8 -16
  18. data/doc/readme_chunks/installing.txt +7 -1
  19. data/doc/tutorial/todolist.txt +2 -3
  20. data/examples/blog/main.rb +9 -8
  21. data/examples/blog/public/styles/blog.css +132 -0
  22. data/examples/blog/src/controller.rb +14 -41
  23. data/examples/blog/src/model.rb +12 -13
  24. data/examples/blog/src/view.rb +16 -0
  25. data/examples/blog/template/edit.xhtml +19 -8
  26. data/examples/blog/template/index.xhtml +14 -22
  27. data/examples/blog/template/new.xhtml +18 -5
  28. data/examples/caching.rb +5 -8
  29. data/examples/element.rb +3 -3
  30. data/examples/hello.rb +3 -5
  31. data/examples/simple.rb +4 -7
  32. data/examples/templates/template/external.haml +8 -7
  33. data/examples/templates/template/external.mab +11 -8
  34. data/examples/templates/template_amrita2.rb +4 -4
  35. data/examples/templates/template_erubis.rb +3 -3
  36. data/examples/templates/template_ezamar.rb +1 -2
  37. data/examples/templates/template_haml.rb +24 -23
  38. data/examples/templates/template_liquid.rb +3 -1
  39. data/examples/templates/template_markaby.rb +15 -9
  40. data/examples/todolist/src/element/page.rb +1 -1
  41. data/lib/proto/conf/benchmark.yaml +6 -20
  42. data/lib/proto/conf/debug.yaml +6 -19
  43. data/lib/proto/conf/live.yaml +7 -19
  44. data/lib/proto/conf/silent.yaml +6 -16
  45. data/lib/proto/conf/stage.yaml +6 -18
  46. data/lib/proto/public/error.zmr +2 -2
  47. data/lib/ramaze.rb +34 -72
  48. data/lib/ramaze/adapter.rb +21 -18
  49. data/lib/ramaze/adapter/mongrel.rb +0 -3
  50. data/lib/ramaze/adapter/webrick.rb +6 -6
  51. data/lib/ramaze/cache/memcached.rb +3 -0
  52. data/lib/ramaze/controller.rb +227 -183
  53. data/lib/ramaze/dispatcher.rb +34 -129
  54. data/lib/ramaze/dispatcher/action.rb +28 -0
  55. data/lib/ramaze/dispatcher/error.rb +43 -0
  56. data/lib/ramaze/dispatcher/file.rb +34 -0
  57. data/lib/ramaze/global.rb +89 -48
  58. data/lib/ramaze/helper/aspect.rb +8 -6
  59. data/lib/ramaze/helper/auth.rb +3 -3
  60. data/lib/ramaze/helper/cache.rb +2 -2
  61. data/lib/ramaze/helper/file.rb +14 -0
  62. data/lib/ramaze/helper/inform.rb +36 -0
  63. data/lib/ramaze/helper/link.rb +7 -3
  64. data/lib/ramaze/helper/markaby.rb +30 -0
  65. data/lib/ramaze/helper/redirect.rb +2 -0
  66. data/lib/ramaze/inform.rb +8 -182
  67. data/lib/ramaze/inform/analogger.rb +19 -0
  68. data/lib/ramaze/inform/growl.rb +28 -0
  69. data/lib/ramaze/inform/hub.rb +26 -0
  70. data/lib/ramaze/inform/informer.rb +92 -0
  71. data/lib/ramaze/inform/informing.rb +44 -0
  72. data/lib/ramaze/inform/syslog.rb +27 -0
  73. data/lib/ramaze/inform/xosd.rb +42 -0
  74. data/lib/ramaze/snippets.rb +6 -2
  75. data/lib/ramaze/snippets/object/traits.rb +13 -1
  76. data/lib/ramaze/snippets/ramaze/autoreload.rb +58 -2
  77. data/lib/ramaze/snippets/string/color.rb +27 -0
  78. data/lib/ramaze/snippets/string/each.rb +6 -0
  79. data/lib/ramaze/snippets/struct/fill.rb +15 -0
  80. data/lib/ramaze/template/ezamar.rb +13 -22
  81. data/lib/ramaze/template/ezamar/element.rb +12 -12
  82. data/lib/ramaze/template/liquid.rb +19 -18
  83. data/lib/ramaze/template/markaby.rb +37 -58
  84. data/lib/ramaze/tool/localize.rb +128 -0
  85. data/lib/ramaze/tool/tidy.rb +51 -21
  86. data/lib/ramaze/trinity.rb +3 -3
  87. data/lib/ramaze/trinity/request.rb +41 -23
  88. data/lib/ramaze/trinity/response.rb +10 -5
  89. data/lib/ramaze/trinity/session.rb +17 -3
  90. data/lib/ramaze/version.rb +2 -2
  91. data/rake_tasks/conf.rake +56 -0
  92. data/rake_tasks/gem.rake +44 -0
  93. data/rake_tasks/maintaince.rake +187 -0
  94. data/spec/all.rb +32 -0
  95. data/spec/examples/caching.rb +19 -0
  96. data/spec/examples/element.rb +15 -0
  97. data/spec/examples/hello.rb +11 -0
  98. data/spec/examples/simple.rb +51 -0
  99. data/spec/examples/templates/template_amrita2.rb +14 -0
  100. data/spec/examples/templates/template_erubis.rb +21 -0
  101. data/spec/examples/templates/template_ezamar.rb +22 -0
  102. data/spec/examples/templates/template_haml.rb +23 -0
  103. data/spec/examples/templates/template_liquid.rb +24 -0
  104. data/spec/examples/templates/template_markaby.rb +21 -0
  105. data/spec/helper.rb +81 -0
  106. data/spec/{spec_helper_context.rb → helper/context.rb} +1 -1
  107. data/spec/helper/layout.rb +55 -0
  108. data/spec/helper/mock_http.rb +66 -0
  109. data/spec/{spec_helper_requester.rb → helper/requester.rb} +0 -6
  110. data/spec/{spec_helper_simple_http.rb → helper/simple_http.rb} +57 -57
  111. data/spec/helper/wrap.rb +193 -0
  112. data/spec/{adapter_spec.rb → ramaze/adapter.rb} +7 -5
  113. data/spec/{tc_adapter_mongrel.rb → ramaze/adapter/mongrel.rb} +2 -2
  114. data/spec/{tc_adapter_webrick.rb → ramaze/adapter/webrick.rb} +2 -2
  115. data/spec/{tc_cache.rb → ramaze/cache.rb} +16 -16
  116. data/spec/ramaze/conf/locale_de.yaml +6 -0
  117. data/spec/ramaze/conf/locale_en.yaml +6 -0
  118. data/spec/ramaze/controller.rb +184 -0
  119. data/spec/ramaze/controller/template/greet.xhtml +1 -0
  120. data/spec/ramaze/controller/template_resolving.rb +54 -0
  121. data/spec/ramaze/dependencies.rb +16 -0
  122. data/spec/{tc_element.rb → ramaze/element.rb} +21 -19
  123. data/spec/ramaze/error.rb +64 -0
  124. data/spec/{tc_gestalt.rb → ramaze/gestalt.rb} +10 -10
  125. data/spec/{tc_global.rb → ramaze/global.rb} +7 -7
  126. data/spec/{tc_helper_aspect.rb → ramaze/helper/aspect.rb} +22 -14
  127. data/spec/{tc_helper_auth.rb → ramaze/helper/auth.rb} +9 -7
  128. data/spec/{tc_helper_cache.rb → ramaze/helper/cache.rb} +14 -24
  129. data/spec/{tc_helper_feed.rb → ramaze/helper/feed.rb} +12 -12
  130. data/spec/ramaze/helper/file.rb +17 -0
  131. data/spec/{tc_helper_flash.rb → ramaze/helper/flash.rb} +16 -17
  132. data/spec/{tc_helper_form.rb → ramaze/helper/form.rb} +25 -26
  133. data/spec/{tc_helper_link.rb → ramaze/helper/link.rb} +9 -9
  134. data/spec/{tc_helper_redirect.rb → ramaze/helper/redirect.rb} +11 -10
  135. data/spec/{tc_helper_stack.rb → ramaze/helper/stack.rb} +10 -11
  136. data/spec/ramaze/inform/informer.rb +40 -0
  137. data/spec/ramaze/inform/syslog.rb +10 -0
  138. data/spec/ramaze/localize.rb +40 -0
  139. data/spec/ramaze/morpher.rb +82 -0
  140. data/spec/ramaze/params.rb +124 -0
  141. data/spec/{public → ramaze/public}/error404.xhtml +0 -0
  142. data/spec/{public → ramaze/public}/favicon.ico +0 -0
  143. data/spec/{public → ramaze/public}/ramaze.png +0 -0
  144. data/spec/{public → ramaze/public}/test_download.css +0 -0
  145. data/spec/ramaze/request.rb +129 -0
  146. data/spec/{tc_request_mongrel.rb → ramaze/request/mongrel.rb} +2 -2
  147. data/spec/{tc_request_webrick.rb → ramaze/request/webrick.rb} +1 -1
  148. data/spec/{tc_session.rb → ramaze/session.rb} +18 -18
  149. data/spec/{tc_store.rb → ramaze/store/default.rb} +10 -10
  150. data/spec/{tc_store_yaml.rb → ramaze/store/yaml.rb} +9 -9
  151. data/spec/ramaze/template.rb +86 -0
  152. data/spec/{tc_template_amrita2.rb → ramaze/template/amrita2.rb} +5 -5
  153. data/spec/{template → ramaze/template}/amrita2/data.amrita +0 -0
  154. data/spec/{template → ramaze/template}/amrita2/index.amrita +0 -0
  155. data/spec/{template → ramaze/template}/amrita2/sum.amrita +0 -0
  156. data/spec/{tc_template_erubis.rb → ramaze/template/erubis.rb} +9 -9
  157. data/spec/{template → ramaze/template}/erubis/sum.rhtml +0 -0
  158. data/spec/ramaze/template/ezamar.rb +62 -0
  159. data/spec/{template → ramaze/template}/ezamar/another/long/action.zmr +0 -0
  160. data/spec/{template → ramaze/template}/ezamar/combined.zmr +0 -0
  161. data/spec/{template → ramaze/template}/ezamar/file_only.zmr +0 -0
  162. data/spec/{template → ramaze/template}/ezamar/index.zmr +0 -0
  163. data/spec/ramaze/template/ezamar/nested.zmr +1 -0
  164. data/spec/{template → ramaze/template}/ezamar/some__long__action.zmr +0 -0
  165. data/spec/{template → ramaze/template}/ezamar/sum.zmr +0 -0
  166. data/spec/{tc_template_haml.rb → ramaze/template/haml.rb} +7 -7
  167. data/spec/{template → ramaze/template}/haml/index.haml +0 -0
  168. data/spec/{template → ramaze/template}/haml/with_vars.haml +0 -0
  169. data/spec/{tc_template_liquid.rb → ramaze/template/liquid.rb} +7 -7
  170. data/spec/{template → ramaze/template}/liquid/index.liquid +0 -0
  171. data/spec/{template → ramaze/template}/liquid/products.liquid +0 -0
  172. data/spec/ramaze/template/markaby.rb +59 -0
  173. data/spec/{template → ramaze/template}/markaby/external.mab +0 -0
  174. data/spec/{template → ramaze/template}/markaby/sum.mab +0 -0
  175. data/spec/ramaze/template/ramaze/external.test +1 -0
  176. data/spec/{tc_tidy.rb → ramaze/tidy.rb} +3 -3
  177. metadata +145 -81
  178. data/examples/blog/public/screen.css +0 -106
  179. data/examples/blog/src/element.rb +0 -58
  180. data/examples/blog/template/view.xhtml +0 -15
  181. data/examples/blog/test/tc_entry.rb +0 -18
  182. data/lib/proto/public/404.jpg +0 -0
  183. data/spec/request_tc_helper.rb +0 -135
  184. data/spec/spec_all.rb +0 -118
  185. data/spec/spec_helper.rb +0 -66
  186. data/spec/tc_controller.rb +0 -49
  187. data/spec/tc_dependencies.rb +0 -13
  188. data/spec/tc_error.rb +0 -43
  189. data/spec/tc_morpher.rb +0 -88
  190. data/spec/tc_params.rb +0 -125
  191. data/spec/tc_template_ezamar.rb +0 -64
  192. data/spec/tc_template_markaby.rb +0 -72
  193. data/spec/template/ezamar/nested.zmr +0 -1
@@ -20,7 +20,7 @@ module Ramaze
20
20
  def self.included(klass)
21
21
  # if we haven't been included yet...
22
22
  unless defined?(Traits[klass][:aspects]) and Traits[klass][:aspects]
23
- Traits[klass] = {:aspects => {:pre => {}, :post => {}, :wrap => {}}}
23
+ klass.trait :aspects => {:pre => {}, :post => {}, :wrap => {}}
24
24
  unless defined?(klass.old_render)
25
25
  klass.class_eval do
26
26
  class << self
@@ -188,21 +188,23 @@ module Ramaze
188
188
  # it just searches for post and pre wrappers, calls them
189
189
  # before/after your action and joins the results
190
190
 
191
- def new_render(action, *params)
191
+ def new_render(action)
192
192
  arity_for = lambda{|meth| method(meth).arity rescue -1 }
193
- post, pre = resolve_aspect(action).values_at(:post, :pre)
193
+ post, pre = resolve_aspect(action.method).values_at(:post, :pre)
194
194
 
195
195
  if pre
196
196
  arity = arity_for[pre].abs
197
- pre_content = old_render(pre, *params[0,arity])
197
+ pre_action = resolve_action(pre, *action.params[0,arity])
198
+ pre_content = old_render(pre_action)
198
199
  end
199
200
 
200
201
  unless (pre_content.delete(:skip_next_aspects) rescue false)
201
- content = old_render(action, *params)
202
+ content = old_render(action)
202
203
 
203
204
  if post
204
205
  arity = arity_for[post].abs
205
- post_content = old_render(post, *params[0,arity])
206
+ post_action = resolve_action(post, *action.params[0,arity])
207
+ post_content = old_render(post_action)
206
208
  end
207
209
  end
208
210
 
@@ -60,14 +60,14 @@ module Ramaze
60
60
  redirect_referer
61
61
  end
62
62
 
63
- private
64
-
65
63
  # call( R(self, :login) ) if not logged in
66
64
 
67
65
  def login_required
68
- call(R(self, :login)) unless logged_in?
66
+ call(Rs(:login)) unless logged_in?
69
67
  end
70
68
 
69
+ private
70
+
71
71
  # checks if the user is already logged in.
72
72
  # session[:logged_in] is not nil/false
73
73
 
@@ -10,7 +10,7 @@ module Ramaze
10
10
 
11
11
  # Cache for values returned from actions
12
12
 
13
- trait :action_cache => Global.cache.new
13
+ trait :action_cache => Controller.trait[:action_cache]
14
14
 
15
15
  private
16
16
 
@@ -38,7 +38,7 @@ module Ramaze
38
38
  # action_cache.delete_if{|key, value| key =~ /"index",/}
39
39
 
40
40
  def action_cache
41
- ancestral_trait[:action_cache]
41
+ Controller.trait[:action_cache]
42
42
  end
43
43
 
44
44
  # This refers to the class-trait of cached actions, you can
@@ -0,0 +1,14 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ module Ramaze
5
+ module FileHelper
6
+ private
7
+
8
+ def send_file(file, mime_type = Tool::MIME.type_for(file))
9
+ response.header["Content-Type"] = mime_type
10
+ response.body = File.open(file)
11
+ throw(:respond)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,36 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ module Ramaze
5
+ module InformHelper
6
+
7
+ private
8
+
9
+ # The various (default) tags you can use are:
10
+ #
11
+ # :info - just outputs whatever you give to it without modification.
12
+ # :debug - applies #inspect to everything you pass
13
+ # :error - can take normal strings or exception-objects
14
+ #
15
+ #
16
+ # Usage:
17
+ #
18
+ # inform :info, 'proceeding as planned'
19
+ # # [2007-04-04 23:38:39] INFO proceeding as planned
20
+ #
21
+ # inform :debug, [1,2,3]
22
+ # # [2007-04-04 23:38:39] DEBUG [1, 2, 3]
23
+ #
24
+ # inform :error, 'something bad happened'
25
+ # # [2007-04-04 23:38:39] ERROR something bad happened
26
+ #
27
+ # inform :error, exception
28
+ # # [2007-04-04 23:40:59] ERROR #<RuntimeError: Some exception>
29
+ # # [2007-04-04 23:40:59] ERROR hello.rb:23:in `index'
30
+ # # ... rest of backtrace ...
31
+
32
+ def inform tag, *args
33
+ Inform.send(tag, *args)
34
+ end
35
+ end
36
+ end
@@ -32,6 +32,8 @@ module Ramaze
32
32
 
33
33
  module LinkHelper
34
34
 
35
+ private
36
+
35
37
  # Usage:
36
38
  # link MainController, :foo #=> '<a href="/foo">foo</a>'
37
39
  # link MinorController, :foo #=> '<a href="/minor/foo">foo</a>'
@@ -40,7 +42,7 @@ module Ramaze
40
42
  # link MainController, :foo, :title => 'a' #=> '<a href="/minor/foo/bar">a</a>'
41
43
  # link MainController, :foo => :bar #=> '/?foo=bar'
42
44
 
43
- def link *to
45
+ def Rlink *to
44
46
  hash = to.last.is_a?(Hash) ? to.pop : {}
45
47
 
46
48
  to = to.flatten
@@ -64,6 +66,8 @@ module Ramaze
64
66
  end
65
67
  end
66
68
 
69
+ alias link Rlink
70
+
67
71
  # Usage:
68
72
  # R MainController, :foo #=> '/foo'
69
73
  # R MinorController, :foo #=> '/minor/foo'
@@ -76,11 +80,11 @@ module Ramaze
76
80
  to << {:raw => true}
77
81
  end
78
82
 
79
- link(*to)
83
+ Rlink(*to)
80
84
  end
81
85
 
82
86
  def Rs(*to)
83
- R(self, *to)
87
+ R(Controller.current, *to)
84
88
  end
85
89
  end
86
90
  end
@@ -0,0 +1,30 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ module Ramaze
5
+ module MarkabyHelper
6
+ private
7
+
8
+ # use this inside your controller to directly build Markaby
9
+ # Refer to the Markaby-documentation and testsuite for more examples.
10
+ # Usage:
11
+ # mab { h1 "Apples & Oranges"} #=> "<h1>Apples &amp; Oranges</h1>"
12
+ # mab { h1 'Apples', :class => 'fruits&floots' } #=> "<h1 class=\"fruits&amp;floots\">Apples</h1>"
13
+
14
+ def markaby(ivs = {}, helpers = nil, &block)
15
+ builder = ::Markaby::Builder
16
+ builder.extend(Ramaze::Helper)
17
+ builder.send(:helper, :link)
18
+
19
+ iv_hash = {}
20
+ instance_variables.each do |iv|
21
+ key, value = iv.gsub('@', '').to_sym, instance_variable_get(iv)
22
+ iv_hash[key] = value
23
+ end
24
+
25
+ builder.new(iv_hash.merge(ivs), helpers, &block).to_s
26
+ end
27
+
28
+ alias mab markaby
29
+ end
30
+ end
@@ -21,6 +21,8 @@ module Ramaze
21
21
 
22
22
  module RedirectHelper
23
23
 
24
+ private
25
+
24
26
  # Usage:
25
27
  # redirect R(MainController)
26
28
  # redirect R(MainController, :foo)
@@ -1,187 +1,13 @@
1
1
  # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
- module Ramaze
5
-
6
- # The module Inform is mainly used for Debugging and Logging.
7
- #
8
- # You can include/extend your objects with it and access its methods.
9
- # Please note that all methods are private, so you should use them only
10
- # within your object. The reasoning for making them private is simply
11
- # to avoid interference inside the controller.
12
- #
13
- # In case you want to use it from the outside you can work over the
14
- # Informer object. This is used for example as the Logger for WEBrick.
15
- #
16
- # Inform is a tag-based system, Global.inform_tags holds the tags
17
- # that are used to filter the messages passed to Inform. The default
18
- # is to use all tags :debug, :info and :error.
19
- #
20
- # You can control what gets logged over this Set.
21
-
22
- module Inform
23
- # the possible tags
24
- trait :tags => [:debug, :info, :error]
25
-
26
- private
27
-
28
- # general debugging information, this yields quite verbose information
29
- # about how requests make their way through Ramaze.
30
- #
31
- # Use it for your own debugging purposes.
32
- # All messages you pass to it are going to be inspected.
33
- # it is aliased to #D for convenience.
34
-
35
- def debug *messages
36
- return unless inform_tag?(:debug)
37
- log(Global.inform_prefix_debug, *messages.map{|m| m.inspect})
38
- end
39
-
40
- alias D debug
41
-
42
- def debug?() inform_tag?(:debug) end
43
-
44
- # A little but powerful method to debug calls to methods.
45
- #
46
- # def foo(*args)
47
- # meth_debug(:foo, args)
48
- # end
49
- #
50
- # foo :bar
51
- #
52
- # Will give you
53
- #
54
- # [2007-01-26 22:17:24] DEBUG foo([:bar])
55
- #
56
- # It will also run inspect on all parameters you pass to it (only the
57
- # method-name is processed with to_s)
58
- #
59
- # It is aliased to #mD
60
-
61
- def meth_debug meth, *params
62
- return unless inform_tag?(:debug)
63
- log(Global.inform_prefix_debug, "#{meth}(#{params.map{|pa| pa.inspect}.join(', ')})")
64
- end
65
-
66
- alias mD meth_debug
67
-
68
- # General information about startup, requests and other things.
69
- #
70
- # Use of this method is mainly for things that are not overly verbose
71
- # but give you a general overview about what's happening.
72
-
73
- def info message
74
- return unless inform_tag?(:info)
75
- log(Global.inform_prefix_info, message)
76
- end
77
-
78
- def info?() inform_tag?(:info) end
79
-
80
- # Informing yourself about errors, you can pass it instances of Error
81
- # but also simple Strings.
82
- # (all that responds to :message/:backtrace or to_s)
83
- #
84
- # It will nicely truncate the backtrace to:
85
- # Global.inform_backtrace_size
86
- # It will not differentiate its behaviour based on other tags, as
87
- # having a full backtrace is the most valuable thing to fixing the issue.
88
- #
89
- # However, you can set a different behaviour by adding/removing tags from:
90
- # Global.inform_backtrace_for
91
- # By default it just points to Global.inform_tags
92
-
93
- def error *messages
94
- return unless inform_tag?(:error)
95
- prefix = Global.inform_prefix_error
96
- messages.each do |e|
97
- if e.respond_to?(:message) and e.respond_to?(:backtrace)
98
- log prefix, e.message
99
- if (Global.inform_backtrace_for || Global.inform_tags).any?{|t| inform_tag?(t)}
100
- e.backtrace[0..10].each do |bt|
101
- log prefix, bt
102
- end
103
- end
104
- else
105
- log prefix, e
106
- end
107
- end
108
- end
109
-
110
- def error?() inform_tag?(:error) end
111
-
112
- # This uses Global.inform_timestamp or a date in the format of
113
- # %Y-%m-%d %H:%M:%S
114
- # # => "2007-01-19 21:09:32"
4
+ require 'ramaze/inform/informing'
115
5
 
116
- def timestamp
117
- mask = Global.inform_timestamp
118
- Time.now.strftime(mask || "%Y-%m-%d %H:%M:%S")
119
- end
120
-
121
- # is the given inform_tag in Global.inform_tags ?
122
-
123
- def inform_tag?(inform_tag)
124
- Global.inform_tags.include?(inform_tag)
125
- end
126
-
127
- # the common logging-method, you shouldn't have to call this yourself
128
- # it takes the prefix and any number of messages.
129
- #
130
- # The produced inform-message consists of
131
- # [timestamp] prefix message
132
- # For the output is anything used that responds to :puts, the default
133
- # is $stdout in:
134
- # Global.inform_to
135
- # where you can configure it.
136
- #
137
- # To log to a file just do
138
- # Global.inform_to = File.open('log.txt', 'a+')
139
-
140
- def log prefix, *messages
141
- [messages].flatten.each do |message|
142
- compiled = %{[#{timestamp}] #{prefix} #{message}}
143
-
144
- pipes = Global.inform_pipes = pipify(Global.inform_to)
145
-
146
- pipes.each do |pipe|
147
- pipe.puts(*compiled) unless (pipe.respond_to?(:closed?) and pipe.closed?)
148
- end
149
- end
150
- end
151
-
152
- def pipify *ios
153
- ios.flatten.map do |io|
154
- case io
155
- when :stdout, 'stdout' : $stdout
156
- when :stderr, 'stderr' : $stderr
157
- when IO : io
158
- else
159
- File.open(io.to_s, 'ab+')
160
- end
161
- end
162
- end
163
-
164
- extend self
165
- end
166
-
167
- # This class acts as a object you can pass to any other logger, it's basically
168
- # just including Inform and making its methods public
169
-
170
- class GlobalInformer
171
- include Inform
172
-
173
- public :error, :error?, :info, :info?, :meth_debug, :debug, :debug?
174
-
175
- # this simply sends the parameters to #debug
176
-
177
- def <<(*str)
178
- debug(*str)
179
- end
180
- end
181
-
182
- # The usual instance of GlobalInformer, for example used for WEBrick
183
-
184
- Informer = GlobalInformer.new
185
-
186
- include Inform
6
+ module Ramaze
7
+ autoload :Analogger, "ramaze/inform/analogger.rb"
8
+ autoload :Informer, "ramaze/inform/informer.rb"
9
+ autoload :Syslog, "ramaze/inform/syslog.rb"
10
+ autoload :Growl, "ramaze/inform/growl.rb"
11
+ autoload :Xosd, "ramaze/inform/xosd.rb"
12
+ autoload :LogHub, "ramaze/inform/hub.rb"
187
13
  end
@@ -0,0 +1,19 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'swiftcore/Analogger/Client'
5
+
6
+ module Ramaze
7
+
8
+ class Analogger < ::Swiftcore::Analogger::Client
9
+ include Informing
10
+
11
+ def initialize(name = 'walrus', host = '127.0.0.1', port = 6766)
12
+ super
13
+ end
14
+
15
+ def inform(tag, *args)
16
+ log(tag, args.join("\n"))
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'ruby-growl'
5
+
6
+ module Ramaze
7
+ class Growl < ::Growl
8
+
9
+ trait :defaults => {
10
+ :name => 'walrus',
11
+ :host => 'localhost',
12
+ :password => 'walrus',
13
+ :all_notifies => %w[error warn debug info],
14
+ :default_notifies => %w[error warn info]
15
+ }
16
+
17
+ def initialize(options = {})
18
+ options = class_trait[:defaults].merge(options).values_at(:host, :name, :all_notifies, :default_notifies, :password)
19
+ super(*options)
20
+ end
21
+
22
+ def inform(tag, *args)
23
+ notify(tag.to_s, Time.now.strftime("%X"), args.join("\n")[0..100])
24
+ rescue Errno::EMSGSIZE
25
+ # Send size was to big (not really), ignore
26
+ end
27
+ end
28
+ end