rad_core 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. data/Rakefile +2 -2
  2. data/bin/rad +20 -25
  3. data/lib/components/config.rb +1 -1
  4. data/lib/components/configurators.rb +2 -2
  5. data/lib/components/controller.rb +2 -2
  6. data/lib/components/conveyors.rb +2 -2
  7. data/lib/components/environment.rb +1 -1
  8. data/lib/components/environment.yml +28 -28
  9. data/lib/components/flash.rb +1 -1
  10. data/lib/components/html.rb +1 -1
  11. data/lib/components/http.rb +1 -1
  12. data/lib/components/http.yml +1 -1
  13. data/lib/components/logger.rb +2 -2
  14. data/lib/components/mailer.rb +2 -2
  15. data/lib/components/remote.rb +1 -1
  16. data/lib/components/router.rb +3 -3
  17. data/lib/components/template.rb +2 -2
  18. data/lib/components/web.rb +3 -3
  19. data/lib/rad.rb +1 -1
  20. data/lib/rad/_support/active_support.rb +7 -7
  21. data/lib/rad/_support/active_support/locales/ru/actionview.yml +8 -8
  22. data/lib/rad/_support/active_support/locales/ru/activesupport.yml +4 -4
  23. data/lib/rad/_support/active_support/locales/ru/datetime.yml +5 -5
  24. data/lib/rad/_support/active_support/time.rb +2 -2
  25. data/lib/rad/_support/addressable.rb +6 -6
  26. data/lib/rad/_support/class_loader.rb +1 -1
  27. data/lib/rad/_support/extensions.rb +5 -5
  28. data/lib/rad/_support/filters.rb +13 -13
  29. data/lib/rad/_support/hacks_and_fixes.rb +5 -5
  30. data/lib/rad/_support/mime.rb +4 -4
  31. data/lib/rad/_support/module.rb +11 -11
  32. data/lib/rad/_support/require.rb +5 -5
  33. data/lib/rad/_support/rson.rb +4 -4
  34. data/lib/rad/_support/string.rb +9 -9
  35. data/lib/rad/cli/helper.rb +5 -5
  36. data/lib/rad/configurators/_require.rb +2 -2
  37. data/lib/rad/configurators/abstract.rb +5 -5
  38. data/lib/rad/configurators/web.rb +8 -8
  39. data/lib/rad/controller/_abstract.rb +15 -14
  40. data/lib/rad/controller/_abstract/miscellaneous.rb +5 -5
  41. data/lib/rad/controller/_abstract/render.rb +40 -40
  42. data/lib/rad/controller/_abstract/responder.rb +1 -1
  43. data/lib/rad/controller/_context.rb +1 -1
  44. data/lib/rad/controller/_http.rb +11 -11
  45. data/lib/rad/controller/_require.rb +6 -6
  46. data/lib/rad/controller/processors/controller_caller.rb +3 -3
  47. data/lib/rad/controller/processors/controller_error_handling.rb +14 -14
  48. data/lib/rad/controller/processors/controller_logger.rb +1 -1
  49. data/lib/rad/conveyors/_conveyor.rb +9 -9
  50. data/lib/rad/conveyors/_conveyors.rb +4 -4
  51. data/lib/rad/conveyors/_params.rb +5 -5
  52. data/lib/rad/conveyors/_processor.rb +2 -2
  53. data/lib/rad/conveyors/_workspace.rb +5 -5
  54. data/lib/rad/conveyors/processors/conveyor_logger.rb +3 -3
  55. data/lib/rad/environment/_config.rb +4 -4
  56. data/lib/rad/environment/_environment.rb +10 -10
  57. data/lib/rad/environment/_files_helper.rb +5 -5
  58. data/lib/rad/environment/_logger.rb +9 -9
  59. data/lib/rad/environment/_require.rb +4 -4
  60. data/lib/rad/gems.rb +14 -14
  61. data/lib/rad/html/_flash.rb +5 -5
  62. data/lib/rad/html/_helpers/basic_html_helper.rb +12 -12
  63. data/lib/rad/html/_helpers/form_helper.rb +19 -19
  64. data/lib/rad/html/_helpers/javascript_helper.rb +6 -6
  65. data/lib/rad/html/_helpers/model_helper.rb +17 -17
  66. data/lib/rad/html/_require.rb +1 -1
  67. data/lib/rad/html/processors/prepare_flash.rb +3 -3
  68. data/lib/rad/html/processors/scoped_params.rb +4 -4
  69. data/lib/rad/http/_http.rb +4 -4
  70. data/lib/rad/http/_http_adapter.rb +5 -5
  71. data/lib/rad/http/_request.rb +11 -11
  72. data/lib/rad/http/_require.rb +8 -8
  73. data/lib/rad/http/_response.rb +5 -5
  74. data/lib/rad/http/_support/rack/fixes.rb +3 -3
  75. data/lib/rad/http/_support/rack/rack_adapter.rb +5 -5
  76. data/lib/rad/http/processors/evaluate_format.rb +4 -4
  77. data/lib/rad/http/processors/http_logger.rb +3 -3
  78. data/lib/rad/http/processors/http_writer.rb +7 -7
  79. data/lib/rad/http/processors/prepare_params.rb +5 -5
  80. data/lib/rad/mailer/_letter.rb +1 -1
  81. data/lib/rad/mailer/_mailer.rb +1 -1
  82. data/lib/rad/mailer/_mailer_controller.rb +6 -6
  83. data/lib/rad/mailer/_require.rb +1 -1
  84. data/lib/rad/mailer/processors/letter_builder.rb +6 -6
  85. data/lib/rad/profiles/mailer.rb +2 -2
  86. data/lib/rad/profiles/web.rb +13 -13
  87. data/lib/rad/remote/processors/remote_caller.rb +10 -10
  88. data/lib/rad/remote/processors/remote_logger.rb +1 -1
  89. data/lib/rad/router/_abstract_router.rb +9 -9
  90. data/lib/rad/router/_alias_router.rb +34 -34
  91. data/lib/rad/router/_basic_router.rb +12 -12
  92. data/lib/rad/router/_configurator.rb +6 -6
  93. data/lib/rad/router/_core_routing_helper.rb +4 -4
  94. data/lib/rad/router/_object_router.rb +45 -45
  95. data/lib/rad/router/_require.rb +8 -8
  96. data/lib/rad/router/_restful_router.rb +25 -25
  97. data/lib/rad/router/_router.rb +78 -78
  98. data/lib/rad/router/_simple_router.rb +5 -5
  99. data/lib/rad/router/processors/router.rb +6 -6
  100. data/lib/rad/spec/controller.rb +9 -9
  101. data/lib/rad/spec/environment.rb +7 -7
  102. data/lib/rad/spec/http.rb +2 -2
  103. data/lib/rad/spec/http_controller.rb +22 -22
  104. data/lib/rad/spec/mailer.rb +4 -4
  105. data/lib/rad/spec/remote.rb +1 -1
  106. data/lib/rad/spec/router.rb +4 -4
  107. data/lib/rad/spec/template.rb +2 -2
  108. data/lib/rad/tasks.rb +2 -2
  109. data/lib/rad/template/_context.rb +15 -15
  110. data/lib/rad/template/_relative_path_resolver.rb +1 -1
  111. data/lib/rad/template/_support/tilt.rb +17 -17
  112. data/lib/rad/template/_support/tilt_fixes.rb +3 -3
  113. data/lib/rad/template/_template.rb +47 -47
  114. data/lib/rad/web/_ajax_helper.rb +4 -4
  115. data/lib/rad/web/_controller_miscellaneous_helper.rb +5 -5
  116. data/lib/rad/web/_ensure_no_www.rb +5 -5
  117. data/lib/rad/web/_protect_from_forgery.rb +18 -18
  118. data/lib/rad/web/_require.rb +7 -7
  119. data/lib/rad/web/_router/abstract_routing_helper.rb +4 -4
  120. data/lib/rad/web/_router/controller_routing_helper.rb +15 -15
  121. data/lib/rad/web/_router/view_routing_helper.rb +12 -12
  122. data/readme.md +5 -5
  123. data/spec/controller/abstract_spec.rb +29 -29
  124. data/spec/controller/context_spec.rb +32 -32
  125. data/spec/controller/error_handling_spec.rb +31 -31
  126. data/spec/controller/helper_spec.rb +13 -13
  127. data/spec/controller/http_spec.rb +32 -32
  128. data/spec/controller/render_spec.rb +59 -59
  129. data/spec/conveyors/conveyors_spec.rb +32 -32
  130. data/spec/environment/config_spec.rb +6 -6
  131. data/spec/environment/environment_spec.rb +7 -7
  132. data/spec/environment/minimal_app_spec.rb +4 -4
  133. data/spec/environment/standard_app_spec.rb +10 -10
  134. data/spec/html/basic_html_helper_spec.rb +6 -6
  135. data/spec/html/form_helper_spec.rb +5 -5
  136. data/spec/html/javascript_helper_spec.rb +4 -4
  137. data/spec/html/model_helper_spec.rb +12 -12
  138. data/spec/html/scoped_params_spec.rb +2 -2
  139. data/spec/html/spec_helper.rb +3 -3
  140. data/spec/http/http_spec.rb +9 -9
  141. data/spec/http/miscellaneous_spec.rb +2 -2
  142. data/spec/mailer/mail_controller_spec.rb +23 -23
  143. data/spec/remote/remote_spec.rb +26 -26
  144. data/spec/router/alias_router_spec.rb +22 -22
  145. data/spec/router/basic_router_spec.rb +8 -8
  146. data/spec/router/configurator_spec.rb +4 -4
  147. data/spec/router/integration_spec.rb +17 -17
  148. data/spec/router/object_router_spec.rb +47 -47
  149. data/spec/router/persistent_params_spec.rb +18 -18
  150. data/spec/router/restful_router_spec.rb +39 -39
  151. data/spec/router/router_spec.rb +37 -37
  152. data/spec/router/routing_helper_spec.rb +18 -18
  153. data/spec/support/filters_spec.rb +11 -13
  154. data/spec/template/template_spec.rb +43 -45
  155. data/spec/template/template_spec/views/layout/content_for/content.erb +3 -1
  156. data/spec/template/template_spec/views/layout/content_for/layout.erb +1 -1
  157. data/spec/template/tilt_spec.rb +24 -24
  158. data/spec/web/basic_spec.rb +25 -25
  159. data/spec/web/controller_routing_helper_spec.rb +26 -26
  160. data/spec/web/flash_spec.rb +31 -31
  161. data/spec/web/protect_from_forgery_spec.rb +44 -44
  162. data/spec/web/spec_helper_spec.rb +16 -16
  163. data/spec/web/view_routing_helper_spec.rb +31 -31
  164. metadata +46 -49
  165. data/lib/rad/_support/callbacks.rb +0 -166
  166. data/lib/rad/_support/ruby_ext_with_active_support.rb +0 -4
  167. data/spec/support/callbacks_spec.rb +0 -157
@@ -1,166 +0,0 @@
1
- module Rad::Callbacks
2
- class AbstractCallback
3
- attr_accessor :executor, :terminator
4
- attr_reader :conditions
5
- def conditions= conditions
6
- @conditions = {}
7
- conditions.each do |k, v|
8
- @conditions[k.to_sym] = if v.is_a? Symbol
9
- v.to_s
10
- elsif v.is_a? Array
11
- v.collect{|e| e.to_s}
12
- else
13
- v
14
- end
15
- end
16
- @conditions
17
- end
18
-
19
- def terminate? target, result
20
- unless terminator.nil?
21
- if terminator.is_a? Proc
22
- terminator.call target, result
23
- else
24
- result == terminator
25
- end
26
- else
27
- false
28
- end
29
- end
30
-
31
- def run? target, inf
32
- if cond = conditions[:if]
33
- evaluate_if(cond, target, inf)
34
- elsif cond = conditions[:unless]
35
- !evaluate_if(cond, target, inf)
36
- elsif cond = conditions[:only]
37
- evaluate_only(cond, inf)
38
- elsif cond = conditions[:except]
39
- !evaluate_only(cond, inf)
40
- else
41
- true
42
- end
43
- end
44
-
45
- def add_to_chain target, inf, &the_next
46
- if run? target, inf
47
- build_block target, &the_next
48
- else
49
- the_next
50
- end
51
- end
52
-
53
- alias_method :deep_clone, :clone
54
-
55
- protected
56
- def evaluate_if cond, target, inf
57
- if cond.is_a? String
58
- target.send cond
59
- elsif cond.is_a? Proc
60
- cond.call target, inf
61
- else
62
- must_be.never_called
63
- end
64
- end
65
-
66
- def evaluate_only cond, inf
67
- method = inf[:method].to_s
68
- if cond.is_a? String
69
- cond == method
70
- elsif cond.is_a? Array
71
- cond.include? method
72
- end
73
- end
74
- end
75
-
76
- class BeforeCallback < AbstractCallback
77
- def build_block target, &the_next
78
- lambda do
79
- result = if executor.string_or_symbol?
80
- target.send executor
81
- elsif executor.is_a? Proc
82
- executor.call target
83
- else
84
- must_be.never_called
85
- end
86
-
87
- the_next.call unless terminate? target, result
88
- end
89
- end
90
- end
91
-
92
- class AroundCallback < AbstractCallback
93
- def build_block target, &the_next
94
- lambda do
95
- if executor.string_or_symbol?
96
- target.send executor, &the_next
97
- elsif executor.is_a? Proc
98
- executor.call target, the_next
99
- else
100
- must_be.never_called
101
- end
102
- end
103
- end
104
- end
105
-
106
- class AfterCallback < AbstractCallback
107
- def build_block target, &the_next
108
- lambda do
109
- result = if executor.string_or_symbol?
110
- target.send executor
111
- elsif executor.is_a? Proc
112
- executor.call target
113
- else
114
- must_be.never_called
115
- end
116
-
117
- the_next.call unless terminate? target, result
118
- end
119
- end
120
- end
121
-
122
- def run_callbacks callback_name, additional_information = {}, &block
123
- callback_name = callback_name.to_s
124
- block.must_be.defined
125
-
126
- callbacks = self.class.callbacks[callback_name]
127
- chain_head = block
128
- if callbacks and !callbacks.empty?
129
- callbacks.reverse_each do |callback|
130
- block = callback.add_to_chain self, additional_information, &chain_head
131
- chain_head = block if block
132
- end
133
- end
134
- chain_head.call
135
- end
136
-
137
- module ClassMethods
138
- inheritable_accessor :callbacks, {}
139
-
140
- def set_callback callback_name, type, *executor_or_options, &block
141
- # parsing arguments
142
- type, callback_name = type.to_s, callback_name.to_s
143
- opt = executor_or_options.extract_options!
144
- "You can't provide both method name and block for filter!" if block and !executor_or_options.empty?
145
- executor = block || executor_or_options.first
146
-
147
- type.must_be.in %w{before around after}
148
- executor.must_be.defined
149
-
150
- # creating callback
151
- callback = case type
152
- when 'before' then BeforeCallback.new
153
- when 'around' then AroundCallback.new
154
- when 'after' then AfterCallback.new
155
- end
156
-
157
- callback.executor = executor
158
- callback.terminator = opt.delete :terminator
159
- callback.conditions = opt
160
-
161
- callbacks[callback_name] ||= []
162
- callbacks[callback_name] << callback
163
- end
164
-
165
- end
166
- end
@@ -1,4 +0,0 @@
1
- OpenObject.class_eval do
2
- # support :extract_options for OpenObject
3
- def extractable_options?; true end
4
- end
@@ -1,157 +0,0 @@
1
- require 'support/spec_helper'
2
-
3
- require "rad/_support/callbacks"
4
-
5
- describe "Callbacks" do
6
- before :all do
7
- class BasicCallbacksSpec
8
- inherit Rad::Callbacks
9
-
10
- set_callback :callback_name, :before, :before_callback
11
- set_callback :callback_name, :after, :after_callback
12
- set_callback :callback_name, :around, :around_callback
13
-
14
- protected
15
- def around_callback
16
- around_callback_called
17
- yield
18
- end
19
- end
20
- end
21
-
22
- it "basic" do
23
- o = BasicCallbacksSpec.new
24
- o.should_receive :before_callback
25
- o.should_receive :around_callback_called
26
- o.should_receive :after_callback
27
- o.run_callbacks(:callback_name){"result"}.should == "result"
28
- end
29
-
30
- it "blocks" do
31
- class BlockCallbacksSpec
32
- inherit Rad::Callbacks
33
-
34
- set_callback(:callback_name, :before){|controller| controller.result << :before}
35
- set_callback :callback_name, :around do |controller, block|
36
- begin
37
- controller.result << :around_begin
38
- block.call
39
- ensure
40
- controller.result << :around_end
41
- end
42
- end
43
- set_callback(:callback_name, :after){|controller| controller.result << :after}
44
-
45
- def result
46
- @result ||= []
47
- end
48
- end
49
-
50
- o = BlockCallbacksSpec.new
51
- o.run_callbacks(:callback_name){"result"}.should == "result"
52
- o.result.should == [:before, :around_begin, :after, :around_end]
53
- end
54
-
55
- it "inheritance" do
56
- class InheritedCallbacksSpec < BasicCallbacksSpec
57
- set_callback :callback_name, :before, :before_callback2
58
- end
59
-
60
- o = InheritedCallbacksSpec.new
61
- o.should_receive :before_callback
62
- o.should_receive :before_callback2
63
- o.should_receive :around_callback_called
64
- o.should_receive :after_callback
65
- o.run_callbacks(:callback_name){"result"}.should == "result"
66
- end
67
-
68
- it 'terminator' do
69
- class CallbackTerminatorSpec
70
- inherit Rad::Callbacks
71
-
72
- set_callback :callback_name, :before, :before_callback, terminator: false
73
- set_callback :callback_name, :before, :before_callback2
74
-
75
- def method
76
- run_callbacks :callback_name do
77
- "result"
78
- end
79
- end
80
-
81
- protected
82
- def before_callback
83
- false
84
- end
85
- end
86
-
87
- o = CallbackTerminatorSpec.new
88
- o.should_not_receive :before_callback2
89
- o.run_callbacks(:callback_name){"result"}.should_not == "result"
90
- end
91
-
92
- it 'conditions' do
93
- class CallbackConditionsSpec
94
- inherit Rad::Callbacks
95
-
96
- set_callback :callback_name, :before, :before_callback, only: :another_method
97
- end
98
-
99
- o = CallbackConditionsSpec.new
100
- o.should_not_receive :before_callback
101
- o.run_callbacks(:callback_name, method: :method){"result"}.should == 'result'
102
-
103
- o = CallbackConditionsSpec.new
104
- o.should_receive :before_callback
105
- o.run_callbacks(:callback_name, method: :another_method){"result"}.should == 'result'
106
- end
107
-
108
- it "if, unless conditions" do
109
- c = Rad::Callbacks::AbstractCallback.new
110
- c.conditions = {if: lambda{|target, inf| true}}
111
- c.run?(nil, {}).should be_true
112
-
113
- c.conditions = {if: lambda{|target, inf| false}}
114
- c.run?(nil, {}).should be_false
115
-
116
- c.conditions = {unless: lambda{|target, inf| true}}
117
- c.run?(nil, {}).should be_false
118
-
119
- c.conditions = {unless: lambda{|target, inf| false}}
120
- c.run?(nil, {}).should be_true
121
- end
122
-
123
- it "only, except conditions" do
124
- c = Rad::Callbacks::AbstractCallback.new
125
- c.conditions = {only: :a}
126
- c.run?(nil, {method: :a}).should be_true
127
-
128
- c.conditions = {only: :b}
129
- c.run?(nil, {method: :a}).should be_false
130
-
131
- c.conditions = {except: :a}
132
- c.run?(nil, {method: :a}).should be_false
133
-
134
- c.conditions = {except: :b}
135
- c.run?(nil, {method: :a}).should be_true
136
-
137
- c.conditions = {only: :a}
138
- c.run?(nil, {method: :a}).should be_true
139
- end
140
-
141
-
142
- it "around callback should be able to change result value" do
143
- class ChangeResultValueSpec
144
- inherit Rad::Callbacks
145
-
146
- set_callback :callback_name, :around, :around_callback
147
-
148
- def around_callback
149
- yield
150
- 'another result'
151
- end
152
- end
153
-
154
- o = ChangeResultValueSpec.new
155
- o.run_callbacks(:callback_name){"result"}.should == 'another result'
156
- end
157
- end