whyvalidationssuckin96 1.0.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 (88) hide show
  1. data/.document +5 -0
  2. data/.gitignore +22 -0
  3. data/LICENSE +20 -0
  4. data/README.md +121 -0
  5. data/Rakefile +45 -0
  6. data/VERSION +1 -0
  7. data/doc/ActiveRecord/RecordInvalid.html +258 -0
  8. data/doc/ActiveRecord.html +93 -0
  9. data/doc/FalseClass.html +87 -0
  10. data/doc/NilClass.html +87 -0
  11. data/doc/Numeric.html +87 -0
  12. data/doc/Object.html +79 -0
  13. data/doc/String.html +87 -0
  14. data/doc/TrueClass.html +87 -0
  15. data/doc/WhyValidationsSuckIn96/ActiveRecord/InstanceMethods.html +156 -0
  16. data/doc/WhyValidationsSuckIn96/ActiveRecord.html +192 -0
  17. data/doc/WhyValidationsSuckIn96/AttributeBasedValidation.html +464 -0
  18. data/doc/WhyValidationsSuckIn96/SkippableValidation.html +194 -0
  19. data/doc/WhyValidationsSuckIn96/ValidatesAcceptance.html +254 -0
  20. data/doc/WhyValidationsSuckIn96/ValidatesAssociated.html +250 -0
  21. data/doc/WhyValidationsSuckIn96/ValidatesConfirmation.html +251 -0
  22. data/doc/WhyValidationsSuckIn96/ValidatesExclusion.html +388 -0
  23. data/doc/WhyValidationsSuckIn96/ValidatesFormat.html +387 -0
  24. data/doc/WhyValidationsSuckIn96/ValidatesInclusion.html +388 -0
  25. data/doc/WhyValidationsSuckIn96/ValidatesLength.html +469 -0
  26. data/doc/WhyValidationsSuckIn96/ValidatesNumericality.html +267 -0
  27. data/doc/WhyValidationsSuckIn96/ValidatesPresence.html +244 -0
  28. data/doc/WhyValidationsSuckIn96/ValidatesUniqueness.html +289 -0
  29. data/doc/WhyValidationsSuckIn96/Validation.html +934 -0
  30. data/doc/WhyValidationsSuckIn96/ValidationBuilder.html +391 -0
  31. data/doc/WhyValidationsSuckIn96/ValidationSupport/ClassMethods.html +249 -0
  32. data/doc/WhyValidationsSuckIn96/ValidationSupport/InstanceMethods.html +484 -0
  33. data/doc/WhyValidationsSuckIn96/ValidationSupport.html +168 -0
  34. data/doc/WhyValidationsSuckIn96.html +97 -0
  35. data/doc/_index.html +346 -0
  36. data/doc/class_list.html +293 -0
  37. data/doc/css/common.css +1 -0
  38. data/doc/css/full_list.css +23 -0
  39. data/doc/css/style.css +263 -0
  40. data/doc/file.README.html +173 -0
  41. data/doc/file_list.html +29 -0
  42. data/doc/index.html +173 -0
  43. data/doc/js/app.js +91 -0
  44. data/doc/js/full_list.js +39 -0
  45. data/doc/js/jquery.js +19 -0
  46. data/doc/method_list.html +462 -0
  47. data/doc/top-level-namespace.html +81 -0
  48. data/lib/whyvalidationssuckin96/attribute_based_validation.rb +46 -0
  49. data/lib/whyvalidationssuckin96/constants.rb +3 -0
  50. data/lib/whyvalidationssuckin96/ext/blank.rb +47 -0
  51. data/lib/whyvalidationssuckin96/macros/validates_acceptance.rb +36 -0
  52. data/lib/whyvalidationssuckin96/macros/validates_associated.rb +33 -0
  53. data/lib/whyvalidationssuckin96/macros/validates_confirmation.rb +40 -0
  54. data/lib/whyvalidationssuckin96/macros/validates_exclusion.rb +38 -0
  55. data/lib/whyvalidationssuckin96/macros/validates_format.rb +38 -0
  56. data/lib/whyvalidationssuckin96/macros/validates_inclusion.rb +38 -0
  57. data/lib/whyvalidationssuckin96/macros/validates_length.rb +98 -0
  58. data/lib/whyvalidationssuckin96/macros/validates_numericality.rb +56 -0
  59. data/lib/whyvalidationssuckin96/macros/validates_presence.rb +30 -0
  60. data/lib/whyvalidationssuckin96/macros.rb +9 -0
  61. data/lib/whyvalidationssuckin96/rails/active_record.rb +94 -0
  62. data/lib/whyvalidationssuckin96/rails/macros/validates_uniqueness.rb +87 -0
  63. data/lib/whyvalidationssuckin96/rails/macros.rb +1 -0
  64. data/lib/whyvalidationssuckin96/skippable_validation.rb +59 -0
  65. data/lib/whyvalidationssuckin96/validation.rb +88 -0
  66. data/lib/whyvalidationssuckin96/validation_builder.rb +56 -0
  67. data/lib/whyvalidationssuckin96/validation_support.rb +74 -0
  68. data/lib/whyvalidationssuckin96.rb +4 -0
  69. data/test/attribute_based_validation_test.rb +58 -0
  70. data/test/macros/validates_acceptance_test.rb +64 -0
  71. data/test/macros/validates_associated_test.rb +60 -0
  72. data/test/macros/validates_confirmation_test.rb +63 -0
  73. data/test/macros/validates_exclusion_test.rb +37 -0
  74. data/test/macros/validates_format_test.rb +43 -0
  75. data/test/macros/validates_inclusion_test.rb +37 -0
  76. data/test/macros/validates_length_test.rb +179 -0
  77. data/test/macros/validates_numericality_test.rb +129 -0
  78. data/test/macros/validates_presence_test.rb +31 -0
  79. data/test/rails/active_record_test.rb +187 -0
  80. data/test/rails/active_record_test_helper.rb +90 -0
  81. data/test/rails/macros/validates_uniqueness_test.rb +153 -0
  82. data/test/skippable_validation_test.rb +102 -0
  83. data/test/teststrap.rb +4 -0
  84. data/test/validation_builder_test.rb +62 -0
  85. data/test/validation_support_test.rb +209 -0
  86. data/test/validation_test.rb +101 -0
  87. data/whyvalidationssuckin96.gemspec +153 -0
  88. metadata +189 -0
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
22
+ .yardoc
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 gabrielg
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,121 @@
1
+ # WhyValidationsSuckIn96
2
+
3
+ ## Description
4
+
5
+ WhyValidationsSuckIn96 is a library for adding validation support to objects. It aims to have a very minimal 'surface
6
+ area', API-wise, and to be as easily testable as possible. It has no external dependencies unless you wish to use the
7
+ ActiveRecord integration, in which case you clearly need ActiveRecord installed.
8
+
9
+ ## Documentation
10
+
11
+ See 'doc/index.html' for details, or [check the GitHub Pages site for the project](http://thumblemonks.github.com/whyvalidationssuckin96).
12
+
13
+ ## Install
14
+
15
+ gem install 'whyvalidationssuckin96'
16
+
17
+ ## Basic Usage
18
+
19
+ Require 'whyvalidationssuckin96' and include the WhyValidationsSuckIn96::ValidationSupport module into your class:
20
+
21
+ require 'whyvalidationssuckin96'
22
+
23
+ class Song
24
+ attr_accessor :title, :artist
25
+ include WhyValidationsSuckIn96::ValidationSupport
26
+ end
27
+
28
+ Define your validations or call pre-existing validation macros inside a validation setup block:
29
+
30
+ require 'whyvalidationssuckin96'
31
+
32
+ class Song
33
+ attr_accessor :title, :artist, :year
34
+ include WhyValidationsSuckIn96::ValidationSupport
35
+
36
+ setup_validations do
37
+ validate :no_eighties_crap do
38
+ if %w[BonJovi Dokken].include?(validatable.artist)
39
+ fail
40
+ else
41
+ pass
42
+ end
43
+ end
44
+
45
+ validates_presence_of :title, :artist
46
+ validates_numericality_of :year
47
+ end
48
+ end
49
+
50
+ Check instances of your class for validity and inspect the failed validations:
51
+
52
+ song = Song.new
53
+ song.valid?
54
+ song.invalid?
55
+ song.failed_validations
56
+ song.passed_validations
57
+ song.all_validations
58
+
59
+ Easily inspect and test for the presence of validations on your class:
60
+
61
+ Song.validation_collection.detect do |(klass, opts)|
62
+ klass.is_a?(WhyValidationsSuckIn96::ValidatesPresence)
63
+ end
64
+
65
+ Create your own reusable and testable validations:
66
+
67
+ require 'whyvalidationssuckin96/skippable_validation'
68
+ require 'whyvalidationssuckin96/attribute_based_validation'
69
+
70
+ class ValidatesPrimaryColour < WhyValidationsSuckIn96::Validation
71
+ include WhyValidationsSuckIn96::SkippableValidation
72
+ include WhyValidationsSuckIn96::AttributeBasedValidation
73
+
74
+ DefaultOptions = {:message => "is not a valid color"}
75
+ ValidColours = %w[red green blue]
76
+
77
+ def validate
78
+ super
79
+ if ValidColours.include?(attribute_value)
80
+ pass
81
+ else
82
+ fail
83
+ end
84
+ end
85
+
86
+ end # ValidatesPrimaryColour
87
+
88
+ WhyValidationsSuckIn96::ValidationBuilder.register_macro :validates_primary_colour_of, ValidatesPrimaryColour
89
+
90
+ ## ActiveRecord Integration
91
+
92
+ WhyValidationsSuckIn96 features ActiveRecord support. The caveat is that it violently tears out the existing
93
+ validation API so anything that uses that will break. The good news is that what it replaces the existing validation
94
+ code with works as expected with features such as callbacks and preventing saves to the database when objects are
95
+ invalid. All the standard ActiveRecord validation macros are available, and most have the same API to use when
96
+ setting them up.
97
+
98
+ To use the ActiveRecord support:
99
+
100
+ require 'whyvalidationssuckin96/rails/active_record'
101
+
102
+ Then you can define validations as expected in your model classes:
103
+
104
+ class Song < ActiveRecord::Base
105
+ setup_validations do
106
+ validates_uniqueness_of :title, :scope => :artist
107
+ end
108
+ end
109
+
110
+ ## Contributing
111
+
112
+ * Fork the project.
113
+ * Make your feature addition or bug fix.
114
+ * Add tests for it. This is important so I don't break it in a future version unintentionally.
115
+ * Commit, do not mess with Rakefile or VERSION.
116
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
117
+ * Send me a pull request.
118
+
119
+ ## Copying
120
+
121
+ Copyright (c) 2009 gabrielg/thumblemonks. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,45 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "whyvalidationssuckin96"
8
+ gem.summary = %Q{An alternative implementation of object validations.}
9
+ gem.description = %Q{A library for setting up model validations, such as in ActiveRecord.}
10
+ gem.email = "gabriel.gironda@gmail.com"
11
+ gem.homepage = "http://github.com/thumblemonks/whyvalidationssuckin96"
12
+ gem.authors = ["gabrielg", "douglasmeyer"]
13
+ gem.add_development_dependency "riot", ">= 0"
14
+ gem.add_development_dependency "yard", ">= 0"
15
+ gem.add_development_dependency "activerecord", ">= 2.3.0"
16
+ end
17
+ Jeweler::GemcutterTasks.new
18
+ rescue LoadError
19
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
20
+ end
21
+
22
+ require 'rake/testtask'
23
+ Rake::TestTask.new(:test_non_rails) do |test|
24
+ test.libs << 'lib' << 'test'
25
+ test.test_files = FileList['test/**/*_test.rb'].exclude("test/rails/**/*_test.rb")
26
+ test.verbose = true
27
+ end
28
+
29
+ Rake::TestTask.new(:test_rails) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.test_files = FileList["test/rails/**/*_test.rb"]
32
+ test.verbose = true
33
+ end
34
+
35
+ task :test => [:check_dependencies, :test_non_rails, :test_rails]
36
+ task :default => :test
37
+
38
+ begin
39
+ require 'yard'
40
+ YARD::Rake::YardocTask.new
41
+ rescue LoadError
42
+ task :yardoc do
43
+ abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
44
+ end
45
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,258 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=UTF-8" />
6
+ <title>Class: ActiveRecord::RecordInvalid</title>
7
+ <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '..';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <div id="header">
20
+ <div id="menu">
21
+
22
+ <a href="../_index.html">Index (R)</a> &raquo;
23
+ <a href="../ActiveRecord.html" title="ActiveRecord">ActiveRecord</a>
24
+ &raquo;
25
+ <span class="title">RecordInvalid</span>
26
+
27
+ </div>
28
+
29
+ <div id="search">
30
+ <a id="class_list_link" href="#">Namespace List</a>
31
+ <a id="method_list_link" href="#">Method List</a>
32
+ <a id ="file_list_link" href="#">File List</a>
33
+ </div>
34
+
35
+ <div class="clear"></div>
36
+ </div>
37
+
38
+ <iframe id="search_frame"></iframe>
39
+
40
+ <div id="content"><h1>Class: ActiveRecord::RecordInvalid
41
+
42
+
43
+ </h1>
44
+
45
+ <dl class="box">
46
+
47
+ <dt class="r1">Inherits:</dt>
48
+ <dd class="r1">
49
+ <span class="inheritName">ActiveRecordError</span>
50
+
51
+ <ul class="fullTree">
52
+ <li><a href="../Object.html" title="Object">Object</a></li>
53
+
54
+ <li class="next">ActiveRecordError</li>
55
+
56
+ <li class="next">ActiveRecord::RecordInvalid</li>
57
+
58
+ </ul>
59
+ <a href="#" class="inheritanceTree">show all</a>
60
+
61
+ </dd>
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+ <dt class="r2 last">Defined in:</dt>
71
+ <dd class="r2 last">lib/whyvalidationssuckin96/rails/active_record.rb</dd>
72
+
73
+ </dl>
74
+ <div class="clear"></div>
75
+
76
+ <h2>Overview</h2><div class="docstring">
77
+ <div class="discussion">
78
+ <p>
79
+ RecordInvalid
80
+ </p>
81
+
82
+
83
+ </div>
84
+ </div>
85
+ <div class="tags">
86
+
87
+ </div>
88
+
89
+
90
+ <h2>Instance Attribute Summary</h2>
91
+ <ul class="summary">
92
+
93
+ <li class="public ">
94
+ <span class="summary_signature">
95
+
96
+ <a href="#record-instance_method" title="#record (instance method)">- (Object) <strong>record</strong> </a>
97
+
98
+
99
+
100
+ </span>
101
+
102
+
103
+ <span class="note title readonly">readonly</span>
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+ <span class="summary_desc">
112
+ Returns the value of attribute record.
113
+
114
+ </span>
115
+
116
+ </li>
117
+
118
+
119
+ </ul>
120
+
121
+
122
+ <h2>Instance Method Summary</h2>
123
+
124
+ <ul class="summary">
125
+
126
+ <li class="public ">
127
+ <span class="summary_signature">
128
+
129
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (RecordInvalid) <strong>initialize</strong>(record) </a>
130
+
131
+
132
+
133
+ </span>
134
+
135
+ <span class="note title constructor">constructor</span>
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+ <span class="summary_desc">
144
+ A new instance of RecordInvalid.
145
+
146
+ </span>
147
+
148
+ </li>
149
+
150
+
151
+ </ul>
152
+
153
+ <div id="constructor_details" class="method_details_list">
154
+ <h2>Constructor Details</h2>
155
+
156
+ <div class="method_details first">
157
+ <p class="signature first" id="initialize-instance_method">
158
+
159
+ - (<tt><a href="" title="RecordInvalid">RecordInvalid</a></tt>) <strong>initialize</strong>(record)
160
+
161
+
162
+
163
+ </p><div class="docstring">
164
+ <div class="discussion">
165
+ <p>
166
+ A new instance of RecordInvalid
167
+ </p>
168
+
169
+
170
+ </div>
171
+ </div>
172
+ <div class="tags">
173
+
174
+ </div><table class="source_code">
175
+ <tr>
176
+ <td>
177
+ <pre class="lines">
178
+
179
+
180
+ 87
181
+ 88
182
+ 89
183
+ 90</pre>
184
+ </td>
185
+ <td>
186
+ <pre class="code"><span class="info file"># File 'lib/whyvalidationssuckin96/rails/active_record.rb', line 87</span>
187
+
188
+ <span class='def def kw'>def</span> <span class='initialize identifier id'>initialize</span><span class='lparen token'>(</span><span class='record identifier id'>record</span><span class='rparen token'>)</span>
189
+ <span class='@record ivar id'>@record</span> <span class='assign token'>=</span> <span class='record identifier id'>record</span>
190
+ <span class='super super kw'>super</span>
191
+ <span class='end end kw'>end</span>
192
+ </pre>
193
+ </td>
194
+ </tr>
195
+ </table>
196
+ </div>
197
+
198
+ </div>
199
+
200
+ <div id="instance_attr_details" class="attr_details">
201
+ <h2>Instance Attribute Details</h2>
202
+
203
+
204
+ <span id=""></span>
205
+ <span id="record-instance_method"></span>
206
+ <div class="method_details first">
207
+ <p class="signature first" id="record-instance_method">
208
+
209
+ - (<tt><a href="../Object.html" title="Object">Object</a></tt>) <strong>record</strong> <span class="extras">(readonly)</span>
210
+
211
+
212
+
213
+ </p><div class="docstring">
214
+ <div class="discussion">
215
+ <p>
216
+ Returns the value of attribute record
217
+ </p>
218
+
219
+
220
+ </div>
221
+ </div>
222
+ <div class="tags">
223
+
224
+ </div><table class="source_code">
225
+ <tr>
226
+ <td>
227
+ <pre class="lines">
228
+
229
+
230
+ 86
231
+ 87
232
+ 88</pre>
233
+ </td>
234
+ <td>
235
+ <pre class="code"><span class="info file"># File 'lib/whyvalidationssuckin96/rails/active_record.rb', line 86</span>
236
+
237
+ <span class='def def kw'>def</span> <span class='record identifier id'>record</span>
238
+ <span class='@record ivar id'>@record</span>
239
+ <span class='end end kw'>end</span>
240
+ </pre>
241
+ </td>
242
+ </tr>
243
+ </table>
244
+ </div>
245
+
246
+ </div>
247
+
248
+
249
+ </div>
250
+
251
+ <div id="footer">
252
+ Generated on Sun Dec 20 19:49:47 2009 by
253
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool">yard</a>
254
+ 0.5.2 (ruby-1.8.7).
255
+ </div>
256
+
257
+ </body>
258
+ </html>
@@ -0,0 +1,93 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=UTF-8" />
6
+ <title>Module: ActiveRecord</title>
7
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <div id="header">
20
+ <div id="menu">
21
+
22
+ <a href="_index.html">Index (A)</a> &raquo;
23
+
24
+
25
+ <span class="title">ActiveRecord</span>
26
+
27
+ </div>
28
+
29
+ <div id="search">
30
+ <a id="class_list_link" href="#">Namespace List</a>
31
+ <a id="method_list_link" href="#">Method List</a>
32
+ <a id ="file_list_link" href="#">File List</a>
33
+ </div>
34
+
35
+ <div class="clear"></div>
36
+ </div>
37
+
38
+ <iframe id="search_frame"></iframe>
39
+
40
+ <div id="content"><h1>Module: ActiveRecord
41
+
42
+
43
+ </h1>
44
+
45
+ <dl class="box">
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+ <dt class="r1 last">Defined in:</dt>
54
+ <dd class="r1 last">lib/whyvalidationssuckin96/rails/active_record.rb</dd>
55
+
56
+ </dl>
57
+ <div class="clear"></div>
58
+
59
+ <h2>Overview</h2><div class="docstring">
60
+ <div class="discussion">
61
+ <p>
62
+ ActiveRecord
63
+ </p>
64
+
65
+
66
+ </div>
67
+ </div>
68
+ <div class="tags">
69
+
70
+ </div><h2>Defined Under Namespace</h2>
71
+ <p class="children">
72
+
73
+
74
+
75
+
76
+ <strong class="classes">Classes:</strong> <a href="ActiveRecord/RecordInvalid.html" title="RecordInvalid">RecordInvalid</a>
77
+
78
+
79
+ </p>
80
+
81
+
82
+
83
+
84
+ </div>
85
+
86
+ <div id="footer">
87
+ Generated on Sun Dec 20 19:49:46 2009 by
88
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool">yard</a>
89
+ 0.5.2 (ruby-1.8.7).
90
+ </div>
91
+
92
+ </body>
93
+ </html>
@@ -0,0 +1,87 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=UTF-8" />
6
+ <title>Class: FalseClass</title>
7
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <div id="header">
20
+ <div id="menu">
21
+
22
+ <a href="_index.html">Index (F)</a> &raquo;
23
+
24
+
25
+ <span class="title">FalseClass</span>
26
+
27
+ </div>
28
+
29
+ <div id="search">
30
+ <a id="class_list_link" href="#">Namespace List</a>
31
+ <a id="method_list_link" href="#">Method List</a>
32
+ <a id ="file_list_link" href="#">File List</a>
33
+ </div>
34
+
35
+ <div class="clear"></div>
36
+ </div>
37
+
38
+ <iframe id="search_frame"></iframe>
39
+
40
+ <div id="content"><h1>Class: FalseClass
41
+
42
+
43
+ </h1>
44
+
45
+ <dl class="box">
46
+
47
+ <dt class="r1">Inherits:</dt>
48
+ <dd class="r1">
49
+ <span class="inheritName"><a href="Object.html" title="Object">Object</a></span>
50
+
51
+ <ul class="fullTree">
52
+ <li><a href="Object.html" title="Object">Object</a></li>
53
+
54
+ <li class="next">FalseClass</li>
55
+
56
+ </ul>
57
+ <a href="#" class="inheritanceTree">show all</a>
58
+
59
+ </dd>
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+ <dt class="r2 last">Defined in:</dt>
69
+ <dd class="r2 last">lib/whyvalidationssuckin96/ext/blank.rb</dd>
70
+
71
+ </dl>
72
+ <div class="clear"></div>
73
+
74
+
75
+
76
+
77
+
78
+ </div>
79
+
80
+ <div id="footer">
81
+ Generated on Sun Dec 20 19:49:46 2009 by
82
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool">yard</a>
83
+ 0.5.2 (ruby-1.8.7).
84
+ </div>
85
+
86
+ </body>
87
+ </html>