basic_assumption 0.3.3 → 0.3.4
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/README.rdoc +55 -13
- data/lib/basic_assumption/version.rb +1 -1
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
== BasicAssumption
|
2
2
|
|
3
3
|
A clone of DecentExposure with a psuedo-modular interface for providing
|
4
|
-
custom defaults.
|
4
|
+
custom defaults. It provides a declarative interface for specifying helper
|
5
|
+
methods that is useful in Rails applications.
|
5
6
|
|
6
7
|
=== What is DecentExposure?
|
7
8
|
|
@@ -13,8 +14,8 @@ It represents an idiom for writing certain kinds of code in a declarative way.
|
|
13
14
|
Particularly in your Rails apps, it's worth checking out. BasicAssumption is
|
14
15
|
another implementation of the idiom. It exists largely because I felt like
|
15
16
|
practicing writing a gem, though it does have a differentiating feature or two.
|
16
|
-
Check the
|
17
|
-
DecentExposure API.
|
17
|
+
Check the BasicAssumption::Configuration options for enabling compatibility
|
18
|
+
with the DecentExposure API.
|
18
19
|
|
19
20
|
== Install BasicAssumption
|
20
21
|
|
@@ -84,7 +85,26 @@ And then inside of the 'widgets/purchase_complete.html.haml' view:
|
|
84
85
|
|
85
86
|
By calling +assume+ with the symbol :widget and passing it a block, an instance
|
86
87
|
method is created on the controller class that is also exposed as a helper
|
87
|
-
inside views. For more details
|
88
|
+
inside views. For more details on how BasicAssumption is wired into your Rails
|
89
|
+
app, please see the BasicAssumption::Railtie documentation.
|
90
|
+
|
91
|
+
=== When to use it
|
92
|
+
|
93
|
+
Whenever you find yourself writing a +before_filter+ in a Rails controller
|
94
|
+
that sets instance variables as part of the context of your request, you should
|
95
|
+
probably use an assumption instead. Because BasicAssumption is written to use
|
96
|
+
lazy evaluation, there's no need to worry about avoiding calls on actions that
|
97
|
+
don't need some particular setup.
|
98
|
+
|
99
|
+
If a controller has protected or hidden methods that find or create instance
|
100
|
+
variables used in actions and/or views, it might be cleaner to use an
|
101
|
+
assumption instead.
|
102
|
+
|
103
|
+
BasicAssumption allows for a simple, declarative, and very lightweight approach
|
104
|
+
to RESTful controllers.
|
105
|
+
|
106
|
+
It also can make for a cleaner, more testable interface for controller or view
|
107
|
+
testing. There may even be uses outside of Rails apps. Give it a shot.
|
88
108
|
|
89
109
|
=== Defaults
|
90
110
|
|
@@ -130,7 +150,7 @@ Default assumptions are inherited by derived classes.
|
|
130
150
|
=== Supplying custom default behavior classes
|
131
151
|
|
132
152
|
There is an ability to provide custom, modular default extensions to
|
133
|
-
BasicAssumption and then use them by passing a symbol,
|
153
|
+
BasicAssumption and then use them by passing a symbol, as in the following:
|
134
154
|
|
135
155
|
class WidgetController < ActionController::Base
|
136
156
|
default_assumption :my_custom_default_class
|
@@ -145,19 +165,30 @@ BasicAssumption::DefaultAssumption namespace. Please see the documentation for
|
|
145
165
|
|
146
166
|
There are a couple of simple configuration settings that can be set inside of
|
147
167
|
a configuration block that can be used in places such as Rails initializer
|
148
|
-
blocks. For more information, see
|
168
|
+
blocks. For more information, see BasicAssumption::Configuration.
|
149
169
|
|
150
170
|
== Issues
|
151
171
|
|
152
172
|
=== Memoization
|
153
173
|
|
154
|
-
Methods that are created by
|
155
|
-
when they're called. Because of that, the block is only
|
156
|
-
the lifespan of each object of the class that used
|
157
|
-
a method created by assuming can be used multiple
|
158
|
-
controller object and associated view(s)
|
159
|
-
|
160
|
-
|
174
|
+
Methods that are created by BasicAssumption#assume memoize the result of the
|
175
|
+
block the invoke when they're called. Because of that, the block is only
|
176
|
+
evaluated once during the lifespan of each object of the class that used
|
177
|
+
+assume+. This means that a method created by assuming can be used multiple
|
178
|
+
times inside of a Rails controller object and associated view(s) without
|
179
|
+
invoking the associated block multiple times, but it also means that any
|
180
|
+
behavior of the block that is meant to vary over multiple invocations will not
|
181
|
+
be observed.
|
182
|
+
|
183
|
+
=== Exceptions
|
184
|
+
|
185
|
+
Using BasicAssumption may change the exception handling strategy inside your
|
186
|
+
classes. In Rails, the +rescue_from+ method may be useful.
|
187
|
+
|
188
|
+
=== Other
|
189
|
+
|
190
|
+
There are probably others, and when I remember what they were, I'll write them
|
191
|
+
up.
|
161
192
|
|
162
193
|
== Hacking/running specs
|
163
194
|
|
@@ -168,3 +199,14 @@ manager. For example, if RubyGems:
|
|
168
199
|
export RUBYOPT=rubygems
|
169
200
|
|
170
201
|
Other than that, please feel free to fork and send back pull requests! Thanks.
|
202
|
+
|
203
|
+
== But should I use it?
|
204
|
+
|
205
|
+
Sure! Absolutely. I think it's a cool idea that lets you cut down on line
|
206
|
+
noise, particularly in your Rails controllers. You may want to consider going
|
207
|
+
with {DecentExposure}[http://github.com/voxdolo/decent_exposure], simply
|
208
|
+
because it's used by much of {Hashrocket}[http://www.hashrocket.com/]
|
209
|
+
and BasicAssumption is used, so far as I know, only by me. But so far as I know
|
210
|
+
BasicAssumption is pretty solid, and I'm happy to accept bug fixes and field
|
211
|
+
feature requests. If you use it, feel free to let me know! Email mby [at]
|
212
|
+
mattyoho [dot] com with questions, comments, or non-sequiters.
|