makura 2009.05.27 → 2010.08

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/AUTHORS ADDED
@@ -0,0 +1,6 @@
1
+ Following persons have contributed to makura.
2
+ (Sorted by number of submitted patches, then alphabetically)
3
+
4
+ 71 Michael Fellinger <m.fellinger@gmail.com>
5
+ 7 Tadahiko Uehara <kikofx@gmail.com>
6
+ 2 Preston Marshall <preston@synergy-solutions.biz>
data/MANIFEST CHANGED
@@ -1,9 +1,12 @@
1
+ AUTHORS
1
2
  CHANGELOG
2
3
  COPYING
3
4
  MANIFEST
4
5
  README.md
5
6
  Rakefile
6
7
  bin/makura
8
+ doc/AUTHORS
9
+ doc/CHANGELOG
7
10
  example/blog.rb
8
11
  example/couch/map/author_all.js
9
12
  example/couch/map/author_posts.js
@@ -29,6 +32,7 @@ tasks/changelog.rake
29
32
  tasks/copyright.rake
30
33
  tasks/gem.rake
31
34
  tasks/gem_installer.rake
35
+ tasks/gem_setup.rake
32
36
  tasks/git.rake
33
37
  tasks/grancher.rake
34
38
  tasks/manifest.rake
@@ -36,6 +40,7 @@ tasks/metric_changes.rake
36
40
  tasks/rcov.rake
37
41
  tasks/release.rake
38
42
  tasks/reversion.rake
43
+ tasks/setup.rake
39
44
  tasks/todo.rake
40
45
  tasks/traits.rake
41
46
  tasks/yard.rake
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require 'date'
6
6
 
7
7
  PROJECT_SPECS = Dir['spec/**/*.rb']
8
8
  PROJECT_MODULE = 'Makura'
9
- PROJECT_VERSION = ENV['VERSION'] || Date.today.strftime("%Y.%m.%d")
9
+ PROJECT_VERSION = ENV['VERSION'].dup || Date.today.strftime("%Y.%m.%d")
10
10
 
11
11
  GEMSPEC = Gem::Specification.new{|s|
12
12
  s.name = 'makura'
@@ -0,0 +1,6 @@
1
+ Following persons have contributed to makura.
2
+ (Sorted by number of submitted patches, then alphabetically)
3
+
4
+ 79 Michael Fellinger <m.fellinger@gmail.com>
5
+ 8 Tadahiko Uehara <kikofx@gmail.com>
6
+ 2 Preston Marshall <preston@synergy-solutions.biz>
@@ -0,0 +1,378 @@
1
+ [1f2647f | Tue Aug 03 05:32:53 UTC 2010] Michael Fellinger <m.fellinger@gmail.com>
2
+
3
+ * Version 2010.08
4
+
5
+ [2f92913 | Tue Aug 03 05:32:36 UTC 2010] Michael Fellinger <m.fellinger@gmail.com>
6
+
7
+ * Remove last jquery reference
8
+
9
+ [3e9ccc2 | Tue Aug 03 05:26:53 UTC 2010] Michael Fellinger <m.fellinger@gmail.com>
10
+
11
+ * Update tasks
12
+
13
+ [8a3f06f | Fri Jul 16 04:55:40 UTC 2010] Tadahiko Uehara <kikofx@gmail.com>
14
+
15
+ * Remove reduce parameter to prevent 'Invalid URL parameter' error.
16
+
17
+ See https://issues.apache.org/jira/browse/COUCHDB-383#action_12722350
18
+
19
+ [a5c7b82 | Wed May 27 06:25:54 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
20
+
21
+ * Fix url for Model#multi_fetch
22
+
23
+ [9c9f8b3 | Wed May 27 06:25:40 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
24
+
25
+ * The model namespace now directly translates into the couch/ structure, Foo::Bar#duh becomes couch/map/foo/bar/duh.js
26
+
27
+ [3dc3e54 | Wed May 27 06:24:38 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
28
+
29
+ * Fix issue with layout on 1.9
30
+
31
+ [14cf088 | Wed May 27 02:29:08 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
32
+
33
+ * forgot AUTHORS
34
+
35
+ [752081e | Wed May 27 02:28:46 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
36
+
37
+ * Version 2009.05.27
38
+
39
+ [d4565ac | Wed May 27 02:23:09 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
40
+
41
+ * Fix rakefile
42
+
43
+ [33f27af | Wed May 27 02:21:44 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
44
+
45
+ * Update tasks
46
+
47
+ [4fd7977 | Mon May 11 03:52:51 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
48
+
49
+ * Revert changes to get going on 0.9.0
50
+
51
+ [255e65c | Tue Apr 21 17:14:06 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
52
+
53
+ * Version 2009.04.22
54
+
55
+ [307642a | Tue Apr 21 17:12:55 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
56
+
57
+ * Add Makura::constant and use it in convert_raw
58
+
59
+ [e6370eb | Tue Apr 21 17:10:12 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
60
+
61
+ * Make Makura run on 1.8 again
62
+
63
+ [4f8cc31 | Tue Apr 21 17:09:59 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
64
+
65
+ * Fix references to _view
66
+
67
+ [513495b | Tue Apr 21 06:15:47 UTC 2009] Tadahiko Uehara <kikofx@gmail.com>
68
+
69
+ * Make convert_raw work with namespaced model.
70
+
71
+ [e2eee79 | Sun Apr 19 04:58:12 UTC 2009] Tadahiko Uehara <kikofx@gmail.com>
72
+
73
+ * Support for namespaced models by using namespace as layout's dir name.
74
+
75
+ MyApp::Admin::Foo #=> .couch/my_app/admin/map/foo_xxx.js
76
+
77
+ [8c9aa24 | Sat Mar 28 08:01:56 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
78
+
79
+ * Version 2009.03.28
80
+
81
+ [da5cebc | Sat Mar 28 08:00:13 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
82
+
83
+ * Put version in another file for easier management
84
+
85
+ [534a2bc | Sat Mar 28 07:59:15 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
86
+
87
+ * Add Rakefile and some tasks
88
+
89
+ [643fa64 | Sun Mar 01 13:23:15 UTC 2009] Tadahiko Uehara <kikofx@gmail.com>
90
+
91
+ * Use Array() instead of to_a for Ruby 1.9 compatibility.
92
+
93
+ Signed-off-by: Michael Fellinger <m.fellinger@gmail.com>
94
+
95
+ [3d77ce6 | Sat Mar 21 05:07:04 UTC 2009] Preston Marshall <preston@synergy-solutions.biz>
96
+
97
+ * new gem
98
+
99
+ Signed-off-by: Michael Fellinger <m.fellinger@gmail.com>
100
+
101
+ [9eb26bb | Sat Mar 21 05:00:38 UTC 2009] Preston Marshall <preston@synergy-solutions.biz>
102
+
103
+ * Updated view path for latest svn (not sure when it was added, but it works with this) temp views may be affected too, but have not tried them yet
104
+
105
+ Signed-off-by: Michael Fellinger <m.fellinger@gmail.com>
106
+
107
+ [6b23e9c | Sat Mar 21 17:00:04 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
108
+
109
+ * remove Model#saved?, that makes Model#save work as expected
110
+
111
+ [c83c392 | Sat Mar 21 16:55:57 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
112
+
113
+ * Remove last traces of NotNaughty from example
114
+
115
+ [19a63b5 | Mon Mar 02 01:08:08 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
116
+
117
+ * Fix inspect for Database
118
+
119
+ [5ae5345 | Sun Mar 01 14:23:15 UTC 2009] Tadahiko Uehara <kikofx@gmail.com>
120
+
121
+ * Use Array() instead of to_a for Ruby 1.9 compatibility.
122
+
123
+ [1ff34ab | Sat Feb 28 14:24:53 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
124
+
125
+ * Shame on me, forgot to add that change... will push new version tomorrow
126
+
127
+ Signed-off-by: Tadahiko Uehara <kikofX@gmail.com>
128
+
129
+ [dfc353a | Sat Feb 28 14:23:39 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
130
+
131
+ * Version 2009.03.01, removed json gem dependency as ruby 1.9.1 has it in stdlib
132
+
133
+ Signed-off-by: Tadahiko Uehara <kikofX@gmail.com>
134
+
135
+ [29fe7ec | Sat Feb 28 15:24:53 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
136
+
137
+ * Shame on me, forgot to add that change... will push new version tomorrow
138
+
139
+ [349be0a | Sat Feb 28 15:23:39 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
140
+
141
+ * Version 2009.03.01, removed json gem dependency as ruby 1.9.1 has it in stdlib
142
+
143
+ [ad1a97d | Mon Feb 23 00:51:19 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
144
+
145
+ * Proper fallback to default_language
146
+
147
+ Signed-off-by: Tadahiko Uehara <kikofX@gmail.com>
148
+
149
+ [4b89942 | Mon Feb 16 07:32:02 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
150
+
151
+ * Some docs for localize plugin
152
+
153
+ Signed-off-by: Tadahiko Uehara <kikofX@gmail.com>
154
+
155
+ [b79a538 | Mon Feb 16 07:31:55 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
156
+
157
+ * Support for default language in localize plugin
158
+
159
+ Signed-off-by: Tadahiko Uehara <kikofX@gmail.com>
160
+
161
+ [de84c8b | Wed Feb 18 01:45:30 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
162
+
163
+ * Update version
164
+
165
+ Signed-off-by: Tadahiko Uehara <kikofX@gmail.com>
166
+
167
+ [4d4a4c1 | Mon Feb 16 07:24:51 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
168
+
169
+ * Add plugin/localize
170
+
171
+ Signed-off-by: Tadahiko Uehara <kikofX@gmail.com>
172
+
173
+ [83e9177 | Mon Feb 23 01:51:19 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
174
+
175
+ * Proper fallback to default_language
176
+
177
+ [a72c2c6 | Wed Feb 18 02:45:30 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
178
+
179
+ * Update version
180
+
181
+ [1feac5a | Mon Feb 16 08:32:02 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
182
+
183
+ * Some docs for localize plugin
184
+
185
+ [4ab5df7 | Mon Feb 16 08:31:55 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
186
+
187
+ * Support for default language in localize plugin
188
+
189
+ [cd045a1 | Mon Feb 16 08:24:51 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
190
+
191
+ * Add plugin/localize
192
+
193
+ [fddd7aa | Fri Feb 13 05:41:25 UTC 2009] Tadahiko Uehara <kikofx@gmail.com>
194
+
195
+ * fix typo.
196
+
197
+ Signed-off-by: Michael Fellinger <m.fellinger@gmail.com>
198
+
199
+ [5469f31 | Fri Feb 13 06:41:25 UTC 2009] Tadahiko Uehara <kikofx@gmail.com>
200
+
201
+ * fix typo.
202
+
203
+ [025964f | Thu Jan 15 02:35:37 UTC 2009] Michael Fellinger <m.fellinger@gmail.com>
204
+
205
+ * Sofa is now called Makura
206
+
207
+ [e8bfaf9 | Mon Dec 29 17:09:46 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
208
+
209
+ * Don't rely on NotNaughty!
210
+
211
+ [fb10169 | Wed Dec 24 04:56:55 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
212
+
213
+ * Release 2008.12.24
214
+
215
+ [e4b2a88 | Wed Dec 24 04:56:29 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
216
+
217
+ * Layout::PATH
218
+
219
+ [2156ed1 | Wed Dec 24 04:55:37 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
220
+
221
+ * Remove Rack as dependency
222
+
223
+ [b9a9724 | Sun Dec 21 08:51:18 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
224
+
225
+ * Support for map/reduce templating
226
+
227
+ [411786e | Fri Dec 19 12:08:11 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
228
+
229
+ * Better error message if resource not found
230
+
231
+ [6579ae3 | Tue Dec 16 02:57:40 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
232
+
233
+ * Fix usage of pretty_from_md5
234
+
235
+ [514c7d6 | Mon Dec 15 07:03:43 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
236
+
237
+ * Update gemspec
238
+
239
+ [05640a9 | Mon Dec 15 07:03:02 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
240
+
241
+ * Remove dependency on not_naughty
242
+
243
+ [c72821d | Mon Dec 15 07:02:44 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
244
+
245
+ * Convert MD5 from CouchDB uuid generator into base 62
246
+
247
+ [405d360 | Sun Dec 14 06:40:52 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
248
+
249
+ * Implement Model#hash and Model#eql?
250
+
251
+ [87c709e | Sat Dec 13 04:18:14 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
252
+
253
+ * Model::multi_fetch and Model::multi_fetch_with_docs
254
+
255
+ [7e369ed | Fri Dec 12 06:27:34 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
256
+
257
+ * Ignore nil value parameters for the uri
258
+
259
+ [5decf5c | Fri Dec 12 06:03:28 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
260
+
261
+ * Rescue correct error on Model::[]
262
+
263
+ [bc28450 | Thu Dec 11 10:11:57 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
264
+
265
+ * Disable caching automatically if memcached isn't available
266
+
267
+ [aea3dd7 | Wed Dec 10 14:45:16 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
268
+
269
+ * Add Model#detach to get rid of attachments
270
+
271
+ [1705ad2 | Mon Dec 08 05:31:11 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
272
+
273
+ * CACHE_TTL is now 5 by default
274
+
275
+ [e6aa3f9 | Thu Dec 04 08:31:07 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
276
+
277
+ * Make only one request per relation
278
+
279
+ [c47cea0 | Thu Dec 04 08:30:39 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
280
+
281
+ * Add Model#to_json
282
+
283
+ [aceb7e7 | Thu Dec 04 08:30:18 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
284
+
285
+ * Add support for caching GET requests in memcached
286
+
287
+ [c055759 | Thu Dec 04 05:36:15 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
288
+
289
+ * a little bit better error handling
290
+
291
+ [204f003 | Wed Dec 03 02:49:13 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
292
+
293
+ * Version 2008.12.03
294
+
295
+ [2eec148 | Mon Dec 01 15:58:20 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
296
+
297
+ * Avoid storing empty maps, bad bad mojo
298
+
299
+ [617b9f6 | Sat Nov 29 06:53:53 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
300
+
301
+ * Version 2008.11.29
302
+
303
+ [cbe43fa | Sat Nov 29 06:53:14 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
304
+
305
+ * Remove debugging output
306
+
307
+ [67f811e | Fri Nov 28 07:52:46 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
308
+
309
+ * Compensate for a bug in couch_httpd_view.erl
310
+
311
+ [ba95c06 | Fri Nov 28 07:51:56 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
312
+
313
+ * Automatic conversion of Time, new :type parameter for property
314
+
315
+ [2b2cffd | Fri Nov 28 07:51:19 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
316
+
317
+ * Allow Database#[]= to save docs
318
+
319
+ [9b2ab26 | Thu Nov 27 13:57:39 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
320
+
321
+ * Update gemspec, correct files
322
+
323
+ [3c0541b | Thu Nov 27 13:11:22 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
324
+
325
+ * Plugin functionality and pager plugin
326
+
327
+ [22840cb | Thu Nov 27 13:10:57 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
328
+
329
+ * Allow layout :map => source, :reduce => source
330
+
331
+ [ae9aeb5 | Thu Nov 27 13:10:08 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
332
+
333
+ * Model::view_with_docs to take advantage of include_docs
334
+
335
+ [8a5e7ca | Thu Nov 27 10:30:48 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
336
+
337
+ * Version 2008.11.27
338
+
339
+ [753cfa7 | Thu Nov 27 10:26:28 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
340
+
341
+ * add bin/sofa for quick debugging sessions
342
+
343
+ [d2a0886 | Thu Nov 27 10:26:07 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
344
+
345
+ * Small refactor
346
+
347
+ [b1bdaf0 | Tue Nov 25 10:44:05 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
348
+
349
+ * Enable cloning
350
+
351
+ [09dea66 | Tue Nov 25 09:57:15 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
352
+
353
+ * add encode_attachments
354
+
355
+ [3277f11 | Tue Nov 25 09:31:04 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
356
+
357
+ * Adding MIT license
358
+
359
+ [f6dd8ef | Tue Nov 25 09:30:35 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
360
+
361
+ * Document some of Sofa::Server
362
+
363
+ [3f0bc71 | Tue Nov 25 09:30:22 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
364
+
365
+ * Make relations sane
366
+
367
+ [041dfd1 | Tue Nov 25 09:29:57 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
368
+
369
+ * Expand and document Sofa::Database
370
+
371
+ [032b958 | Tue Nov 25 09:29:01 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
372
+
373
+ * Better errors
374
+
375
+ [0bd7246 | Fri Nov 21 12:07:47 UTC 2008] Michael Fellinger <m.fellinger@gmail.com>
376
+
377
+ * Inaugral commit
378
+
@@ -40,7 +40,7 @@ module Makura
40
40
  if file_or_function =~ /function\(.*\)/
41
41
  function = file_or_function
42
42
  else
43
- parts = file_or_function.split('::')
43
+ parts = file_or_function.to_s.split('::')
44
44
  file = parts.pop
45
45
  filename = File.join(parts, type.to_s, "#{file}.js")
46
46
 
@@ -246,12 +246,13 @@ module Makura
246
246
 
247
247
  def layout(name, opts = {})
248
248
  design[name] = layout = Layout.new(name, design)
249
- unless opts[:map] or opts[:reduce]
250
- prefix = self.name.gsub(/\B[A-Z][^A-Z]/, '_\&')
249
+
250
+ unless opts[:map] || opts[:reduce]
251
+ prefix = self.name.gsub('::', '/')
251
252
  end
252
253
 
253
- map_name = opts[:map] || "#{prefix}_#{name}".downcase
254
- reduce_name = opts[:reduce] || "#{prefix}_#{name}".downcase
254
+ map_name = opts[:map] || "#{prefix}/#{name}".downcase
255
+ reduce_name = opts[:reduce] || "#{prefix}/#{name}".downcase
255
256
 
256
257
  layout.load_map(map_name)
257
258
  layout.load_reduce(reduce_name)
@@ -320,12 +321,12 @@ module Makura
320
321
  def multi_fetch(name, opts = {})
321
322
  keys = opts.delete(:keys) || opts.delete('keys')
322
323
  opts.merge!(:payload => {'keys' => Array(keys)})
323
- hash = database.post("_view/#{self}/#{name}", opts)
324
+ hash = database.post("#{Makura.escape(self)}/_view/#{name}", opts)
324
325
  convert_raw(hash['rows'])
325
326
  end
326
327
 
327
328
  def multi_fetch_with_docs(name, opts = {})
328
- opts.merge!(:include_docs => true, :reduce => false)
329
+ opts.merge!(:include_docs => true)
329
330
  multi_fetch(name, opts)
330
331
  end
331
332
  alias multi_document_fetch multi_fetch_with_docs
@@ -335,7 +336,7 @@ module Makura
335
336
  # To make using this approach more convenient use this method.
336
337
 
337
338
  def view_with_docs(name, opts = {})
338
- opts.merge!(:include_docs => true, :reduce => false)
339
+ opts.merge!(:include_docs => true)
339
340
  view(name, opts)
340
341
  end
341
342
 
@@ -1,3 +1,3 @@
1
1
  module Makura
2
- VERSION = "2009.05.27"
2
+ VERSION = "2010.08"
3
3
  end
@@ -2,25 +2,25 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{makura}
5
- s.version = "2009.05.27"
5
+ s.version = "2010.08"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Michael 'manveru' Fellinger"]
9
- s.date = %q{2009-05-27}
9
+ s.date = %q{2010-08-03}
10
10
  s.default_executable = %q{makura}
11
11
  s.email = %q{m.fellinger@gmail.com}
12
12
  s.executables = ["makura"]
13
- s.files = ["CHANGELOG", "COPYING", "MANIFEST", "README.md", "Rakefile", "bin/makura", "example/blog.rb", "example/couch/map/author_all.js", "example/couch/map/author_posts.js", "example/couch/map/post_all.js", "example/couch/map/post_comments.js", "example/couch/reduce/sum_length.js", "lib/makura.rb", "lib/makura/database.rb", "lib/makura/design.rb", "lib/makura/error.rb", "lib/makura/http_methods.rb", "lib/makura/layout.rb", "lib/makura/model.rb", "lib/makura/plugin/localize.rb", "lib/makura/plugin/pager.rb", "lib/makura/server.rb", "lib/makura/uuid_cache.rb", "lib/makura/version.rb", "makura.gemspec", "tasks/authors.rake", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/copyright.rake", "tasks/gem.rake", "tasks/gem_installer.rake", "tasks/git.rake", "tasks/grancher.rake", "tasks/manifest.rake", "tasks/metric_changes.rake", "tasks/rcov.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/todo.rake", "tasks/traits.rake", "tasks/yard.rake", "tasks/ycov.rake"]
13
+ s.files = ["AUTHORS", "CHANGELOG", "COPYING", "MANIFEST", "README.md", "Rakefile", "bin/makura", "doc/AUTHORS", "doc/CHANGELOG", "example/blog.rb", "example/couch/map/author_all.js", "example/couch/map/author_posts.js", "example/couch/map/post_all.js", "example/couch/map/post_comments.js", "example/couch/reduce/sum_length.js", "lib/makura.rb", "lib/makura/database.rb", "lib/makura/design.rb", "lib/makura/error.rb", "lib/makura/http_methods.rb", "lib/makura/layout.rb", "lib/makura/model.rb", "lib/makura/plugin/localize.rb", "lib/makura/plugin/pager.rb", "lib/makura/server.rb", "lib/makura/uuid_cache.rb", "lib/makura/version.rb", "makura.gemspec", "tasks/authors.rake", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/copyright.rake", "tasks/gem.rake", "tasks/gem_installer.rake", "tasks/gem_setup.rake", "tasks/git.rake", "tasks/grancher.rake", "tasks/manifest.rake", "tasks/metric_changes.rake", "tasks/rcov.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/setup.rake", "tasks/todo.rake", "tasks/traits.rake", "tasks/yard.rake", "tasks/ycov.rake"]
14
14
  s.homepage = %q{http://github.com/manveru/makura}
15
15
  s.require_paths = ["lib"]
16
- s.rubygems_version = %q{1.3.3}
16
+ s.rubygems_version = %q{1.3.7}
17
17
  s.summary = %q{Ruby wrapper around the CouchDB REST API.}
18
18
 
19
19
  if s.respond_to? :specification_version then
20
20
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
21
21
  s.specification_version = 3
22
22
 
23
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
23
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
24
24
  s.add_runtime_dependency(%q<rest-client>, [">= 0.8.1"])
25
25
  else
26
26
  s.add_dependency(%q<rest-client>, [">= 0.8.1"])
@@ -1,25 +1,12 @@
1
- # Once git has a fix for the glibc in handling .mailmap and another fix for
2
- # allowing empty mail address to be mapped in .mailmap we won't have to handle
3
- # them manually.
4
-
5
- desc 'Update AUTHORS'
1
+ desc 'Update doc/AUTHORS'
6
2
  task :authors do
7
3
  authors = Hash.new(0)
8
4
 
9
5
  `git shortlog -nse`.scan(/(\d+)\s(.+)\s<(.*)>$/) do |count, name, email|
10
- case name
11
- when "ahoward"
12
- name, email = "Ara T. Howard", "ara.t.howard@gmail.com"
13
- when "Martin Hilbig blueonyx@dev-area.net"
14
- name, email = "Martin Hilbig", "blueonyx@dev-area.net"
15
- when "Michael Fellinger m.fellinger@gmail.com"
16
- name, email = "Michael Fellinger", "m.fellinger@gmail.com"
17
- end
18
-
19
6
  authors[[name, email]] += count.to_i
20
7
  end
21
8
 
22
- File.open('AUTHORS', 'w+') do |io|
9
+ File.open('doc/AUTHORS', 'w+') do |io|
23
10
  io.puts "Following persons have contributed to #{GEMSPEC.name}."
24
11
  io.puts '(Sorted by number of submitted patches, then alphabetically)'
25
12
  io.puts ''
@@ -1,5 +1,5 @@
1
1
  desc 'Run all bacon specs with pretty output'
2
- task :bacon => :install_dependencies do
2
+ task :bacon => :setup do
3
3
  require 'open3'
4
4
  require 'scanf'
5
5
  require 'matrix'
@@ -16,16 +16,22 @@ task :bacon => :install_dependencies do
16
16
  left_format = "%4d/%d: %-#{len + 11}s"
17
17
  spec_format = "%d specifications (%d requirements), %d failures, %d errors"
18
18
 
19
+ load_path = File.expand_path('../../lib', __FILE__)
20
+
19
21
  specs.each_with_index do |spec, idx|
20
22
  print(left_format % [idx + 1, specs_size, spec])
21
23
 
22
- Open3.popen3(RUBY, spec) do |sin, sout, serr|
24
+ Open3.popen3(RUBY, '-I', load_path, spec) do |sin, sout, serr|
23
25
  out = sout.read.strip
24
26
  err = serr.read.strip
25
27
 
26
- # this is conventional, see spec/innate/state/fiber.rb for usage
28
+ # this is conventional
27
29
  if out =~ /^Bacon::Error: (needed .*)/
28
30
  puts(yellow % ("%6s %s" % ['', $1]))
31
+ elsif out =~ /^Spec (precondition: "[^"]*" failed)/
32
+ puts(yellow % ("%6s %s" % ['', $1]))
33
+ elsif out =~ /^Spec require: "require" failed: "(no such file to load -- [^"]*)"/
34
+ puts(yellow % ("%6s %s" % ['', $1]))
29
35
  else
30
36
  total = nil
31
37
 
@@ -1,13 +1,15 @@
1
1
  desc 'update changelog'
2
2
  task :changelog do
3
- File.open('CHANGELOG', 'w+') do |changelog|
3
+ File.open('doc/CHANGELOG', 'w+') do |changelog|
4
4
  `git log -z --abbrev-commit`.split("\0").each do |commit|
5
5
  next if commit =~ /^Merge: \d*/
6
6
  ref, author, time, _, title, _, message = commit.split("\n", 7)
7
7
  ref = ref[/commit ([0-9a-f]+)/, 1]
8
8
  author = author[/Author: (.*)/, 1].strip
9
9
  time = Time.parse(time[/Date: (.*)/, 1]).utc
10
- title.strip!
10
+ time = time.strftime('%a %b %d %H:%M:%S %Z %Y')
11
+
12
+ title = title.to_s.strip
11
13
 
12
14
  changelog.puts "[#{ref} | #{time}] #{author}"
13
15
  changelog.puts '', " * #{title}"
@@ -0,0 +1,112 @@
1
+ task :gem_setup do
2
+ class GemSetup
3
+ def initialize(options = {}, &block)
4
+ @gems = []
5
+ @options = options.dup
6
+ @verbose = @options.delete(:verbose)
7
+
8
+ run(&block)
9
+ end
10
+
11
+ def run(&block)
12
+ return unless block_given?
13
+ instance_eval(&block)
14
+ setup
15
+ end
16
+
17
+ def gem(name, version = nil, options = {})
18
+ if version.respond_to?(:merge!)
19
+ options = version
20
+ else
21
+ options[:version] = version
22
+ end
23
+
24
+ @gems << [name, options]
25
+ end
26
+
27
+ # all gems defined, let's try to load/install them
28
+ def setup
29
+ require 'rubygems'
30
+ require 'rubygems/dependency_installer'
31
+
32
+ @gems.each do |name, options|
33
+ setup_gem(name, options)
34
+ end
35
+ end
36
+
37
+ def setup_gemspec(gemspec)
38
+ gemspec.dependencies.each do |dependency|
39
+ dependency.version_requirements.as_list.each do |version|
40
+ gem(dependency.name, version)
41
+ end
42
+ end
43
+
44
+ setup
45
+ end
46
+
47
+ # First try to activate.
48
+ # If activation fails, try to install and activate again.
49
+ # If the second activation also fails, try to require as it may just as
50
+ # well be in $LOAD_PATH.
51
+ def setup_gem(name, options)
52
+ version = [options[:version]].compact
53
+ lib_name = options[:lib] || name
54
+
55
+ log "activating #{name}"
56
+
57
+ Gem.activate(name, *version)
58
+ rescue Gem::LoadError
59
+ log "activating #{name} failed, try to install"
60
+
61
+ install_gem(name, version, options)
62
+ end
63
+
64
+ # tell rubygems to install a gem
65
+ def install_gem(name, version, options)
66
+ installer = Gem::DependencyInstaller.new(options)
67
+
68
+ temp_argv(options[:extconf]) do
69
+ log "installing #{name}"
70
+ installer.install(name, *version)
71
+ end
72
+
73
+ Gem.activate(name, *version)
74
+
75
+ log "install and final activation successful"
76
+ rescue Gem::GemNotFoundException => ex
77
+ log "installation failed: #{ex}, use normal require"
78
+
79
+ require(options[:lib] || name)
80
+
81
+ log "require successful, cannot verify version though"
82
+ end
83
+
84
+ # prepare ARGV for rubygems installer
85
+ def temp_argv(extconf)
86
+ if extconf ||= @options[:extconf]
87
+ old_argv = ARGV.clone
88
+ ARGV.replace(extconf.split(' '))
89
+ end
90
+
91
+ yield
92
+
93
+ ensure
94
+ ARGV.replace(old_argv) if extconf
95
+ end
96
+
97
+ private
98
+
99
+ def log(msg)
100
+ return unless @verbose
101
+
102
+ if defined?(Log)
103
+ Log.info(msg)
104
+ else
105
+ puts(msg)
106
+ end
107
+ end
108
+
109
+ def rubyforge; 'http://gems.rubyforge.org/' end
110
+ def github; 'http://gems.github.com/' end
111
+ end
112
+ end
@@ -7,26 +7,18 @@ namespace :metric do
7
7
 
8
8
  print 'counting changes '
9
9
 
10
- Dir.glob 'lib/**/*.rb' do |rb|
11
- count = `git log --pretty=oneline '#{rb}'`.count("\n")
10
+ Dir['lib/**/*.rb'].each do |rb|
11
+ changes = `git-log --pretty=oneline '#{rb}'`.count("\n")
12
12
  print '.'
13
13
  # out[changes, rb]
14
- changes[rb] = count
14
+ changes[rb] = changes
15
15
  end
16
16
  puts ' done.'
17
17
 
18
18
  sorted = changes.sort_by{|r,c| c }.reverse
19
-
20
- top = sorted.first(20)
21
- unless top.empty?
22
- puts "Top 20:"
23
- top.each{|(r,c)| out[c,r] }
24
- end
25
-
26
- bottom = sorted.last(20) - top
27
- unless bottom.empty?
28
- puts "Bottom 20:"
29
- bottom.each{|(r,c)| out[c,r] }
30
- end
19
+ puts "Top 20:"
20
+ sorted.first(20).each{|(r,c)| out[c,r] }
21
+ puts "Bottom 20:"
22
+ sorted.last(20).each{|(r,c)| out[c,r] }
31
23
  end
32
24
  end
@@ -1,69 +1,65 @@
1
1
  namespace :release do
2
- task :all => [:release_github, :release_rubyforge]
2
+ task :prepare => %w[reversion authors gemspec]
3
+ task :all => %w[release:github release:rubyforge release:gemcutter]
3
4
 
4
- desc 'Display instructions to release on github'
5
- task :github => [:reversion, :gemspec] do
5
+ desc 'Release on github'
6
+ task :github => :prepare do
6
7
  name, version = GEMSPEC.name, GEMSPEC.version
7
8
 
8
- puts <<INSTRUCTIONS
9
- First add the relevant files:
9
+ sh('git', 'add',
10
+ 'MANIFEST', 'doc/CHANGELOG', 'doc/AUTHORS',
11
+ "#{name}.gemspec",
12
+ "lib/#{name}/version.rb")
10
13
 
11
- git add MANIFEST CHANGELOG #{name}.gemspec lib/#{name}/version.rb
14
+ puts <<-INSTRUCTIONS
15
+ ================================================================================
12
16
 
13
- Then commit them, tag the commit, and push:
17
+ I added the relevant files, you can commit them, tag the commit, and push:
14
18
 
15
19
  git commit -m 'Version #{version}'
16
20
  git tag -a -m '#{version}' '#{version}'
17
21
  git push
18
22
 
19
- INSTRUCTIONS
20
-
23
+ ================================================================================
24
+ INSTRUCTIONS
21
25
  end
22
26
 
23
- # TODO: Not tested
24
- desc 'Display instructions to release on rubyforge'
25
- task :rubyforge => [:reversion, :gemspec, :package] do
27
+ desc 'Release on rubyforge'
28
+ task :rubyforge => ['release:prepare', :package] do
26
29
  name, version = GEMSPEC.name, GEMSPEC.version
27
30
 
28
- puts <<INSTRUCTIONS
31
+ pkgs = Dir["pkg/#{name}-#{version}.{tgz,zip}"].map{|file|
32
+ "rubyforge add_file #{name} #{name} '#{version}' '#{file}'"
33
+ }
34
+
35
+ puts <<-INSTRUCTIONS
36
+ ================================================================================
37
+
29
38
  To publish to rubyforge do following:
30
39
 
31
40
  rubyforge login
32
- rubyforge add_release #{name} #{name} #{version} pkg/#{name}-#{version}.gem
41
+ rubyforge add_release #{name} #{name} '#{version}' pkg/#{name}-#{version}.gem
33
42
 
34
- After you have done these steps, see:
43
+ To publish the archives for distro packagers:
35
44
 
36
- rake release:rubyforge_archives
45
+ #{pkgs.join "\n"}
37
46
 
38
- INSTRUCTIONS
47
+ ================================================================================
48
+ INSTRUCTIONS
39
49
  end
40
50
 
41
- desc 'Display instructions to add archives after release:rubyforge'
42
- task :rubyforge_archives do
43
- release_id = latest_release_id
44
-
45
- puts "Adding archives for distro packagers is:", ""
46
-
47
- Dir["pkg/#{name}-#{version}.{gz,zip}"].each do |file|
48
- puts "rubyforge add_file #{name} #{name} #{release_id} '#{file}'"
49
- end
51
+ desc 'Release on gemcutter'
52
+ task :gemcutter => ['release:prepare', :package] do
53
+ name, version = GEMSPEC.name, GEMSPEC.version
50
54
 
51
- puts
52
- end
53
- end
55
+ puts <<-INSTRUCTIONS
56
+ ================================================================================
54
57
 
55
- # Use URI and proper XPATH, something along these lines:
56
- #
57
- # a = doc.at('a[@href=~"release_id"]')[:href]
58
- # release_id = URI(a).query[/release_id=(\w+)/, 1]
59
- def latest_release_id
60
- require 'open-uri'
61
- require 'hpricot'
58
+ To publish to gemcutter do following:
62
59
 
63
- url = "http://rubyforge.org/frs/?group_id=#{PROJECT_RUBYFORGE_GROUP_ID}"
64
- doc = Hpricot(open(url))
65
- a = (doc/:a).find{|a| a[:href] =~ /release_id/}
60
+ gem push pkg/#{name}-#{version}.gem
66
61
 
67
- version = a.inner_html
68
- release_id = Hash[*a[:href].split('?').last.split('=').flatten]['release_id']
62
+ ================================================================================
63
+ INSTRUCTIONS
64
+ end
69
65
  end
@@ -0,0 +1,12 @@
1
+ desc 'install all possible dependencies'
2
+ task :setup => [:gem_setup] do
3
+ GemSetup.new :verbose => false do
4
+ DEPENDENCIES.each do |name, options|
5
+ gem(name, options)
6
+ end
7
+
8
+ DEVELOPMENT_DEPENDENCIES.each do |name, options|
9
+ gem(name, options)
10
+ end
11
+ end
12
+ end
@@ -1,6 +1,6 @@
1
1
  desc "show a todolist from all the TODO tags in the source"
2
2
  task :todo do
3
- Dir.glob '{lib,spec}/**/*.rb' do |file|
3
+ Dir.glob('{lib,spec}/**/*.rb') do |file|
4
4
  lastline = todo = comment = long_comment = false
5
5
 
6
6
  File.readlines(file).each_with_index do |line, lineno|
@@ -8,7 +8,7 @@ task :todo do
8
8
  comment = line =~ /^\s*?#.*?$/
9
9
  long_comment = line =~ /^=begin/
10
10
  long_comment = line =~ /^=end/
11
- todo = true if line =~ /TODO/ and (long_comment or comment)
11
+ todo = true if line =~ /TODO|FIXME|THINK/ and (long_comment or comment)
12
12
  todo = false if line.gsub('#', '').strip.empty?
13
13
  todo = false unless comment or long_comment
14
14
  if todo
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: makura
3
3
  version: !ruby/object:Gem::Version
4
- version: 2009.05.27
4
+ hash: 8051
5
+ prerelease: false
6
+ segments:
7
+ - 2010
8
+ - 8
9
+ version: "2010.08"
5
10
  platform: ruby
6
11
  authors:
7
12
  - Michael 'manveru' Fellinger
@@ -9,19 +14,25 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-05-27 00:00:00 +09:00
17
+ date: 2010-08-03 00:00:00 +09:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: rest-client
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
28
+ hash: 61
29
+ segments:
30
+ - 0
31
+ - 8
32
+ - 1
23
33
  version: 0.8.1
24
- version:
34
+ type: :runtime
35
+ version_requirements: *id001
25
36
  description:
26
37
  email: m.fellinger@gmail.com
27
38
  executables:
@@ -31,12 +42,15 @@ extensions: []
31
42
  extra_rdoc_files: []
32
43
 
33
44
  files:
45
+ - AUTHORS
34
46
  - CHANGELOG
35
47
  - COPYING
36
48
  - MANIFEST
37
49
  - README.md
38
50
  - Rakefile
39
51
  - bin/makura
52
+ - doc/AUTHORS
53
+ - doc/CHANGELOG
40
54
  - example/blog.rb
41
55
  - example/couch/map/author_all.js
42
56
  - example/couch/map/author_posts.js
@@ -62,6 +76,7 @@ files:
62
76
  - tasks/copyright.rake
63
77
  - tasks/gem.rake
64
78
  - tasks/gem_installer.rake
79
+ - tasks/gem_setup.rake
65
80
  - tasks/git.rake
66
81
  - tasks/grancher.rake
67
82
  - tasks/manifest.rake
@@ -69,6 +84,7 @@ files:
69
84
  - tasks/rcov.rake
70
85
  - tasks/release.rake
71
86
  - tasks/reversion.rake
87
+ - tasks/setup.rake
72
88
  - tasks/todo.rake
73
89
  - tasks/traits.rake
74
90
  - tasks/yard.rake
@@ -83,21 +99,27 @@ rdoc_options: []
83
99
  require_paths:
84
100
  - lib
85
101
  required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
86
103
  requirements:
87
104
  - - ">="
88
105
  - !ruby/object:Gem::Version
106
+ hash: 3
107
+ segments:
108
+ - 0
89
109
  version: "0"
90
- version:
91
110
  required_rubygems_version: !ruby/object:Gem::Requirement
111
+ none: false
92
112
  requirements:
93
113
  - - ">="
94
114
  - !ruby/object:Gem::Version
115
+ hash: 3
116
+ segments:
117
+ - 0
95
118
  version: "0"
96
- version:
97
119
  requirements: []
98
120
 
99
121
  rubyforge_project:
100
- rubygems_version: 1.3.3
122
+ rubygems_version: 1.3.7
101
123
  signing_key:
102
124
  specification_version: 3
103
125
  summary: Ruby wrapper around the CouchDB REST API.