cleanerupper 0.2.1 → 0.2.2
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.markdown +22 -19
- data/cleanerupper.gemspec +3 -2
- data/lib/cleanerupper.rb +11 -2
- data/pkg/cleanerupper-0.2.1.gem +0 -0
- data/test/cleanerupper_test.rb +12 -12
- data/test/debug.log +82 -0
- metadata +4 -3
data/README.markdown
CHANGED
@@ -25,13 +25,13 @@ A default dictionary is included with this project, but only contains some test
|
|
25
25
|
It works by providing a new method to all of your ActiveRecord based objects called `clean`
|
26
26
|
|
27
27
|
class Widget < ActiveRecord::Base
|
28
|
-
clean :body, :
|
28
|
+
clean :body, :method => :scramble
|
29
29
|
end
|
30
30
|
|
31
|
-
This method takes an array of columns to be cleaned by cleanerupper, followed by
|
31
|
+
This method takes an array of columns to be cleaned by cleanerupper, followed by three optional parameters:
|
32
32
|
|
33
|
-
:
|
34
|
-
:dictionary => Specifies which
|
33
|
+
:method => Specifies which method to clean with
|
34
|
+
:dictionary => Specifies which dictionaries should be used for this cleaning
|
35
35
|
:callback => Specifies a callback to call if disallowed data is found
|
36
36
|
|
37
37
|
Three methods have been provided for cleaning convenience, which are:
|
@@ -43,13 +43,10 @@ Three methods have been provided for cleaning convenience, which are:
|
|
43
43
|
If no method is defined, `:scramble` will be used. You can also define your own function, like so:
|
44
44
|
|
45
45
|
class Widget < ActiveRecord::Base
|
46
|
-
clean :body, :
|
46
|
+
clean :body, :method => :remove_vowels
|
47
47
|
|
48
|
-
def custom(
|
49
|
-
|
50
|
-
found.gsub!(word, "CUSTOM") if found.include?(word)
|
51
|
-
end
|
52
|
-
return found
|
48
|
+
def custom(val)
|
49
|
+
return val.gsub(/(a|e|i|o|u)/, "*")
|
53
50
|
end
|
54
51
|
end
|
55
52
|
|
@@ -64,14 +61,20 @@ In the example above, we make use of the `word` dictionary to check our column f
|
|
64
61
|
You can access these dictionaries by using the `Cleaner::Data.dictionaries[:key]` object, where `:key` is the key of your dictionary as defined by your config file. You can specify that any cleaning method use a specific dictionary by adding a `:dictionary` paramater:
|
65
62
|
|
66
63
|
class Widget < ActiveRecord::Base
|
67
|
-
clean :body, :
|
64
|
+
clean :body, :method => :replace, :dictionary => :custom
|
65
|
+
end
|
66
|
+
|
67
|
+
You can use multiple dictionaries for any given cleaning method by passing an array to the `:dictionary` option:
|
68
|
+
|
69
|
+
class Widget < ActiveRecord::Base
|
70
|
+
clean :body, :dictionary => [:words, :custom]
|
68
71
|
end
|
69
72
|
|
70
73
|
You can also define a callback. This callback will only be called if bad data was found in any of
|
71
|
-
the columns. If the callback returns
|
74
|
+
the columns. If the callback returns false, the save will fail (this works the same way as a `before_save`).
|
72
75
|
|
73
76
|
class Widget < ActiveRecord::Base
|
74
|
-
clean :body, :
|
77
|
+
clean :body, :method => :scramble, :callback => :found_words
|
75
78
|
|
76
79
|
def found_words
|
77
80
|
Emailer.email_teacher("Your student used a bad word!")
|
@@ -83,13 +86,13 @@ the columns. If the callback returns falls, the save will fail (this works the
|
|
83
86
|
|
84
87
|
# Clean different columns with different methods
|
85
88
|
class Widget < ActiveRecord::Base
|
86
|
-
clean :body, :title, :
|
87
|
-
clean :author_name, :
|
89
|
+
clean :body, :title, :method => :replace
|
90
|
+
clean :author_name, :method => :scramble
|
88
91
|
end
|
89
92
|
|
90
93
|
# Clean the body, and send an email if this is the first time a bad word has been used
|
91
94
|
class Widget < ActiveRecord::Base
|
92
|
-
clean :body, :
|
95
|
+
clean :body, :method => :replace, :callback => :send_email
|
93
96
|
|
94
97
|
def send_email
|
95
98
|
if self.author.infractions >= 1
|
@@ -102,7 +105,7 @@ the columns. If the callback returns falls, the save will fail (this works the
|
|
102
105
|
|
103
106
|
# Custom cleaning method
|
104
107
|
class Widget < ActiveRecord::Base
|
105
|
-
clean :body, :title, :author_name, :
|
108
|
+
clean :body, :title, :author_name, :method => :remove_vowels
|
106
109
|
|
107
110
|
def remove_vowels(found)
|
108
111
|
Cleaner::Dictionary.words.each do |word|
|
@@ -114,7 +117,7 @@ the columns. If the callback returns falls, the save will fail (this works the
|
|
114
117
|
|
115
118
|
# Custom dictionary
|
116
119
|
class Widget < ActiveRecord::Base
|
117
|
-
clean :body, :title, :
|
120
|
+
clean :body, :title, :method => :replace, :dictionary => :animals
|
118
121
|
end
|
119
122
|
|
120
123
|
# Disclaimer #
|
@@ -122,8 +125,8 @@ This code is still under development, and as such, minor revisions may break com
|
|
122
125
|
the gem/plugin. Please keep this in mind when using CleanerUpper.
|
123
126
|
|
124
127
|
# What's Next? #
|
125
|
-
* Change the custom cleaning code to be more user friendly
|
126
128
|
* Optimize dictionary loops
|
129
|
+
* Benchmark the impact of the CleanerUpper codebase on database activity
|
127
130
|
* Increase test coverage
|
128
131
|
* Remove test dependency on the rails environment
|
129
132
|
|
data/cleanerupper.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cleanerupper}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Mike Trpcic"]
|
12
|
-
s.date = %q{2010-04-
|
12
|
+
s.date = %q{2010-04-24}
|
13
13
|
s.email = %q{mike@fluidmedia.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.markdown"
|
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
"./pkg/cleanerupper-0.1.0.gem",
|
26
26
|
"./pkg/cleanerupper-0.1.1.gem",
|
27
27
|
"./pkg/cleanerupper-0.2.0.gem",
|
28
|
+
"./pkg/cleanerupper-0.2.1.gem",
|
28
29
|
"./rails/init.rb",
|
29
30
|
"./tasks/cleanerupper_tasks.rake",
|
30
31
|
"./test/cleanerupper_test.rb",
|
data/lib/cleanerupper.rb
CHANGED
@@ -50,7 +50,8 @@ module Cleaner
|
|
50
50
|
if Cleaner::Data.cleaner_methods.include?(method.to_sym)
|
51
51
|
new_value = Cleaner.send(method.to_sym, old_value.dup, dictionary)
|
52
52
|
else
|
53
|
-
new_value =
|
53
|
+
new_value = Cleaner.send(:custom_clean, old_value.dup, dictionary, self.method(method))
|
54
|
+
#new_value = self.send(method, old_value.dup, dictionary)
|
54
55
|
end
|
55
56
|
unless new_value == old_value
|
56
57
|
to_save = callback.nil? ? true : self.send(callback) == false ? false : true
|
@@ -68,7 +69,7 @@ module Cleaner
|
|
68
69
|
def clean(*args)
|
69
70
|
params = args[-1].is_a?(Hash) ? args[-1] : {}
|
70
71
|
attributes = args[0..-1] if params
|
71
|
-
with = params.has_key?(:
|
72
|
+
with = params.has_key?(:method) ? params[:method] : :scramble
|
72
73
|
callback = params.has_key?(:callback) ? params[:callback] : nil
|
73
74
|
dictionary = params.has_key?(:dictionary) ? params[:dictionary] : :words
|
74
75
|
attributes.each do |attribute|
|
@@ -79,6 +80,14 @@ module Cleaner
|
|
79
80
|
|
80
81
|
#Define all your actual manipulation methods here:
|
81
82
|
|
83
|
+
#This is a wrapper method for custom cleaning methods defined by a user
|
84
|
+
def custom_clean(value, dict, func)
|
85
|
+
dict.each do |word|
|
86
|
+
value.to_s.gsub!(/#{word}/, func.call(word))
|
87
|
+
end
|
88
|
+
value
|
89
|
+
end
|
90
|
+
|
82
91
|
#This method scrambles data by rearranging the letters.
|
83
92
|
def scramble(value, dict)
|
84
93
|
dict.each do |word|
|
Binary file
|
data/test/cleanerupper_test.rb
CHANGED
@@ -13,31 +13,31 @@ end
|
|
13
13
|
|
14
14
|
class ReplaceWidget < ActiveRecord::Base
|
15
15
|
set_table_name :widgets
|
16
|
-
clean :body, :
|
16
|
+
clean :body, :method => :replace
|
17
17
|
end
|
18
18
|
|
19
19
|
class RemoveWidget < ActiveRecord::Base
|
20
20
|
set_table_name :widgets
|
21
|
-
clean :body, :title, :
|
21
|
+
clean :body, :title, :method => :remove
|
22
22
|
end
|
23
23
|
|
24
24
|
class ScrambleWidget < ActiveRecord::Base
|
25
25
|
set_table_name :widgets
|
26
|
-
clean :title, :
|
26
|
+
clean :title, :method => :scramble
|
27
27
|
end
|
28
28
|
|
29
29
|
class CustomWidget < ActiveRecord::Base
|
30
30
|
set_table_name :widgets
|
31
|
-
clean :body, :title, :
|
31
|
+
clean :body, :title, :method => :remove_vowels
|
32
32
|
|
33
|
-
def
|
34
|
-
|
33
|
+
def remove_vowels(val)
|
34
|
+
val.gsub(/(a|e|i|o|u)/, "*")
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
class CallbackWidget < ActiveRecord::Base
|
39
39
|
set_table_name :widgets
|
40
|
-
clean :body, :
|
40
|
+
clean :body, :method => :scramble, :callback => :callback_method
|
41
41
|
|
42
42
|
def callback_method
|
43
43
|
self.title = "CALLBACK"
|
@@ -47,7 +47,7 @@ end
|
|
47
47
|
|
48
48
|
class FalseCallbackWidget < ActiveRecord::Base
|
49
49
|
set_table_name :widgets
|
50
|
-
clean :body, :
|
50
|
+
clean :body, :method => :scramble, :callback => :callback_method
|
51
51
|
|
52
52
|
def callback_method
|
53
53
|
self.title = "CALLBACK"
|
@@ -57,12 +57,12 @@ end
|
|
57
57
|
|
58
58
|
class CustomDictWidget < ActiveRecord::Base
|
59
59
|
set_table_name :widgets
|
60
|
-
clean :body, :
|
60
|
+
clean :body, :method => :scramble, :dictionary => :animals
|
61
61
|
end
|
62
62
|
|
63
63
|
class MultiDictWidget < ActiveRecord::Base
|
64
64
|
set_table_name :widgets
|
65
|
-
clean :body, :
|
65
|
+
clean :body, :method => :scramble, :dictionary => [:animals, :furniture]
|
66
66
|
end
|
67
67
|
|
68
68
|
class CleanerupperTest < Test::Unit::TestCase
|
@@ -105,10 +105,10 @@ class CleanerupperTest < Test::Unit::TestCase
|
|
105
105
|
w = CustomWidget.find(w.id)
|
106
106
|
|
107
107
|
assert w.title != title
|
108
|
-
assert w.title == "
|
108
|
+
assert w.title == "cleanerupper r*m*v*_t*st title"
|
109
109
|
|
110
110
|
assert w.body != body
|
111
|
-
assert w.body == "
|
111
|
+
assert w.body == "cleanerupper scr*mbl*_t*st body"
|
112
112
|
end
|
113
113
|
|
114
114
|
def test_cleanerupper_custom_callback
|
data/test/debug.log
CHANGED
@@ -2800,3 +2800,85 @@
|
|
2800
2800
|
[4;35;1mScrambleWidget Load (0.2ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 7) [0m
|
2801
2801
|
[4;36;1mMultiDictWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES(NULL, 'stdotge_ regular_test tb_edtse', NULL)[0m
|
2802
2802
|
[4;35;1mMultiDictWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 8) [0m
|
2803
|
+
[4;36;1mSQL (0.4ms)[0m [0;1mselect sqlite_version(*)[0m
|
2804
|
+
[4;35;1mSQL (1.6ms)[0m [0m SELECT name
|
2805
|
+
FROM sqlite_master
|
2806
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
2807
|
+
[0m
|
2808
|
+
[4;36;1mSQL (79.7ms)[0m [0;1mDROP TABLE "widgets"[0m
|
2809
|
+
[4;35;1mSQL (5.0ms)[0m [0mCREATE TABLE "widgets" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(100), "body" varchar(255), "author_name" varchar(100)) [0m
|
2810
|
+
[4;36;1mSQL (1.0ms)[0m [0;1m SELECT name
|
2811
|
+
FROM sqlite_master
|
2812
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
2813
|
+
[0m
|
2814
|
+
[4;35;1mSQL (0.1ms)[0m [0mSELECT version FROM "schema_migrations"[0m
|
2815
|
+
[4;36;1mRemoveWidget Create (0.3ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper test', 'cleanerupper test', NULL)[0m
|
2816
|
+
[4;35;1mRemoveWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 1) [0m
|
2817
|
+
[4;36;1mReplaceWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES(NULL, 'cleanerupper %$$$%**&%*@* test', NULL)[0m
|
2818
|
+
[4;35;1mReplaceWidget Load (2.0ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 2) [0m
|
2819
|
+
[4;36;1mScrambleWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper ttlmescsbrae_ test', NULL, NULL)[0m
|
2820
|
+
[4;35;1mScrambleWidget Load (0.7ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 3) [0m
|
2821
|
+
[4;36;1mCallbackWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('CALLBACK', 'cleanerupper _ustescttmo body', NULL)[0m
|
2822
|
+
[4;35;1mCallbackWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 4) [0m
|
2823
|
+
[4;36;1mCustomDictWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES(NULL, 'tdsotge_ bird_test fsiest_ht', NULL)[0m
|
2824
|
+
[4;35;1mCustomDictWidget Load (0.2ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 5) [0m
|
2825
|
+
[4;36;1mScrambleWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper tfauedts_elt body', NULL, NULL)[0m
|
2826
|
+
[4;35;1mScrambleWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 6) [0m
|
2827
|
+
[4;36;1mMultiDictWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES(NULL, 'ots_gdte regular_test debts_et', NULL)[0m
|
2828
|
+
[4;35;1mMultiDictWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 7) [0m
|
2829
|
+
[4;36;1mSQL (0.4ms)[0m [0;1mselect sqlite_version(*)[0m
|
2830
|
+
[4;35;1mSQL (0.7ms)[0m [0m SELECT name
|
2831
|
+
FROM sqlite_master
|
2832
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
2833
|
+
[0m
|
2834
|
+
[4;36;1mSQL (21.4ms)[0m [0;1mDROP TABLE "widgets"[0m
|
2835
|
+
[4;35;1mSQL (2.7ms)[0m [0mCREATE TABLE "widgets" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(100), "body" varchar(255), "author_name" varchar(100)) [0m
|
2836
|
+
[4;36;1mSQL (0.3ms)[0m [0;1m SELECT name
|
2837
|
+
FROM sqlite_master
|
2838
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
2839
|
+
[0m
|
2840
|
+
[4;35;1mSQL (0.1ms)[0m [0mSELECT version FROM "schema_migrations"[0m
|
2841
|
+
[4;36;1mRemoveWidget Create (0.3ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper test', 'cleanerupper test', NULL)[0m
|
2842
|
+
[4;35;1mRemoveWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 1) [0m
|
2843
|
+
[4;36;1mReplaceWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES(NULL, 'cleanerupper &@$%%$**%$&* test', NULL)[0m
|
2844
|
+
[4;35;1mReplaceWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 2) [0m
|
2845
|
+
[4;36;1mScrambleWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper rlbtsm_eeacts test', NULL, NULL)[0m
|
2846
|
+
[4;35;1mScrambleWidget Load (0.2ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 3) [0m
|
2847
|
+
[4;36;1mCallbackWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('CALLBACK', 'cleanerupper cut_emtotss body', NULL)[0m
|
2848
|
+
[4;35;1mCallbackWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 4) [0m
|
2849
|
+
[4;36;1mCustomDictWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES(NULL, 'gs_otetd bird_test _ftshseti', NULL)[0m
|
2850
|
+
[4;35;1mCustomDictWidget Load (0.2ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 5) [0m
|
2851
|
+
[4;36;1mCustomWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper r*m*v*_t*st title', 'cleanerupper scr*mbl*_t*st body', NULL)[0m
|
2852
|
+
[4;35;1mCustomWidget Load (0.2ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 6) [0m
|
2853
|
+
[4;36;1mScrambleWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper lftstedeau_t body', NULL, NULL)[0m
|
2854
|
+
[4;35;1mScrambleWidget Load (0.2ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 7) [0m
|
2855
|
+
[4;36;1mMultiDictWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES(NULL, 'tstdo_ge regular_test d_btsete', NULL)[0m
|
2856
|
+
[4;35;1mMultiDictWidget Load (0.2ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 8) [0m
|
2857
|
+
[4;36;1mSQL (0.4ms)[0m [0;1mselect sqlite_version(*)[0m
|
2858
|
+
[4;35;1mSQL (0.7ms)[0m [0m SELECT name
|
2859
|
+
FROM sqlite_master
|
2860
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
2861
|
+
[0m
|
2862
|
+
[4;36;1mSQL (38.7ms)[0m [0;1mDROP TABLE "widgets"[0m
|
2863
|
+
[4;35;1mSQL (2.8ms)[0m [0mCREATE TABLE "widgets" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(100), "body" varchar(255), "author_name" varchar(100)) [0m
|
2864
|
+
[4;36;1mSQL (0.3ms)[0m [0;1m SELECT name
|
2865
|
+
FROM sqlite_master
|
2866
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
2867
|
+
[0m
|
2868
|
+
[4;35;1mSQL (0.1ms)[0m [0mSELECT version FROM "schema_migrations"[0m
|
2869
|
+
[4;36;1mRemoveWidget Create (0.3ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper test', 'cleanerupper test', NULL)[0m
|
2870
|
+
[4;35;1mRemoveWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 1) [0m
|
2871
|
+
[4;36;1mReplaceWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES(NULL, 'cleanerupper !*%$%*@$*%$@ test', NULL)[0m
|
2872
|
+
[4;35;1mReplaceWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 2) [0m
|
2873
|
+
[4;36;1mScrambleWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper scsrm_tatbeel test', NULL, NULL)[0m
|
2874
|
+
[4;35;1mScrambleWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 3) [0m
|
2875
|
+
[4;36;1mCallbackWidget Create (1.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('CALLBACK', 'cleanerupper eut_tocmsts body', NULL)[0m
|
2876
|
+
[4;35;1mCallbackWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 4) [0m
|
2877
|
+
[4;36;1mCustomDictWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES(NULL, '_destogt bird_test htief_tss', NULL)[0m
|
2878
|
+
[4;35;1mCustomDictWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 5) [0m
|
2879
|
+
[4;36;1mCustomWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper r*m*v*_t*st title', 'cleanerupper scr*mbl*_t*st body', NULL)[0m
|
2880
|
+
[4;35;1mCustomWidget Load (0.3ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 6) [0m
|
2881
|
+
[4;36;1mScrambleWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES('cleanerupper selfuetta_dt body', NULL, NULL)[0m
|
2882
|
+
[4;35;1mScrambleWidget Load (0.2ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 7) [0m
|
2883
|
+
[4;36;1mMultiDictWidget Create (0.2ms)[0m [0;1mINSERT INTO "widgets" ("title", "body", "author_name") VALUES(NULL, 'gd_tstoe regular_test tsedbt_e', NULL)[0m
|
2884
|
+
[4;35;1mMultiDictWidget Load (0.2ms)[0m [0mSELECT * FROM "widgets" WHERE ("widgets"."id" = 8) [0m
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 2
|
9
|
+
version: 0.2.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Mike Trpcic
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-24 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- ./pkg/cleanerupper-0.1.0.gem
|
38
38
|
- ./pkg/cleanerupper-0.1.1.gem
|
39
39
|
- ./pkg/cleanerupper-0.2.0.gem
|
40
|
+
- ./pkg/cleanerupper-0.2.1.gem
|
40
41
|
- ./rails/init.rb
|
41
42
|
- ./tasks/cleanerupper_tasks.rake
|
42
43
|
- ./test/cleanerupper_test.rb
|