ruote-dm 2.1.10 → 2.1.11
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/CHANGELOG.txt +11 -0
- data/CREDITS.txt +6 -5
- data/README.rdoc +8 -3
- data/Rakefile +13 -15
- data/TODO.txt +2 -1
- data/lib/ruote/dm/storage.rb +31 -21
- data/lib/ruote/dm/version.rb +1 -1
- data/ruote-dm.gemspec +9 -6
- data/test/functional_connection.rb +2 -0
- metadata +56 -25
data/CHANGELOG.txt
CHANGED
@@ -2,8 +2,19 @@
|
|
2
2
|
= ruote-dm - CHANGELOG.txt
|
3
3
|
|
4
4
|
|
5
|
+
== ruote-dm 2.1.11 released 2010/10/01
|
6
|
+
|
7
|
+
- get_many(x, y, descending => true)
|
8
|
+
- adapted for engines.processes pagination
|
9
|
+
- ! added 'wfi' column to Document table
|
10
|
+
- workitems.by_participant() :skip and :limit support
|
11
|
+
- get_many(x, y, :skip => 10) support
|
12
|
+
- get_many(x, y, :count => true) support
|
13
|
+
|
14
|
+
|
5
15
|
== ruote-dm 2.1.10 released 2010/06/15
|
6
16
|
|
17
|
+
- multi-workers hardened
|
7
18
|
- :ide key, :length => 255 for MySQL (thanks irfn)
|
8
19
|
- _rev now starting at 1 (instead of 0)
|
9
20
|
|
data/CREDITS.txt
CHANGED
@@ -3,15 +3,16 @@
|
|
3
3
|
|
4
4
|
== authors
|
5
5
|
|
6
|
-
- John Mettraux
|
7
|
-
- Jordan Ritter
|
6
|
+
- John Mettraux - http://github.com/jmettraux
|
7
|
+
- Jordan Ritter - http://github.com/jpr5
|
8
8
|
|
9
9
|
|
10
10
|
== contributors
|
11
11
|
|
12
|
-
-
|
13
|
-
-
|
14
|
-
-
|
12
|
+
- Torsten Schoenebaum - http://github.com/tosch
|
13
|
+
- Irfan (debugging on MySQL) - http://github.com/irfn
|
14
|
+
- asm (many bug reports) - http://github.com/asm
|
15
|
+
- Kenneth Kalmer - (http://www.opensourcery.co.za/)
|
15
16
|
|
16
17
|
|
17
18
|
== many thanks to
|
data/README.rdoc
CHANGED
@@ -28,7 +28,7 @@ To create the tables in the database :
|
|
28
28
|
Ruote::Dm::Document.auto_migrate!
|
29
29
|
|
30
30
|
|
31
|
-
Tested with dm
|
31
|
+
Tested with dm 1.0.2, with the postgresql and the msyql adapters.
|
32
32
|
|
33
33
|
|
34
34
|
== running tests
|
@@ -42,13 +42,18 @@ assuming you have
|
|
42
42
|
|
43
43
|
get into ruote/ and do
|
44
44
|
|
45
|
-
ruby test/unit/storage.rb --dm
|
45
|
+
ruby test/unit/storage.rb -- --dm
|
46
46
|
|
47
47
|
* functional tests :
|
48
48
|
|
49
49
|
get into ruote/ and do
|
50
50
|
|
51
|
-
ruby test/functional/test.rb --dm
|
51
|
+
ruby test/functional/test.rb -- --dm
|
52
|
+
|
53
|
+
|
54
|
+
== known issues
|
55
|
+
|
56
|
+
It works well on OSX, but test/functional/ct_2_cancel.rb is failing. Since OSX isn't a often met server platform, we haven't investigated further.
|
52
57
|
|
53
58
|
|
54
59
|
== license
|
data/Rakefile
CHANGED
@@ -34,6 +34,7 @@ datamapper storage for ruote (a ruby workflow engine)
|
|
34
34
|
|
35
35
|
gem.add_dependency 'ruote', ">= #{Ruote::Dm::VERSION}"
|
36
36
|
gem.add_dependency 'dm-core'
|
37
|
+
gem.add_dependency 'dm-migrations'
|
37
38
|
#gem.add_dependency 'dm-aggregates'
|
38
39
|
#gem.add_dependency 'dm-types'
|
39
40
|
gem.add_development_dependency 'yard'
|
@@ -48,33 +49,30 @@ Jeweler::GemcutterTasks.new
|
|
48
49
|
#
|
49
50
|
# DOC
|
50
51
|
|
51
|
-
|
52
|
-
|
53
|
-
|
52
|
+
#
|
53
|
+
# make sure to have rdoc 2.5.x to run that
|
54
|
+
#
|
55
|
+
require 'rake/rdoctask'
|
56
|
+
Rake::RDocTask.new do |rd|
|
54
57
|
|
55
|
-
|
56
|
-
|
57
|
-
'-o', 'html/ruote-dm', '--title',
|
58
|
-
"ruote-dm #{Ruote::Dm::VERSION}"
|
59
|
-
]
|
60
|
-
end
|
58
|
+
rd.main = 'README.rdoc'
|
59
|
+
rd.rdoc_dir = 'rdoc/ruote-dm_rdoc'
|
61
60
|
|
62
|
-
|
61
|
+
rd.rdoc_files.include(
|
62
|
+
'README.rdoc', 'CHANGELOG.txt', 'CREDITS.txt', 'lib/**/*.rb')
|
63
63
|
|
64
|
-
|
65
|
-
abort "YARD is not available : sudo gem install yard"
|
66
|
-
end
|
64
|
+
rd.title = "ruote-dm #{Ruote::Dm::VERSION}"
|
67
65
|
end
|
68
66
|
|
69
67
|
|
70
68
|
#
|
71
69
|
# TO THE WEB
|
72
70
|
|
73
|
-
task :
|
71
|
+
task :upload_rdoc => [ :clean, :rdoc ] do
|
74
72
|
|
75
73
|
account = 'jmettraux@rubyforge.org'
|
76
74
|
webdir = '/var/www/gforge-projects/ruote'
|
77
75
|
|
78
|
-
sh "rsync -azv -e ssh
|
76
|
+
sh "rsync -azv -e ssh rdoc/ruote-dm_rdoc #{account}:#{webdir}/"
|
79
77
|
end
|
80
78
|
|
data/TODO.txt
CHANGED
@@ -5,11 +5,12 @@
|
|
5
5
|
[o] `--> init _rev at 1 (like ruote-redis)
|
6
6
|
[o] `--> then investigate ct_X weaknesses (transactions ?)
|
7
7
|
[o] `--> then investigate ct_X weaknesses
|
8
|
+
[x] storage.close
|
8
9
|
|
9
10
|
[ ] storage : control #save result
|
10
11
|
[ ] examine indices (index) (participant_name ?) perf perf perf
|
11
12
|
|
12
13
|
[ ] write example on how to use active-record to "read" workitems
|
13
14
|
|
14
|
-
[
|
15
|
+
[x] crunner.sh 2 weakness... only weak on OSX
|
15
16
|
|
data/lib/ruote/dm/storage.rb
CHANGED
@@ -45,6 +45,7 @@ module Dm
|
|
45
45
|
property :typ, String, :key => true, :required => true
|
46
46
|
property :doc, Text, :length => 2**32 - 1, :required => true, :lazy => false
|
47
47
|
|
48
|
+
property :wfid, String, :index => true
|
48
49
|
property :participant_name, String, :length => 512
|
49
50
|
|
50
51
|
def to_h
|
@@ -175,22 +176,23 @@ module Dm
|
|
175
176
|
|
176
177
|
q = { :typ => type }
|
177
178
|
|
178
|
-
if l = opts[:limit]
|
179
|
-
|
180
|
-
end
|
179
|
+
if l = opts[:limit]; q[:limit] = l; end
|
180
|
+
if s = opts[:skip]; q[:offset] = s; end
|
181
181
|
|
182
|
-
|
183
|
-
|
184
|
-
"%#{m[1]}"
|
185
|
-
elsif m = key.source.match(/^\^(.+)/)
|
186
|
-
"#{m[1]}%"
|
187
|
-
else
|
188
|
-
"%#{key.source}%"
|
189
|
-
end
|
190
|
-
end
|
182
|
+
keys = key ? Array(key) : nil
|
183
|
+
q[:wfid] = keys if keys && keys.first.is_a?(String)
|
191
184
|
|
192
185
|
DataMapper.repository(@repository) do
|
193
|
-
|
186
|
+
|
187
|
+
return Document.all(q).count if opts[:count]
|
188
|
+
|
189
|
+
docs = Document.all(q)
|
190
|
+
docs = docs.reverse if opts[:descending]
|
191
|
+
docs = docs.collect { |d| d.to_h }
|
192
|
+
|
193
|
+
keys && keys.first.is_a?(Regexp) ?
|
194
|
+
docs.select { |doc| keys.find { |key| key.match(doc['_id']) } } :
|
195
|
+
docs
|
194
196
|
end
|
195
197
|
end
|
196
198
|
|
@@ -242,15 +244,15 @@ module Dm
|
|
242
244
|
# A provision made for workitems, allow to query them directly by
|
243
245
|
# participant name.
|
244
246
|
#
|
245
|
-
def by_participant (type, participant_name)
|
247
|
+
def by_participant (type, participant_name, opts)
|
246
248
|
|
247
249
|
raise NotImplementedError if type != 'workitems'
|
248
250
|
|
249
|
-
|
251
|
+
query = {
|
250
252
|
:typ => type, :participant_name => participant_name
|
251
|
-
)
|
252
|
-
|
253
|
-
}
|
253
|
+
}.merge(opts)
|
254
|
+
|
255
|
+
Document.all(query).collect { |d| d.to_h }
|
254
256
|
end
|
255
257
|
|
256
258
|
# Querying workitems by field (warning, goes deep into the JSON structure)
|
@@ -268,6 +270,10 @@ module Dm
|
|
268
270
|
|
269
271
|
def query_workitems (criteria)
|
270
272
|
|
273
|
+
cr = { :typ => 'workitems' }
|
274
|
+
|
275
|
+
return Document.all(cr).count if criteria['count']
|
276
|
+
|
271
277
|
offset = criteria.delete('offset')
|
272
278
|
limit = criteria.delete('limit')
|
273
279
|
|
@@ -276,8 +282,6 @@ module Dm
|
|
276
282
|
pname =
|
277
283
|
criteria.delete('participant_name') || criteria.delete('participant')
|
278
284
|
|
279
|
-
cr = { :typ => 'workitems' }
|
280
|
-
|
281
285
|
cr[:ide.like] = "%!#{wfid}" if wfid
|
282
286
|
cr[:offset] = offset if offset
|
283
287
|
cr[:limit] = limit if limit
|
@@ -290,7 +294,7 @@ module Dm
|
|
290
294
|
([ 'doc LIKE ?' ] * likes.size).join(' AND '), *likes
|
291
295
|
] unless likes.empty?
|
292
296
|
|
293
|
-
Document.all(cr).collect { |d| d.to_h }
|
297
|
+
Document.all(cr).collect { |d| Ruote::Workitem.new(d.to_h) }
|
294
298
|
end
|
295
299
|
|
296
300
|
protected
|
@@ -304,10 +308,16 @@ module Dm
|
|
304
308
|
:doc => Rufus::Json.encode(doc.merge(
|
305
309
|
'_rev' => rev,
|
306
310
|
'put_at' => Ruote.now_to_utc_s)),
|
311
|
+
:wfid => extract_wfid(doc),
|
307
312
|
:participant_name => doc['participant_name']
|
308
313
|
).save!
|
309
314
|
end
|
310
315
|
|
316
|
+
def extract_wfid (doc)
|
317
|
+
|
318
|
+
doc['wfid'] || (doc['fei'] ? doc['fei']['wfid'] : nil)
|
319
|
+
end
|
320
|
+
|
311
321
|
def do_get (type, key)
|
312
322
|
|
313
323
|
Document.first(:typ => type, :ide => key, :order => :rev.desc)
|
data/lib/ruote/dm/version.rb
CHANGED
data/ruote-dm.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ruote-dm}
|
8
|
-
s.version = "2.1.
|
8
|
+
s.version = "2.1.11"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["John Mettraux"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-10-01}
|
13
13
|
s.description = %q{datamapper storage for ruote (a ruby workflow engine)}
|
14
14
|
s.email = %q{jmettraux@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -35,7 +35,7 @@ Gem::Specification.new do |s|
|
|
35
35
|
s.rdoc_options = ["--charset=UTF-8"]
|
36
36
|
s.require_paths = ["lib"]
|
37
37
|
s.rubyforge_project = %q{ruote}
|
38
|
-
s.rubygems_version = %q{1.3.
|
38
|
+
s.rubygems_version = %q{1.3.6}
|
39
39
|
s.summary = %q{datamapper storage for ruote (a ruby workflow engine)}
|
40
40
|
s.test_files = [
|
41
41
|
"test/test.rb"
|
@@ -46,21 +46,24 @@ Gem::Specification.new do |s|
|
|
46
46
|
s.specification_version = 3
|
47
47
|
|
48
48
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
49
|
-
s.add_runtime_dependency(%q<ruote>, [">= 2.1.
|
49
|
+
s.add_runtime_dependency(%q<ruote>, [">= 2.1.11"])
|
50
50
|
s.add_runtime_dependency(%q<dm-core>, [">= 0"])
|
51
|
+
s.add_runtime_dependency(%q<dm-migrations>, [">= 0"])
|
51
52
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
52
53
|
s.add_development_dependency(%q<rake>, [">= 0"])
|
53
54
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
54
55
|
else
|
55
|
-
s.add_dependency(%q<ruote>, [">= 2.1.
|
56
|
+
s.add_dependency(%q<ruote>, [">= 2.1.11"])
|
56
57
|
s.add_dependency(%q<dm-core>, [">= 0"])
|
58
|
+
s.add_dependency(%q<dm-migrations>, [">= 0"])
|
57
59
|
s.add_dependency(%q<yard>, [">= 0"])
|
58
60
|
s.add_dependency(%q<rake>, [">= 0"])
|
59
61
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
60
62
|
end
|
61
63
|
else
|
62
|
-
s.add_dependency(%q<ruote>, [">= 2.1.
|
64
|
+
s.add_dependency(%q<ruote>, [">= 2.1.11"])
|
63
65
|
s.add_dependency(%q<dm-core>, [">= 0"])
|
66
|
+
s.add_dependency(%q<dm-migrations>, [">= 0"])
|
64
67
|
s.add_dependency(%q<yard>, [">= 0"])
|
65
68
|
s.add_dependency(%q<rake>, [">= 0"])
|
66
69
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
@@ -19,10 +19,12 @@ elsif ARGV.include?('-ls') || ARGV.include?('--ls')
|
|
19
19
|
end
|
20
20
|
|
21
21
|
DataMapper.setup(:default, 'postgres://localhost/ruote_test')
|
22
|
+
#DataMapper.setup(:default, 'mysql://root:root@localhost/ruote_test')
|
22
23
|
#DataMapper.setup(:default, 'sqlite3::memory:')
|
23
24
|
#DataMapper.setup(:default, 'sqlite3:ruote_test.db')
|
24
25
|
|
25
26
|
#DataMapper.repository(:default) do
|
27
|
+
# require 'dm-migrations' # gem install dm-migrations
|
26
28
|
# Ruote::Dm::Document.all.destroy! rescue nil
|
27
29
|
# Ruote::Dm::Document.auto_upgrade!
|
28
30
|
#end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruote-dm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 2
|
7
|
+
- 1
|
8
|
+
- 11
|
9
|
+
version: 2.1.11
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- John Mettraux
|
@@ -9,59 +14,83 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-10-01 00:00:00 +09:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: ruote
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 1
|
30
|
+
- 11
|
31
|
+
version: 2.1.11
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: dm-core
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
27
44
|
type: :runtime
|
28
|
-
|
29
|
-
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: dm-migrations
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
30
50
|
requirements:
|
31
51
|
- - ">="
|
32
52
|
- !ruby/object:Gem::Version
|
53
|
+
segments:
|
54
|
+
- 0
|
33
55
|
version: "0"
|
34
|
-
|
56
|
+
type: :runtime
|
57
|
+
version_requirements: *id003
|
35
58
|
- !ruby/object:Gem::Dependency
|
36
59
|
name: yard
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
prerelease: false
|
61
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
40
62
|
requirements:
|
41
63
|
- - ">="
|
42
64
|
- !ruby/object:Gem::Version
|
65
|
+
segments:
|
66
|
+
- 0
|
43
67
|
version: "0"
|
44
|
-
|
68
|
+
type: :development
|
69
|
+
version_requirements: *id004
|
45
70
|
- !ruby/object:Gem::Dependency
|
46
71
|
name: rake
|
47
|
-
|
48
|
-
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
50
74
|
requirements:
|
51
75
|
- - ">="
|
52
76
|
- !ruby/object:Gem::Version
|
77
|
+
segments:
|
78
|
+
- 0
|
53
79
|
version: "0"
|
54
|
-
|
80
|
+
type: :development
|
81
|
+
version_requirements: *id005
|
55
82
|
- !ruby/object:Gem::Dependency
|
56
83
|
name: jeweler
|
57
|
-
|
58
|
-
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
84
|
+
prerelease: false
|
85
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
60
86
|
requirements:
|
61
87
|
- - ">="
|
62
88
|
- !ruby/object:Gem::Version
|
89
|
+
segments:
|
90
|
+
- 0
|
63
91
|
version: "0"
|
64
|
-
|
92
|
+
type: :development
|
93
|
+
version_requirements: *id006
|
65
94
|
description: datamapper storage for ruote (a ruby workflow engine)
|
66
95
|
email: jmettraux@gmail.com
|
67
96
|
executables: []
|
@@ -98,18 +127,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
127
|
requirements:
|
99
128
|
- - ">="
|
100
129
|
- !ruby/object:Gem::Version
|
130
|
+
segments:
|
131
|
+
- 0
|
101
132
|
version: "0"
|
102
|
-
version:
|
103
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
134
|
requirements:
|
105
135
|
- - ">="
|
106
136
|
- !ruby/object:Gem::Version
|
137
|
+
segments:
|
138
|
+
- 0
|
107
139
|
version: "0"
|
108
|
-
version:
|
109
140
|
requirements: []
|
110
141
|
|
111
142
|
rubyforge_project: ruote
|
112
|
-
rubygems_version: 1.3.
|
143
|
+
rubygems_version: 1.3.6
|
113
144
|
signing_key:
|
114
145
|
specification_version: 3
|
115
146
|
summary: datamapper storage for ruote (a ruby workflow engine)
|