ramaze 2008.11 → 2009.01

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. data/README.markdown +7 -7
  2. data/benchmark/run.rb +1 -1
  3. data/doc/CHANGELOG +662 -0
  4. data/examples/app/blog/model/entry.rb +8 -1
  5. data/examples/app/blog/spec/blog.rb +2 -2
  6. data/examples/app/rapaste/spec/rapaste.rb +1 -1
  7. data/examples/app/rapaste/start.rb +2 -2
  8. data/examples/app/rapaste/view/view.xhtml +3 -0
  9. data/examples/app/todolist/spec/todolist.rb +1 -1
  10. data/examples/app/whywiki/spec/whywiki.rb +1 -1
  11. data/examples/app/wikore/spec/wikore.rb +1 -1
  12. data/examples/app/wikore/src/model.rb +8 -2
  13. data/examples/app/wiktacular/spec/wiktacular.rb +1 -1
  14. data/examples/app/wiktacular/src/model.rb +1 -1
  15. data/examples/basic/partial.rb +28 -0
  16. data/examples/helpers/httpdigest.rb +68 -10
  17. data/examples/misc/ramaise.rb +2 -2
  18. data/examples/templates/template_amrita2.rb +1 -1
  19. data/examples/templates/template_erubis.rb +1 -1
  20. data/examples/templates/template_ezamar.rb +1 -1
  21. data/examples/templates/template_haml.rb +2 -2
  22. data/examples/templates/template_liquid.rb +1 -1
  23. data/examples/templates/template_markaby.rb +2 -2
  24. data/examples/templates/template_nagoro.rb +1 -1
  25. data/examples/templates/template_redcloth.rb +1 -1
  26. data/examples/templates/template_remarkably.rb +2 -2
  27. data/examples/templates/template_tenjin.rb +1 -1
  28. data/examples/templates/template_xslt.rb +1 -1
  29. data/lib/proto/controller/init.rb +2 -1
  30. data/lib/proto/model/init.rb +3 -3
  31. data/lib/proto/public/dispatch.fcgi +2 -2
  32. data/lib/proto/spec/main.rb +3 -3
  33. data/lib/proto/start.rb +4 -0
  34. data/lib/ramaze.rb +6 -0
  35. data/lib/ramaze/action.rb +7 -1
  36. data/lib/ramaze/action/render.rb +6 -5
  37. data/lib/ramaze/cache.rb +1 -0
  38. data/lib/ramaze/cache/file.rb +71 -0
  39. data/lib/ramaze/contrib.rb +1 -1
  40. data/lib/ramaze/contrib/email.rb +2 -0
  41. data/lib/ramaze/contrib/facebook.rb +2 -2
  42. data/lib/ramaze/contrib/file_cache.rb +2 -64
  43. data/lib/ramaze/contrib/sequel/image.rb +1 -1
  44. data/lib/ramaze/controller.rb +9 -1
  45. data/lib/ramaze/controller/resolve.rb +10 -5
  46. data/lib/ramaze/current/request.rb +87 -70
  47. data/lib/ramaze/current/session.rb +3 -5
  48. data/lib/ramaze/current/session/hash.rb +7 -11
  49. data/lib/ramaze/dispatcher/action.rb +2 -0
  50. data/lib/ramaze/dispatcher/file.rb +6 -1
  51. data/lib/ramaze/helper.rb +12 -4
  52. data/lib/ramaze/helper/aspect.rb +2 -2
  53. data/lib/ramaze/helper/bench.rb +43 -0
  54. data/lib/ramaze/helper/form.rb +5 -2
  55. data/lib/ramaze/helper/formatting.rb +4 -0
  56. data/lib/ramaze/helper/gravatar.rb +18 -1
  57. data/lib/ramaze/helper/httpdigest.rb +55 -28
  58. data/lib/ramaze/helper/markaby.rb +1 -1
  59. data/lib/ramaze/helper/maruku.rb +2 -0
  60. data/lib/ramaze/helper/paginate.rb +1 -1
  61. data/lib/ramaze/helper/partial.rb +1 -1
  62. data/lib/ramaze/helper/redirect.rb +22 -4
  63. data/lib/ramaze/helper/user.rb +4 -4
  64. data/lib/ramaze/option.rb +1 -1
  65. data/lib/ramaze/option/holder.rb +3 -3
  66. data/lib/ramaze/reloader.rb +25 -41
  67. data/lib/ramaze/reloader/watch_inotify.rb +85 -0
  68. data/lib/ramaze/reloader/watch_stat.rb +58 -0
  69. data/lib/ramaze/snippets/divide.rb +2 -0
  70. data/lib/ramaze/snippets/numeric/time.rb +1 -1
  71. data/lib/ramaze/snippets/object/__dir__.rb +3 -3
  72. data/lib/ramaze/snippets/object/acquire.rb +3 -6
  73. data/lib/ramaze/snippets/ramaze/acquire.rb +31 -0
  74. data/lib/ramaze/snippets/ramaze/deprecated.rb +2 -1
  75. data/lib/ramaze/spec/helper/mock_http.rb +6 -5
  76. data/lib/ramaze/template/ezamar/render_partial.rb +8 -0
  77. data/lib/ramaze/tool/mime.rb +1 -1
  78. data/lib/ramaze/tool/project_creator.rb +2 -1
  79. data/lib/ramaze/version.rb +2 -2
  80. data/rake_tasks/coverage.rake +4 -5
  81. data/rake_tasks/spec.rake +6 -6
  82. data/ramaze-2008.11.gem +0 -0
  83. data/ramaze.gemspec +759 -758
  84. data/spec/contrib/profiling.rb +2 -2
  85. data/spec/ramaze/action/file_cache.rb +1 -1
  86. data/spec/ramaze/action/layout.rb +1 -1
  87. data/spec/ramaze/controller/actionless_templates.rb +1 -1
  88. data/spec/ramaze/controller/resolve.rb +1 -1
  89. data/spec/ramaze/controller/template_resolving.rb +1 -1
  90. data/spec/ramaze/dispatcher/directory.rb +3 -3
  91. data/spec/ramaze/helper/aspect.rb +1 -1
  92. data/spec/ramaze/helper/partial.rb +1 -1
  93. data/spec/ramaze/localize.rb +1 -1
  94. data/spec/ramaze/rewrite.rb +1 -1
  95. data/spec/ramaze/template.rb +3 -3
  96. data/spec/ramaze/template/amrita2.rb +1 -1
  97. data/spec/ramaze/template/erubis.rb +1 -1
  98. data/spec/ramaze/template/ezamar.rb +1 -1
  99. data/spec/ramaze/template/haml.rb +2 -2
  100. data/spec/ramaze/template/nagoro.rb +1 -1
  101. data/spec/ramaze/template/redcloth.rb +1 -1
  102. data/spec/ramaze/template/sass.rb +1 -1
  103. data/spec/ramaze/template/tenjin.rb +1 -1
  104. data/spec/snippets/object/__dir__.rb +6 -0
  105. data/spec/snippets/{object → ramaze}/acquire.rb +24 -18
  106. metadata +18 -16
  107. data/lib/ramaze/contrib/auto_params.rb +0 -135
  108. data/lib/ramaze/contrib/auto_params/get_args.rb +0 -58
  109. data/spec/contrib/auto_params.rb +0 -121
  110. data/spec/snippets/divide.rb +0 -19
@@ -23,7 +23,14 @@ class Entry < Sequel::Model(:entry)
23
23
  end
24
24
  end
25
25
 
26
- Entry.create_table! unless Entry.table_exists?
26
+ begin
27
+ Entry.create_table!
28
+ rescue Sequel::DatabaseError => e
29
+ if e.message !~ /table.*already exists/
30
+ raise e
31
+ end
32
+ end
33
+
27
34
 
28
35
  if Entry.empty?
29
36
  Entry.add 'Blog created', 'Exciting news today, this blog was created'
@@ -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__/'../blog.db')
86
+ FileUtils.rm_f(__DIR__('../blog.db'))
87
87
  end
@@ -3,7 +3,7 @@ require 'ramaze/spec/helper'
3
3
 
4
4
  spec_require 'hpricot', 'uv', 'sequel'
5
5
 
6
- $LOAD_PATH.unshift base = __DIR__/'..'
6
+ $LOAD_PATH.unshift base = __DIR__('..')
7
7
  require 'start'
8
8
 
9
9
  describe 'RaPaste' do
@@ -7,7 +7,7 @@ require 'uv'
7
7
 
8
8
  Ramaze::Log.debug "Initializing UltraViolet..."
9
9
 
10
- Uv.copy_files "xhtml", __DIR__/"public"
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 = "#{__DIR__}/rapaste.sqlite" # for specs
19
+ DB_FILE = __DIR__("rapaste.sqlite") # for specs
20
20
  DB = Sequel.connect("sqlite://#{DB_FILE}")
21
21
 
22
22
  require 'model/paste'
@@ -1,6 +1,9 @@
1
1
  #{@pager}
2
2
  <script type="text/javascript" src="/js/jquery.js"></script>
3
3
  <script type="text/javascript">
4
+ $(function() {
5
+ $('#paste_body').dblclick(function(){ $('.line-numbers').toggle() });
6
+ });
4
7
  function change_style(name){
5
8
  $('link')[1].href = '/css/' + name + '.css';
6
9
  $('pre')[0].className = name;
@@ -3,7 +3,7 @@ require 'ramaze/spec/helper'
3
3
 
4
4
  spec_require 'hpricot'
5
5
 
6
- $LOAD_PATH.unshift base = __DIR__/'..'
6
+ $LOAD_PATH.unshift base = __DIR__('..')
7
7
  require 'start'
8
8
 
9
9
  describe 'todolist' do
@@ -3,7 +3,7 @@ require 'ramaze/spec/helper'
3
3
 
4
4
  spec_require 'bluecloth', 'hpricot'
5
5
 
6
- $LOAD_PATH.unshift base = __DIR__/'..'
6
+ $LOAD_PATH.unshift base = __DIR__('..')
7
7
 
8
8
  Db = Ramaze::YAMLStoreCache.new("#{base}/testwiki.yaml")
9
9
  require 'start'
@@ -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 'Wikore' do
@@ -5,7 +5,7 @@ begin
5
5
  when :memory
6
6
  DB = Sequel.sqlite
7
7
  else
8
- DB_FILE = __DIR__/'wikore.db'
8
+ DB_FILE = __DIR__('wikore.db')
9
9
  DB = Sequel.connect("sqlite://#{DB_FILE}")
10
10
  end
11
11
  rescue NoMethodError
@@ -48,6 +48,12 @@ module Model
48
48
  end
49
49
 
50
50
  [Page, OldPage].each do |klass|
51
- klass.create_table unless klass.table_exists?
51
+ begin
52
+ klass.create_table
53
+ rescue Sequel::DatabaseError => e
54
+ if e.message !~ /table.*already exists/
55
+ raise e
56
+ end
57
+ end
52
58
  end
53
59
  end
@@ -3,7 +3,7 @@ require 'ramaze/spec/helper'
3
3
 
4
4
  spec_require 'hpricot', 'bluecloth'
5
5
 
6
- $LOAD_PATH.unshift base = __DIR__/'..'
6
+ $LOAD_PATH.unshift base = __DIR__('..')
7
7
  require 'start'
8
8
 
9
9
  describe 'wiktacular' do
@@ -2,7 +2,7 @@ require 'fileutils'
2
2
  require 'cgi'
3
3
 
4
4
  class WikiEntry
5
- ENTRIES_DIR = __DIR__/'../mkd'
5
+ ENTRIES_DIR = __DIR__('../mkd')
6
6
  class << self
7
7
  def [](name)
8
8
  if File.exist?(ENTRIES_DIR/File.basename(File.expand_path(name)))
@@ -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
@@ -4,12 +4,61 @@ require 'ramaze'
4
4
  REALM = 'ramaze authentication required'
5
5
 
6
6
  class MainController < Ramaze::Controller
7
+
8
+ helper :httpdigest
9
+
7
10
  def index
8
11
  %|
12
+ <p><a href="#{Rs(:eyes_only)}">eyes only</a></p>
9
13
  <p><a href="#{R(SecretController,'/')}">secret area</a></p>
10
- <p><a href="#{R(GuestController,'/')}">guest area</a> password must be the same as username</p>
14
+ <p><a href="#{R(GuestController,'/')}">guest area</a> username is <em>guest</em> password is <em>access</em></p>
11
15
  |
12
16
  end
17
+
18
+ def eyes_only
19
+ httpdigest('eyes only',REALM) do |username|
20
+ password = username.reverse
21
+ MD5.hexdigest([username,REALM,password].join(':'))
22
+ end
23
+ "Shhhh don't tell anyone"
24
+ end
25
+
26
+ end
27
+
28
+ class LoginController < Ramaze::Controller
29
+ map '/login'
30
+
31
+ helper :httpdigest
32
+
33
+ def index
34
+ @username ||= session[:username]
35
+ @username ||= httpdigest('login area',REALM)
36
+ "Hi there #@username!"
37
+ end
38
+
39
+ def login
40
+ %|<form action="#{Rs(:post)}" method="post"><input type="text" name="username"/><input type="password" name="password"/><input type="submit"/></form>|
41
+ end
42
+
43
+ def post
44
+ username = request.params["username"]
45
+ password = request.params["password"]
46
+ if password == "entry"
47
+ session[:username] = username
48
+ destination = session[ :redirect_after_login ]
49
+ session.delete( :redirect_after_login )
50
+ redirect destination
51
+ end
52
+ redirect Rs(:login)
53
+ end
54
+
55
+ protected
56
+
57
+ def httpdigest_failure
58
+ session[ :redirect_after_login ] = Rs(Ramaze::Action.current.method)
59
+ redirect Rs(:login)
60
+ end
61
+
13
62
  end
14
63
 
15
64
  class SecretController < Ramaze::Controller
@@ -17,17 +66,22 @@ class SecretController < Ramaze::Controller
17
66
  helper :aspect
18
67
  helper :httpdigest
19
68
 
69
+ USERS = { 'admin' => 'secret', 'root' => 'password' }
70
+
20
71
  before_all do
21
- @username = httpdigest('secret area',REALM) do |username|
22
- { 'admin' => MD5.hexdigest("admin:#{REALM}:secret"),
23
- 'root' => MD5.hexdigest("root:#{REALM}:access"),
24
- }[ username ]
25
- end
72
+ @username = httpdigest('secret area',REALM)
26
73
  end
27
74
 
28
75
  def index
29
76
  "Hello <em>#@username</em>, welcome to SECRET world"
30
77
  end
78
+
79
+ protected
80
+
81
+ def httpdigest_lookup_plaintext_password username
82
+ USERS[ username ]
83
+ end
84
+
31
85
  end
32
86
 
33
87
  class GuestController < Ramaze::Controller
@@ -36,15 +90,19 @@ class GuestController < Ramaze::Controller
36
90
  helper :httpdigest
37
91
 
38
92
  before_all do
39
- @username = httpdigest('guest area',REALM) do |username|
40
- username_used = username
41
- MD5.hexdigest([username,REALM,username].join(':'))
42
- end
93
+ @username = httpdigest('guest area',REALM)
43
94
  end
44
95
 
45
96
  def index
46
97
  "Hello <em>#@username</em>, welcome to GUEST world."
47
98
  end
99
+
100
+ protected
101
+
102
+ def httpdigest_lookup_password username
103
+ return "b71f15b2f6dd4834224fbe02169ed94c" if username == "guest"
104
+ end
105
+
48
106
  end
49
107
 
50
108
  Ramaze.start
@@ -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__/:entries
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__/:template
5
+ view_root __DIR__(:template)
6
6
  engine :Amrita2
7
7
 
8
8
  def index
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'ramaze'
3
3
 
4
4
  class MainController < Ramaze::Controller
5
- view_root __DIR__/:template
5
+ view_root __DIR__(:template)
6
6
  engine :Erubis
7
7
 
8
8
  def index
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'ramaze'
3
3
 
4
4
  class MainController < Ramaze::Controller
5
- view_root __DIR__/:template
5
+ view_root __DIR__(:template)
6
6
 
7
7
  def index
8
8
  %{ #{A 'Home', :href => :/} | #{A(:internal)} | #{A(:external)} }
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'ramaze'
3
3
 
4
4
  class MainController < Ramaze::Controller
5
- view_root __DIR__/:template
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__/:template
5
+ view_root __DIR__(:template)
6
6
  engine :Liquid
7
7
 
8
8
  def index
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'ramaze'
3
3
 
4
4
  class MainController < Ramaze::Controller
5
- view_root __DIR__/'template'
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__/:template
5
+ view_root __DIR__(:template)
6
6
  engine :Nagoro
7
7
 
8
8
  def index
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'ramaze'
3
3
 
4
4
  class MainController < Ramaze::Controller
5
- view_root __DIR__/:template
5
+ view_root __DIR__(:template)
6
6
  engine :RedCloth
7
7
  layout :layout
8
8
 
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'ramaze'
3
3
 
4
4
  class MainController < Ramaze::Controller
5
- view_root __DIR__/:template
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
@@ -2,7 +2,7 @@ require "rubygems"
2
2
  require "ramaze"
3
3
 
4
4
  class MainController < Ramaze::Controller
5
- view_root __DIR__/:template
5
+ view_root __DIR__(:template)
6
6
  engine :Tenjin
7
7
 
8
8
  def index
@@ -3,7 +3,7 @@ require 'ramaze'
3
3
  require 'ramaze/gestalt'
4
4
 
5
5
  class MainController < Ramaze::Controller
6
- view_root __DIR__/:template
6
+ view_root __DIR__(:template)
7
7
  engine :XSLT
8
8
 
9
9
  def index
@@ -7,4 +7,5 @@ class Controller < Ramaze::Controller
7
7
  engine :Ezamar
8
8
  end
9
9
 
10
- acquire __DIR__/"*.rb"
10
+ # Here go your requires for subclasses of Controller:
11
+ require 'controller/main'
@@ -1,4 +1,4 @@
1
- # Here goes your database connection and options
1
+ # Here goes your database connection and options:
2
2
 
3
- # Require all models in '/model/*.rb'
4
- acquire __DIR__/"*.rb"
3
+ # Here go your requires for models:
4
+ # require 'model/user'