ruote-sequel 2.3.0 → 2.3.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,16 @@
2
2
  = ruote-sequel - CHANGELOG.txt
3
3
 
4
4
 
5
+ == ruote-sequel 2.3.1 not yet released
6
+
7
+
8
+ == ruote-sequel 2.3.0.2 not yet released
9
+
10
+ - :asc / :desc fix by Iuri Gagnidze
11
+ - d[:doc].read if possible, as devised with Geoff Herney in
12
+ https://groups.google.com/d/topic/openwferu-users/ivLPT4jASVc/discussion
13
+
14
+
5
15
  == ruote-sequel 2.3.0 released 2012/09/01
6
16
 
7
17
  - switched to "begin_step" model
@@ -9,11 +9,14 @@
9
9
 
10
10
  == contributors
11
11
 
12
+ - Iuri Gagnidze - https://github.com/igagnidz
13
+ - Geoff Herney - https://github.com/gherney
12
14
  - Wesley Moore - https://github.com/wezm
13
15
 
14
16
 
15
17
  == feedback
16
18
 
19
+ - yzhang - reconnect issue
17
20
  - Chad Albers - https://github.com/neomantic
18
21
  - Eric Smith - issue reporting
19
22
 
@@ -1,5 +1,5 @@
1
1
 
2
- Copyright (c) 2005-2012, John Mettraux, jmettraux@gmail.com
2
+ Copyright (c) 2005-2013, John Mettraux, jmettraux@gmail.com
3
3
 
4
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  of this software and associated documentation files (the "Software"), to deal
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'rubygems'
5
5
 
6
6
  require 'rake'
7
7
  require 'rake/clean'
8
- require 'rake/rdoctask'
8
+ require 'rdoc/task'
9
9
 
10
10
 
11
11
  #
@@ -76,17 +76,19 @@ Rake::RDocTask.new do |rd|
76
76
  end
77
77
 
78
78
 
79
+ ##
80
+ ## upload_rdoc
79
81
  #
80
- # upload_rdoc
81
-
82
- desc %{
83
- upload the rdoc to rubyforge
84
- }
85
- task :upload_rdoc => [ :clean, :rdoc ] do
86
-
87
- account = 'jmettraux@rubyforge.org'
88
- webdir = '/var/www/gforge-projects/ruote'
89
-
90
- sh "rsync -azv -e ssh rdoc/#{GEMSPEC.name}_rdoc #{account}:#{webdir}/"
91
- end
82
+ #desc %{
83
+ # upload the rdoc to rubyforge
84
+ #}
85
+ #task :upload_rdoc => [ :clean, :rdoc ] do
86
+ #
87
+ # account = 'jmettraux@rubyforge.org'
88
+ # webdir = '/var/www/gforge-projects/ruote'
89
+ #
90
+ # sh "rsync -azv -e ssh rdoc/#{GEMSPEC.name}_rdoc #{account}:#{webdir}/"
91
+ #end
92
+ #
93
+ # leverage rdoc.info instead
92
94
 
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2005-2012, John Mettraux, jmettraux@gmail.com
2
+ # Copyright (c) 2005-2013, John Mettraux, jmettraux@gmail.com
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -197,13 +197,13 @@ module Sequel
197
197
  return ds.count if opts[:count]
198
198
 
199
199
  ds = ds.order(
200
- opts[:descending] ? :ide.desc : :ide.asc, :rev.desc
200
+ opts[:descending] ? ::Sequel.desc(:ide) : ::Sequel.asc(:ide), ::Sequel.desc(:rev)
201
201
  ).limit(
202
202
  opts[:limit], opts[:skip] || opts[:offset]
203
203
  )
204
204
 
205
205
  docs = select_last_revs(ds)
206
- docs = docs.collect { |d| Rufus::Json.decode(d[:doc]) }
206
+ docs = docs.collect { |d| decode_doc(d) }
207
207
 
208
208
  if keys && keys.first.is_a?(Regexp)
209
209
  docs.select { |doc| keys.find { |key| key.match(doc['_id']) } }
@@ -273,7 +273,7 @@ module Sequel
273
273
  return docs.count if opts[:count]
274
274
 
275
275
  docs = docs.order(
276
- :ide.asc, :rev.desc
276
+ ::Sequel.asc(:ide), ::Sequel.desc(:rev)
277
277
  ).limit(
278
278
  opts[:limit], opts[:offset] || opts[:skip]
279
279
  )
@@ -294,13 +294,13 @@ module Sequel
294
294
  docs = @sequel[@table].where(
295
295
  :typ => type
296
296
  ).filter(
297
- :doc.like(lk.join)
297
+ ::Sequel.like(:doc, lk.join)
298
298
  )
299
299
 
300
300
  return docs.count if opts[:count]
301
301
 
302
302
  docs = docs.order(
303
- :ide.asc, :rev.desc
303
+ ::Sequel.asc(:ide), ::Sequel.desc(:rev)
304
304
  ).limit(
305
305
  opts[:limit], opts[:offset] || opts[:skip]
306
306
  )
@@ -322,16 +322,16 @@ module Sequel
322
322
  pname =
323
323
  criteria.delete('participant_name') || criteria.delete('participant')
324
324
 
325
- ds = ds.filter(:ide.like("%!#{wfid}")) if wfid
325
+ ds = ds.filter(::Sequel.like(:ide, "%!#{wfid}")) if wfid
326
326
  ds = ds.filter(:participant_name => pname) if pname
327
327
 
328
328
  criteria.collect do |k, v|
329
- ds = ds.filter(:doc.like("%\"#{k}\":#{Rufus::Json.encode(v)}%"))
329
+ ds = ds.filter(::Sequel.like(:doc, "%\"#{k}\":#{Rufus::Json.encode(v)}%"))
330
330
  end
331
331
 
332
332
  return ds.count if count
333
333
 
334
- ds = ds.order(:ide.asc, :rev.desc).limit(limit, offset)
334
+ ds = ds.order(::Sequel.asc(:ide), ::Sequel.desc(:rev)).limit(limit, offset)
335
335
 
336
336
  select_last_revs(ds).collect { |d| Ruote::Workitem.from_json(d[:doc]) }
337
337
  end
@@ -347,20 +347,45 @@ module Sequel
347
347
 
348
348
  protected
349
349
 
350
+ def decode_doc(doc)
351
+
352
+ return nil if doc.nil?
353
+
354
+ doc = doc[:doc]
355
+ doc = doc.read if doc.respond_to?(:read)
356
+
357
+ Rufus::Json.decode(doc)
358
+ end
359
+
350
360
  def do_insert(doc, rev, update_rev=false)
351
361
 
352
362
  doc = doc.send(
353
363
  update_rev ? :merge! : :merge,
354
364
  { '_rev' => rev, 'put_at' => Ruote.now_to_utc_s })
355
365
 
356
- @sequel[@table].insert(
357
- :ide => doc['_id'],
358
- :rev => rev,
359
- :typ => doc['type'],
360
- :doc => Rufus::Json.encode(doc),
361
- :wfid => extract_wfid(doc),
362
- :participant_name => doc['participant_name']
363
- )
366
+ # Use bound variables
367
+ # http://sequel.rubyforge.org/rdoc/files/doc/prepared_statements_rdoc.html
368
+ #
369
+ # That makes Oracle happy (the doc field might > 4000 characters)
370
+ #
371
+ # Thanks Geoff Herney
372
+ #
373
+ @sequel[@table].call(
374
+ :insert, {
375
+ :ide => (doc['_id'] || ''),
376
+ :rev => (rev || ''),
377
+ :typ => (doc['type'] || ''),
378
+ :doc => (Rufus::Json.encode(doc) || ''),
379
+ :wfid => (extract_wfid(doc) || ''),
380
+ :participant_name => (doc['participant_name'] || '')
381
+ }, {
382
+ :ide => :$ide,
383
+ :rev => :$rev,
384
+ :typ => :$typ,
385
+ :doc => :$doc,
386
+ :wfid => :$wfid,
387
+ :participant_name => :$participant_name
388
+ })
364
389
  end
365
390
 
366
391
  def extract_wfid(doc)
@@ -374,7 +399,7 @@ module Sequel
374
399
  :typ => type, :ide => key
375
400
  ).reverse_order(:rev).first
376
401
 
377
- d ? Rufus::Json.decode(d[:doc]) : nil
402
+ decode_doc(d)
378
403
  end
379
404
 
380
405
  # Weed out older docs (same ide, smaller rev).
@@ -410,9 +435,9 @@ module Sequel
410
435
  ).where(
411
436
  :typ => CACHED_TYPES
412
437
  ).order(
413
- :ide.asc, :rev.desc
438
+ ::Sequel.asc(:ide), ::Sequel.desc(:rev)
414
439
  ).each do |d|
415
- (cache[d[:typ]] ||= {})[d[:ide]] ||= Rufus::Json.decode(d[:doc])
440
+ (cache[d[:typ]] ||= {})[d[:ide]] ||= decode_doc(d)
416
441
  end
417
442
 
418
443
  cache['variables']['trackers'] ||=
@@ -459,4 +484,3 @@ module Sequel
459
484
  end
460
485
  end
461
486
  end
462
-
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2005-2012, John Mettraux, jmettraux@gmail.com
2
+ # Copyright (c) 2005-2013, John Mettraux, jmettraux@gmail.com
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -26,7 +26,7 @@
26
26
  module Ruote
27
27
  module Sequel
28
28
 
29
- VERSION = '2.3.0'
29
+ VERSION = '2.3.0.2'
30
30
  end
31
31
  end
32
32
 
@@ -26,7 +26,7 @@ Sequel storage for ruote (a workflow engine)
26
26
  ]
27
27
 
28
28
  s.add_runtime_dependency 'sequel'#, '>= 3.31.0'
29
- s.add_runtime_dependency 'ruote', ">= #{s.version}"
29
+ s.add_runtime_dependency 'ruote', ">= #{s.version.to_s.split('.')[0, 3].join('.')}"
30
30
 
31
31
  s.add_development_dependency 'rake'
32
32
  s.add_development_dependency 'pg', '0.10.1'
@@ -11,31 +11,37 @@ require 'ruote-sequel'
11
11
 
12
12
  unless $sequel
13
13
 
14
- $sequel = case ENV['RUOTE_STORAGE_DB'] || 'postgres'
15
- when 'pg', 'postgres'
16
- Sequel.connect('postgres://localhost/ruote_test')
17
- when 'my', 'mysql'
18
- #Sequel.connect('mysql://root:root@localhost/ruote_test')
19
- Sequel.connect('mysql://root@localhost/ruote_test')
20
- when 'mysql2'
21
- Sequel.connect('mysql2://root@localhost/ruote_test')
22
- when /:/
23
- Sequel.connect(ENV['RUOTE_STORAGE_DB'])
24
- else
25
- raise ArgumentError.new("unknown DB: #{ENV['RUOTE_STORAGE_DB'].inspect}")
26
- end
14
+ $sequel =
15
+ case ENV['RUOTE_STORAGE_DB'] || 'postgres'
16
+ when 'pg', 'postgres'
17
+ Sequel.connect('postgres://localhost/ruote_test')
18
+ when 'my', 'mysql'
19
+ #Sequel.connect('mysql://root:root@localhost/ruote_test')
20
+ Sequel.connect('mysql://root@localhost/ruote_test')
21
+ when 'mysql2'
22
+ Sequel.connect(
23
+ 'mysql2://root@localhost/ruote_test',
24
+ :after_connect => proc { |c| c.send(:reconnect=, true) })
25
+ when /:/
26
+ Sequel.connect(ENV['RUOTE_STORAGE_DB'])
27
+ else
28
+ raise ArgumentError.new("unknown DB: #{ENV['RUOTE_STORAGE_DB'].inspect}")
29
+ end
27
30
 
28
31
  require 'logger'
29
32
 
30
- logger = case ENV['RUOTE_STORAGE_DEBUG']
31
- when 'log'
32
- FileUtils.rm('debug.log') rescue nil
33
- Logger.new('debug.log')
34
- when 'stdout'
35
- Logger.new($stdout)
36
- else
37
- nil
38
- end
33
+ logger =
34
+ case dbg = ENV['RUOTE_STORAGE_DEBUG']
35
+ when 'log'
36
+ FileUtils.rm("debug_#{$$}.log") rescue nil
37
+ Logger.new("debug_#{$$}.log")
38
+ when 'stdout'
39
+ Logger.new($stdout)
40
+ when /\.(log|txt)$/
41
+ Logger.new(dbg)
42
+ else
43
+ nil
44
+ end
39
45
 
40
46
  if logger
41
47
  logger.level = Logger::DEBUG
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruote-sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.3.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-01 00:00:00.000000000 Z
12
+ date: 2013-06-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sequel
@@ -103,13 +103,13 @@ files:
103
103
  - lib/ruote/sequel/version.rb
104
104
  - lib/ruote/sequel.rb
105
105
  - lib/ruote-sequel.rb
106
- - test/connection.rb
107
106
  - test/test.rb
107
+ - test/connection.rb
108
108
  - ruote-sequel.gemspec
109
109
  - CHANGELOG.txt
110
- - CREDITS.txt
111
- - LICENSE.txt
112
110
  - TODO.txt
111
+ - LICENSE.txt
112
+ - CREDITS.txt
113
113
  homepage: http://ruote.rubyforge.org
114
114
  licenses: []
115
115
  post_install_message:
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
130
  version: '0'
131
131
  requirements: []
132
132
  rubyforge_project: ruote
133
- rubygems_version: 1.8.24
133
+ rubygems_version: 1.8.23
134
134
  signing_key:
135
135
  specification_version: 3
136
136
  summary: Sequel storage for ruote (a workflow engine)