sprsquish-order_fu 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 1
4
+ :patch: 0
data/lib/order_fu.rb ADDED
@@ -0,0 +1,62 @@
1
+ module OrderFu
2
+ class AttributeOrder
3
+ attr_accessor :attribute_name, :order_direction
4
+
5
+ def initialize(attribute_name, order_direction)
6
+ @attribute_name, @order_direction = attribute_name, order_direction
7
+ end
8
+
9
+ def to_s
10
+ "#{@attribute_name} #{@order_direction.to_s.upcase}"
11
+ end
12
+
13
+ def <=>(other)
14
+ [self.order_direction.to_s, self.attribute_name.to_s] <=> [other.order_direction.to_s, other.attribute_name.to_s]
15
+ end
16
+
17
+ def ==(other)
18
+ (self <=> other) == 0
19
+ end
20
+
21
+ def eql?(other)
22
+ self.hash == other.hash
23
+ end
24
+
25
+ def hash
26
+ ["AttributeOrder", self.order_direction.to_s, self.attribute_name.to_s].hash
27
+ end
28
+ end
29
+
30
+ # ActiveRecord Extention
31
+ module ActiveRecordExtentions
32
+ def add_order_with_order_fu!(sql, order, scope = :auto)
33
+ order = build_order(order)
34
+
35
+ scope = scope(:find) if :auto == scope
36
+ scoped_order = build_order(scope[:order]) if scope
37
+
38
+ if order
39
+ sql << " ORDER BY #{order}"
40
+ sql << ", #{scoped_order}" if scoped_order
41
+ else
42
+ sql << " ORDER BY #{scoped_order}" if scoped_order
43
+ end
44
+ end
45
+
46
+ def build_order(order)
47
+ case order
48
+ when AttributeOrder then order.to_s
49
+ when Array then order.map { |o| o.to_s } * ','
50
+ else order
51
+ end
52
+ end
53
+ end
54
+
55
+ module SymbolExtensions
56
+ [ :asc, :desc ].each do |order_direction|
57
+ define_method(order_direction) do
58
+ AttributeOrder.new(self, order_direction)
59
+ end
60
+ end
61
+ end
62
+ end
data/spec/database.yml ADDED
@@ -0,0 +1,18 @@
1
+ sqlite:
2
+ :adapter: sqlite
3
+ :dbfile: plugin.sqlite.db
4
+ sqlite3:
5
+ :adapter: sqlite3
6
+ :dbfile: ":memory:"
7
+ postgresql:
8
+ :adapter: postgresql
9
+ :username: postgres
10
+ :password: postgres
11
+ :database: plugin_test
12
+ :min_messages: ERROR
13
+ mysql:
14
+ :adapter: mysql
15
+ :host: localhost
16
+ :username: rails
17
+ :password:
18
+ :database: plugin_test
data/spec/debug.log ADDED
@@ -0,0 +1,378 @@
1
+ # Logfile created on Sat Sep 13 16:13:28 -0700 2008 by /
2
+ SQL (17.9ms) select sqlite_version(*)
3
+ SQL (0.6ms) CREATE TABLE "things" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
4
+ SQL (0.3ms)  SELECT name
5
+ FROM sqlite_master
6
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
7
+ 
8
+ SQL (0.2ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
9
+ SQL (0.3ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
10
+ SQL (0.3ms)  SELECT name
11
+ FROM sqlite_master
12
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
13
+ 
14
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
15
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
16
+ SQL (0.2ms) select sqlite_version(*)
17
+ SQL (0.3ms) CREATE TABLE "things" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
18
+ SQL (0.1ms)  SELECT name
19
+ FROM sqlite_master
20
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
21
+ 
22
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
23
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
24
+ SQL (0.1ms)  SELECT name
25
+ FROM sqlite_master
26
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
27
+ 
28
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
29
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
30
+ SQL (0.2ms) select sqlite_version(*)
31
+ SQL (0.3ms) CREATE TABLE "people" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
32
+ SQL (0.2ms)  SELECT name
33
+ FROM sqlite_master
34
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
35
+ 
36
+ SQL (0.2ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
37
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
38
+ SQL (0.2ms)  SELECT name
39
+ FROM sqlite_master
40
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
41
+ 
42
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
43
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
44
+ SQL (0.2ms) select sqlite_version(*)
45
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
46
+ SQL (0.1ms)  SELECT name
47
+ FROM sqlite_master
48
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
49
+ 
50
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
51
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
52
+ SQL (0.1ms)  SELECT name
53
+ FROM sqlite_master
54
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
55
+ 
56
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
57
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
58
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
59
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
60
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
61
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
62
+ SQL (0.2ms) select sqlite_version(*)
63
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
64
+ SQL (0.2ms)  SELECT name
65
+ FROM sqlite_master
66
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
67
+ 
68
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
69
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
70
+ SQL (0.1ms)  SELECT name
71
+ FROM sqlite_master
72
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
73
+ 
74
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
75
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
76
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
77
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
78
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
79
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
80
+ SQL (0.2ms) select sqlite_version(*)
81
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
82
+ SQL (0.1ms)  SELECT name
83
+ FROM sqlite_master
84
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
85
+ 
86
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
87
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
88
+ SQL (0.1ms)  SELECT name
89
+ FROM sqlite_master
90
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
91
+ 
92
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
93
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
94
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
95
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
96
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
97
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
98
+ SQL (0.2ms) select sqlite_version(*)
99
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
100
+ SQL (0.1ms)  SELECT name
101
+ FROM sqlite_master
102
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
103
+ 
104
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
105
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
106
+ SQL (0.1ms)  SELECT name
107
+ FROM sqlite_master
108
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
109
+ 
110
+ SQL (0.0ms) SELECT version FROM "schema_migrations"
111
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
112
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
113
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
114
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
115
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
116
+ SQL (0.1ms) select sqlite_version(*)
117
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
118
+ SQL (0.1ms)  SELECT name
119
+ FROM sqlite_master
120
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
121
+ 
122
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
123
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
124
+ SQL (0.1ms)  SELECT name
125
+ FROM sqlite_master
126
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
127
+ 
128
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
129
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
130
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
131
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
132
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
133
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
134
+ SQL (0.0ms) SQLite3::SQLException: table "order_fu_controls" already exists: CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
135
+ SQL (0.2ms) select sqlite_version(*)
136
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
137
+ SQL (0.1ms)  SELECT name
138
+ FROM sqlite_master
139
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
140
+ 
141
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
142
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
143
+ SQL (0.1ms)  SELECT name
144
+ FROM sqlite_master
145
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
146
+ 
147
+ SQL (0.0ms) SELECT version FROM "schema_migrations"
148
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
149
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
150
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
151
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
152
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
153
+ SQL (0.2ms) select sqlite_version(*)
154
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
155
+ SQL (0.1ms)  SELECT name
156
+ FROM sqlite_master
157
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
158
+ 
159
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
160
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
161
+ SQL (0.1ms)  SELECT name
162
+ FROM sqlite_master
163
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
164
+ 
165
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
166
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
167
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
168
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
169
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
170
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
171
+ SQL (0.0ms) SQLite3::SQLException: table "order_fu_controls" already exists: CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
172
+ SQL (0.2ms) select sqlite_version(*)
173
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
174
+ SQL (0.1ms)  SELECT name
175
+ FROM sqlite_master
176
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
177
+ 
178
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
179
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
180
+ SQL (0.1ms)  SELECT name
181
+ FROM sqlite_master
182
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
183
+ 
184
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
185
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
186
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
187
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
188
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
189
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
190
+ SQL (0.2ms) select sqlite_version(*)
191
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
192
+ SQL (0.1ms)  SELECT name
193
+ FROM sqlite_master
194
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
195
+ 
196
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
197
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
198
+ SQL (0.1ms)  SELECT name
199
+ FROM sqlite_master
200
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
201
+ 
202
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
203
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
204
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
205
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
206
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
207
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
208
+ OrderFuControl Load (0.3ms) SELECT * FROM "order_fu_controls" 
209
+ OrderFuControl Load (0.3ms) SELECT * FROM "order_fu_controls" 
210
+ SQL (0.2ms) select sqlite_version(*)
211
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
212
+ SQL (0.2ms)  SELECT name
213
+ FROM sqlite_master
214
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
215
+ 
216
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
217
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
218
+ SQL (0.1ms)  SELECT name
219
+ FROM sqlite_master
220
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
221
+ 
222
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
223
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
224
+ OrderFuControl Create (0.2ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
225
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
226
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
227
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
228
+ OrderFuControl Load (0.3ms) SELECT * FROM "order_fu_controls" 
229
+ OrderFuControl Load (0.2ms) SELECT * FROM "order_fu_controls" 
230
+ SQL (0.2ms) select sqlite_version(*)
231
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
232
+ SQL (0.2ms)  SELECT name
233
+ FROM sqlite_master
234
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
235
+ 
236
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
237
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
238
+ SQL (0.1ms)  SELECT name
239
+ FROM sqlite_master
240
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
241
+ 
242
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
243
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
244
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
245
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
246
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
247
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
248
+ SQL (0.2ms) select sqlite_version(*)
249
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
250
+ SQL (0.3ms)  SELECT name
251
+ FROM sqlite_master
252
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
253
+ 
254
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
255
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
256
+ SQL (0.1ms)  SELECT name
257
+ FROM sqlite_master
258
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
259
+ 
260
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
261
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
262
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
263
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
264
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
265
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
266
+ OrderFuControl Load (1.1ms) SELECT * FROM "order_fu_controls" ORDER BY first_name DESC
267
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY first_name ASC
268
+ SQL (0.2ms) select sqlite_version(*)
269
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
270
+ SQL (0.1ms)  SELECT name
271
+ FROM sqlite_master
272
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
273
+ 
274
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
275
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
276
+ SQL (0.1ms)  SELECT name
277
+ FROM sqlite_master
278
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
279
+ 
280
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
281
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
282
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
283
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
284
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
285
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
286
+ OrderFuControl Load (1.3ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
287
+ OrderFuControl Load (0.8ms) SELECT * FROM "order_fu_controls" ORDER BY last_name ASC
288
+ SQL (0.2ms) select sqlite_version(*)
289
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
290
+ SQL (0.2ms)  SELECT name
291
+ FROM sqlite_master
292
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
293
+ 
294
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
295
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
296
+ SQL (0.1ms)  SELECT name
297
+ FROM sqlite_master
298
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
299
+ 
300
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
301
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
302
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
303
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
304
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
305
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
306
+ OrderFuControl Load (107.5ms) SELECT * FROM "order_fu_controls" ORDER BY first_name ASC,last_name DESC
307
+ OrderFuControl Load (1.1ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
308
+ OrderFuControl Load (1.0ms) SELECT * FROM "order_fu_controls" ORDER BY last_name ASC
309
+ SQL (0.2ms) select sqlite_version(*)
310
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
311
+ SQL (0.2ms)  SELECT name
312
+ FROM sqlite_master
313
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
314
+ 
315
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
316
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
317
+ SQL (0.1ms)  SELECT name
318
+ FROM sqlite_master
319
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
320
+ 
321
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
322
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
323
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
324
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
325
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
326
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
327
+ OrderFuControl Load (1.3ms) SELECT * FROM "order_fu_controls" ORDER BY first_name DESC,last_name ASC
328
+ OrderFuControl Load (0.8ms) SELECT * FROM "order_fu_controls" ORDER BY first_name ASC,last_name DESC
329
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
330
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY last_name ASC
331
+ SQL (0.2ms) select sqlite_version(*)
332
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
333
+ SQL (0.1ms)  SELECT name
334
+ FROM sqlite_master
335
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
336
+ 
337
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
338
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
339
+ SQL (0.1ms)  SELECT name
340
+ FROM sqlite_master
341
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
342
+ 
343
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
344
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
345
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
346
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
347
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
348
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
349
+ OrderFuControl Load (1.3ms) SELECT * FROM "order_fu_controls" ORDER BY last_name
350
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY first_name DESC,last_name ASC
351
+ OrderFuControl Load (0.6ms) SELECT * FROM "order_fu_controls" ORDER BY first_name ASC,last_name DESC
352
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
353
+ OrderFuControl Load (0.8ms) SELECT * FROM "order_fu_controls" ORDER BY last_name ASC
354
+ SQL (0.2ms) select sqlite_version(*)
355
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
356
+ SQL (0.2ms)  SELECT name
357
+ FROM sqlite_master
358
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
359
+ 
360
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
361
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
362
+ SQL (0.1ms)  SELECT name
363
+ FROM sqlite_master
364
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
365
+ 
366
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
367
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
368
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
369
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
370
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
371
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
372
+ OrderFuControl Load (1.1ms) SELECT * FROM "order_fu_controls" ORDER BY last_name
373
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
374
+ OrderFuControl Load (0.9ms) SELECT * FROM "order_fu_controls" ORDER BY last_name
375
+ OrderFuControl Load (0.6ms) SELECT * FROM "order_fu_controls" ORDER BY first_name DESC,last_name ASC
376
+ OrderFuControl Load (0.6ms) SELECT * FROM "order_fu_controls" ORDER BY first_name ASC,last_name DESC
377
+ OrderFuControl Load (0.6ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
378
+ OrderFuControl Load (1.1ms) SELECT * FROM "order_fu_controls" ORDER BY last_name ASC
@@ -0,0 +1,58 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ def expect_order(test, control)
4
+ test.map { |t| [t.first_name, t.last_name] }.should == control.map { |c| [c[:first_name], c[:last_name]] }
5
+ end
6
+
7
+ describe OrderFu do
8
+ it 'orders by "attr ASC"' do
9
+ expect_order(
10
+ OrderFuControl.find(:all, :order => :last_name.asc),
11
+ ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }
12
+ )
13
+ end
14
+
15
+ it 'orders by "attr DESC"' do
16
+ expect_order(
17
+ OrderFuControl.find(:all, :order => :last_name.desc),
18
+ ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }.reverse
19
+ )
20
+ end
21
+
22
+ it 'orders by "attr ASC, attr DESC"' do
23
+ expect_order(OrderFuControl.find(:all, :order => [:first_name.asc, :last_name.desc]), [
24
+ {:first_name => 'Adam', :last_name => 'Zentowski' },
25
+ {:first_name => 'Adam', :last_name => 'Yevgevi' },
26
+ {:first_name => 'Bert', :last_name => 'Xander' },
27
+ {:first_name => 'Clif', :last_name => 'Walters' },
28
+ ])
29
+ end
30
+
31
+ it 'orders by "attr DESC, attr ASC"' do
32
+ expect_order(OrderFuControl.find(:all, :order => [:first_name.desc, :last_name.asc]), [
33
+ {:first_name => 'Adam', :last_name => 'Zentowski' },
34
+ {:first_name => 'Adam', :last_name => 'Yevgevi' },
35
+ {:first_name => 'Bert', :last_name => 'Xander' },
36
+ {:first_name => 'Clif', :last_name => 'Walters' },
37
+ ].reverse)
38
+ end
39
+
40
+ it 'orders from symbol without interference'do
41
+ expect_order(
42
+ OrderFuControl.find(:all, :order => :last_name),
43
+ ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }
44
+ )
45
+ end
46
+
47
+ it 'orders from string without interference'do
48
+ expect_order(
49
+ OrderFuControl.find(:all, :order => 'last_name'),
50
+ ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }
51
+ )
52
+
53
+ expect_order(
54
+ OrderFuControl.find(:all, :order => 'last_name DESC'),
55
+ ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }.reverse
56
+ )
57
+ end
58
+ end
data/spec/schema.rb ADDED
@@ -0,0 +1,5 @@
1
+ ActiveRecord::Schema.define(:version => 1) do
2
+ create_table :order_fu_controls do |t|
3
+ t.string :first_name, :last_name
4
+ end
5
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,7 @@
1
+ --colour
2
+ --format
3
+ specdoc
4
+ --loadby
5
+ mtime
6
+ --reverse
7
+ --backtrace
@@ -0,0 +1,24 @@
1
+ begin
2
+ require File.dirname(__FILE__) + '/../../../../spec/spec_helper'
3
+ rescue LoadError
4
+ puts "You need to install rspec in your base app"
5
+ exit
6
+ end
7
+
8
+ plugin_spec_dir = File.dirname(__FILE__)
9
+ ActiveRecord::Base.logger = Logger.new(plugin_spec_dir + "/debug.log")
10
+ config = YAML::load(IO.read(plugin_spec_dir + '/database.yml'))
11
+ ActiveRecord::Base.establish_connection(config[ENV['DB'] || 'sqlite3'])
12
+ load(plugin_spec_dir + "/schema.rb") if File.exist?(plugin_spec_dir + "/schema.rb")
13
+
14
+ class OrderFuControl < ActiveRecord::Base
15
+ end
16
+
17
+ ORDER_FU_CONTROLS = [
18
+ {:first_name => 'Adam', :last_name => 'Yevgevi' },
19
+ {:first_name => 'Clif', :last_name => 'Walters' },
20
+ {:first_name => 'Adam', :last_name => 'Zentowski' },
21
+ {:first_name => 'Bert', :last_name => 'Xander' },
22
+ ]
23
+
24
+ ORDER_FU_CONTROLS.each { |control| OrderFuControl.create control }
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sprsquish-order_fu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jeff Smick
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-01-29 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: README
17
+ email: sprsquish@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - VERSION.yml
26
+ - lib/order_fu.rb
27
+ - spec/database.yml
28
+ - spec/debug.log
29
+ - spec/order_fu_spec.rb
30
+ - spec/schema.rb
31
+ - spec/spec.opts
32
+ - spec/spec_helper.rb
33
+ has_rdoc: true
34
+ homepage: http://github.com/sprsquish/order_fu
35
+ post_install_message:
36
+ rdoc_options:
37
+ - --inline-source
38
+ - --charset=UTF-8
39
+ require_paths:
40
+ - lib
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: "0"
52
+ version:
53
+ requirements: []
54
+
55
+ rubyforge_project:
56
+ rubygems_version: 1.2.0
57
+ signing_key:
58
+ specification_version: 2
59
+ summary: README
60
+ test_files: []
61
+