makura 2009.05.27 → 2010.08

Sign up to get free protection for your applications and to get access to all the features.
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.