treequel 1.8.4 → 1.8.5
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/History.rdoc +6 -0
- data/lib/treequel/mixins.rb +8 -8
- data/lib/treequel/model.rb +16 -19
- data/lib/treequel.rb +2 -2
- data/spec/treequel/model_spec.rb +7 -0
- data.tar.gz.sig +0 -0
- metadata +52 -64
- metadata.gz.sig +0 -0
data/History.rdoc
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== v1.8.5 [2012-03-07] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
- Fix an edge-case bug in LDIF-generation logic. Thanks to Mahlon E. Smith
|
4
|
+
for the report and the pair to fix it.
|
5
|
+
|
6
|
+
|
1
7
|
== v1.8.4 [2012-02-02] Michael Granger <ged@FaerieMUD.org>
|
2
8
|
|
3
9
|
- Fixed a bug with handling of BOOLEAN values in Treequel::Model. Thanks to
|
data/lib/treequel/mixins.rb
CHANGED
@@ -21,20 +21,20 @@ module Treequel
|
|
21
21
|
|
22
22
|
### Define the given +delegated_methods+ as delegators to the like-named method
|
23
23
|
### of the return value of the +delegate_method+.
|
24
|
-
###
|
24
|
+
###
|
25
25
|
### class MyClass
|
26
26
|
### extend Treequel::Delegation
|
27
|
-
###
|
27
|
+
###
|
28
28
|
### # Delegate the #bound?, #err, and #result2error methods to the connection
|
29
29
|
### # object returned by the #connection method. This allows the connection
|
30
30
|
### # to still be loaded on demand/overridden/etc.
|
31
31
|
### def_method_delegators :connection, :bound?, :err, :result2error
|
32
|
-
###
|
32
|
+
###
|
33
33
|
### def connection
|
34
34
|
### @connection ||= self.connect
|
35
35
|
### end
|
36
36
|
### end
|
37
|
-
###
|
37
|
+
###
|
38
38
|
def def_method_delegators( delegate_method, *delegated_methods )
|
39
39
|
delegated_methods.each do |name|
|
40
40
|
body = make_method_delegator( delegate_method, name )
|
@@ -46,15 +46,15 @@ module Treequel
|
|
46
46
|
### Define the given +delegated_methods+ as delegators to the like-named method
|
47
47
|
### of the specified +ivar+. This is pretty much identical with how 'Forwardable'
|
48
48
|
### from the stdlib does delegation, but it's reimplemented here for consistency.
|
49
|
-
###
|
49
|
+
###
|
50
50
|
### class MyClass
|
51
51
|
### extend Treequel::Delegation
|
52
|
-
###
|
52
|
+
###
|
53
53
|
### # Delegate the #each method to the @collection ivar
|
54
54
|
### def_ivar_delegators :@collection, :each
|
55
|
-
###
|
55
|
+
###
|
56
56
|
### end
|
57
|
-
###
|
57
|
+
###
|
58
58
|
def def_ivar_delegators( ivar, *delegated_methods )
|
59
59
|
delegated_methods.each do |name|
|
60
60
|
body = make_ivar_delegator( ivar, name )
|
data/lib/treequel/model.rb
CHANGED
@@ -347,7 +347,7 @@ class Treequel::Model < Treequel::Branch
|
|
347
347
|
end
|
348
348
|
|
349
349
|
|
350
|
-
### Validate the object with the specified +options
|
350
|
+
### Validate the object with the specified +options+, appending validation errors onto
|
351
351
|
### the #errors object.
|
352
352
|
def validate( options={} )
|
353
353
|
options = DEFAULT_VALIDATION_OPTIONS.merge( options )
|
@@ -439,32 +439,29 @@ class Treequel::Model < Treequel::Branch
|
|
439
439
|
self.log.debug " comparing %s values to entry: %p vs. %p" %
|
440
440
|
[ attribute, values, entry_values ]
|
441
441
|
|
442
|
-
#
|
443
|
-
#
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
# If it's not a delete (no values in the mode), but there were values
|
448
|
-
# removed, it's a REPLACE
|
449
|
-
if !values.empty? && !old_values.empty?
|
450
|
-
self.log.debug " REPLACE %s: %p with %p" %
|
451
|
-
[ attribute, entry_values, values ]
|
452
|
-
return LDAP::Mod.new( LDAP::LDAP_MOD_REPLACE, attribute, values )
|
442
|
+
# If the attributes on the server are the same as the local ones,
|
443
|
+
# it's a NOOP.
|
444
|
+
if values.sort == entry_values.sort
|
445
|
+
self.log.debug " no change."
|
446
|
+
return nil
|
453
447
|
|
454
|
-
#
|
455
|
-
|
448
|
+
# If the directory doesn't have this attribute, but the local
|
449
|
+
# object does, it's an ADD
|
450
|
+
elsif entry_values.empty?
|
456
451
|
self.log.debug " ADD %s: %p" % [ attribute, values ]
|
457
|
-
return LDAP::Mod.new( LDAP::LDAP_MOD_ADD, attribute,
|
452
|
+
return LDAP::Mod.new( LDAP::LDAP_MOD_ADD, attribute, values )
|
458
453
|
|
459
|
-
# ...or if
|
454
|
+
# ...or if the local value doesn't have anything for this attribute
|
455
|
+
# but the directory does, it's a DEL
|
460
456
|
elsif values.empty?
|
461
457
|
self.log.debug " DELETE %s" % [ attribute ]
|
462
458
|
return LDAP::Mod.new( LDAP::LDAP_MOD_DELETE, attribute )
|
463
459
|
|
464
|
-
# otherwise
|
460
|
+
# ...otherwise it's a REPLACE
|
465
461
|
else
|
466
|
-
self.log.debug "
|
467
|
-
|
462
|
+
self.log.debug " REPLACE %s: %p with %p" %
|
463
|
+
[ attribute, entry_values, values ]
|
464
|
+
return LDAP::Mod.new( LDAP::LDAP_MOD_REPLACE, attribute, values )
|
468
465
|
end
|
469
466
|
|
470
467
|
end
|
data/lib/treequel.rb
CHANGED
@@ -26,10 +26,10 @@ end
|
|
26
26
|
module Treequel
|
27
27
|
|
28
28
|
# Library version
|
29
|
-
VERSION = '1.8.
|
29
|
+
VERSION = '1.8.5'
|
30
30
|
|
31
31
|
# VCS revision
|
32
|
-
REVISION = %q$Revision:
|
32
|
+
REVISION = %q$Revision: 8bdd6d1581e3 $
|
33
33
|
|
34
34
|
# Common paths for ldap.conf
|
35
35
|
COMMON_LDAP_CONF_PATHS = %w[
|
data/spec/treequel/model_spec.rb
CHANGED
@@ -673,6 +673,13 @@ describe Treequel::Model do
|
|
673
673
|
@obj.should_not be_modified()
|
674
674
|
end
|
675
675
|
|
676
|
+
it "doesn't try to mistakenly delete an attribute that's assigned an empty array " +
|
677
|
+
"and isn't set in the directory" do
|
678
|
+
@obj.secretary = []
|
679
|
+
result = @obj.modifications
|
680
|
+
result.should_not include( ldap_mod_delete :secretary )
|
681
|
+
end
|
682
|
+
|
676
683
|
end
|
677
684
|
|
678
685
|
it "avoids Arrayifying Time objects when converting them to generalized time strings" do
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: treequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,50 +10,38 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain:
|
13
|
-
- !
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
HIa9EgfFGSUEgvcIvaYqiN4jTUtidfEFw+Ltjs8AP9gWgSIYS6Gr38V0WGFFNzIH
|
42
|
-
|
43
|
-
aOD2wmu9oo/RffW4hS/8GuvfMzcw7CQ355wFR4KB/nyze+EsZ1Y5DerCAagMVuDQ
|
44
|
-
|
45
|
-
U0BLmWDFzPGGWlPeQCrYHCr+AcJz+NRnaHCKLZdSKj/RHuTOt+gblRex8FAh8NeA
|
46
|
-
|
47
|
-
cmlhXe46pZNJgWKbxZah85jIjx95hR8vOI+NAM5iH9kOqK13DrxacTKPhqj5PjwF
|
48
|
-
|
49
|
-
-----END CERTIFICATE-----
|
50
|
-
|
51
|
-
'
|
52
|
-
date: 2012-02-02 00:00:00.000000000 Z
|
13
|
+
- !binary |-
|
14
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURMRENDQWhTZ0F3SUJB
|
15
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREE4TVF3d0NnWURWUVFEREFOblpX
|
16
|
+
UXgKRnpBVkJnb0praWFKay9Jc1pBRVpGZ2RmWVdWeWFXVmZNUk13RVFZS0Na
|
17
|
+
SW1pWlB5TEdRQkdSWURiM0puTUI0WApEVEV3TURreE5qRTBORGcxTVZvWERU
|
18
|
+
RXhNRGt4TmpFME5EZzFNVm93UERFTU1Bb0dBMVVFQXd3RFoyVmtNUmN3CkZR
|
19
|
+
WUtDWkltaVpQeUxHUUJHUllIWDJGbGNtbGxYekVUTUJFR0NnbVNKb21UOGl4
|
20
|
+
a0FSa1dBMjl5WnpDQ0FTSXcKRFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURD
|
21
|
+
Q0FRb0NnZ0VCQUx5Ly9CRnhDMWYvY1BTbnd0SkJXb0ZpRnJpcgpoN1JpY0kr
|
22
|
+
am9xL29jVlhRcUk0VERXUHlGLzh0cWt2dCtyRDk5WDlxczJZZVI4Q1UvWWlJ
|
23
|
+
cExXclFPWVNUNzBKCnZEbjdVdmhiMm11RlZxcTYrdm9iZVRrSUxCRU82cGlv
|
24
|
+
bldERzhqU2JvM3FLbTFSaktKRHdnOXA0d05LaFB1dTgKS0d1ZS9CRmI2N0tm
|
25
|
+
bHF5QXBQbVBlYjNWZGQ5Y2xzcHpxZUZxcDdjVUJNRXBGUzZMV3h5NEdrK3F2
|
26
|
+
RkZKQkpMQgpCVUhFL0xaVkpNVnpmcEM1VXErUW1ZN0IrRkgvUXFObmRuM3RP
|
27
|
+
SGdzUGFkTFROaW11QjFzQ3VMMWE0ejNQZXBkClRlTEJFRm1FYW81RGszSy9R
|
28
|
+
OG84dmxiSUIvakJEVFV4NkRqYmd4dzc3OTA5eDZnSTlkb1U0TEQ1WE1jQ0F3
|
29
|
+
RUEKQWFNNU1EY3dDUVlEVlIwVEJBSXdBREFMQmdOVkhROEVCQU1DQkxBd0hR
|
30
|
+
WURWUjBPQkJZRUZKZW9Ha09yOWw0Qgorc2FNa1cvWlhUNFVlU3ZWTUEwR0NT
|
31
|
+
cUdTSWIzRFFFQkJRVUFBNElCQVFCRzJLT2J2WUkyZUh5eUJVSlNKM2pOCnZF
|
32
|
+
blUzZDYwem5BWGJyU2QycWIzcjFsWTFFUEREM2JjeTBNZ2dDZkdkZzNYdTU0
|
33
|
+
ejIxb3F5SWRrOHVHdFdCUEwKSElhOUVnZkZHU1VFZ3ZjSXZhWXFpTjRqVFV0
|
34
|
+
aWRmRUZ3K0x0anM4QVA5Z1dnU0lZUzZHcjM4VjBXR0ZGTnpJSAphT0Qyd211
|
35
|
+
OW9vL1JmZlc0aFMvOEd1dmZNemN3N0NRMzU1d0ZSNEtCL255emUrRXNaMVk1
|
36
|
+
RGVyQ0FhZ01WdURRClUwQkxtV0RGelBHR1dsUGVRQ3JZSENyK0FjSnorTlJu
|
37
|
+
YUhDS0xaZFNLai9SSHVUT3QrZ2JsUmV4OEZBaDhOZUEKY21saFhlNDZwWk5K
|
38
|
+
Z1dLYnhaYWg4NWpJang5NWhSOHZPSStOQU01aUg5a09xSzEzRHJ4YWNUS1Bo
|
39
|
+
cWo1UGp3RgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
|
40
|
+
date: 2012-03-08 00:00:00.000000000 Z
|
53
41
|
dependencies:
|
54
42
|
- !ruby/object:Gem::Dependency
|
55
43
|
name: ruby-ldap
|
56
|
-
requirement: &
|
44
|
+
requirement: &70184430296300 !ruby/object:Gem::Requirement
|
57
45
|
none: false
|
58
46
|
requirements:
|
59
47
|
- - ~>
|
@@ -61,10 +49,10 @@ dependencies:
|
|
61
49
|
version: '0.9'
|
62
50
|
type: :runtime
|
63
51
|
prerelease: false
|
64
|
-
version_requirements: *
|
52
|
+
version_requirements: *70184430296300
|
65
53
|
- !ruby/object:Gem::Dependency
|
66
54
|
name: hoe-mercurial
|
67
|
-
requirement: &
|
55
|
+
requirement: &70184430295820 !ruby/object:Gem::Requirement
|
68
56
|
none: false
|
69
57
|
requirements:
|
70
58
|
- - ~>
|
@@ -72,10 +60,10 @@ dependencies:
|
|
72
60
|
version: 1.3.1
|
73
61
|
type: :development
|
74
62
|
prerelease: false
|
75
|
-
version_requirements: *
|
63
|
+
version_requirements: *70184430295820
|
76
64
|
- !ruby/object:Gem::Dependency
|
77
65
|
name: hoe-highline
|
78
|
-
requirement: &
|
66
|
+
requirement: &70184430295340 !ruby/object:Gem::Requirement
|
79
67
|
none: false
|
80
68
|
requirements:
|
81
69
|
- - ~>
|
@@ -83,10 +71,10 @@ dependencies:
|
|
83
71
|
version: 0.0.1
|
84
72
|
type: :development
|
85
73
|
prerelease: false
|
86
|
-
version_requirements: *
|
74
|
+
version_requirements: *70184430295340
|
87
75
|
- !ruby/object:Gem::Dependency
|
88
76
|
name: rspec
|
89
|
-
requirement: &
|
77
|
+
requirement: &70184430294840 !ruby/object:Gem::Requirement
|
90
78
|
none: false
|
91
79
|
requirements:
|
92
80
|
- - ~>
|
@@ -94,10 +82,10 @@ dependencies:
|
|
94
82
|
version: '2.7'
|
95
83
|
type: :development
|
96
84
|
prerelease: false
|
97
|
-
version_requirements: *
|
85
|
+
version_requirements: *70184430294840
|
98
86
|
- !ruby/object:Gem::Dependency
|
99
87
|
name: ruby-termios
|
100
|
-
requirement: &
|
88
|
+
requirement: &70184430294400 !ruby/object:Gem::Requirement
|
101
89
|
none: false
|
102
90
|
requirements:
|
103
91
|
- - ~>
|
@@ -105,10 +93,10 @@ dependencies:
|
|
105
93
|
version: '0.9'
|
106
94
|
type: :development
|
107
95
|
prerelease: false
|
108
|
-
version_requirements: *
|
96
|
+
version_requirements: *70184430294400
|
109
97
|
- !ruby/object:Gem::Dependency
|
110
98
|
name: ruby-terminfo
|
111
|
-
requirement: &
|
99
|
+
requirement: &70184430293960 !ruby/object:Gem::Requirement
|
112
100
|
none: false
|
113
101
|
requirements:
|
114
102
|
- - ~>
|
@@ -116,10 +104,10 @@ dependencies:
|
|
116
104
|
version: '0.1'
|
117
105
|
type: :development
|
118
106
|
prerelease: false
|
119
|
-
version_requirements: *
|
107
|
+
version_requirements: *70184430293960
|
120
108
|
- !ruby/object:Gem::Dependency
|
121
109
|
name: columnize
|
122
|
-
requirement: &
|
110
|
+
requirement: &70184430293480 !ruby/object:Gem::Requirement
|
123
111
|
none: false
|
124
112
|
requirements:
|
125
113
|
- - ~>
|
@@ -127,10 +115,10 @@ dependencies:
|
|
127
115
|
version: '0.3'
|
128
116
|
type: :development
|
129
117
|
prerelease: false
|
130
|
-
version_requirements: *
|
118
|
+
version_requirements: *70184430293480
|
131
119
|
- !ruby/object:Gem::Dependency
|
132
120
|
name: sysexits
|
133
|
-
requirement: &
|
121
|
+
requirement: &70184430293040 !ruby/object:Gem::Requirement
|
134
122
|
none: false
|
135
123
|
requirements:
|
136
124
|
- - ~>
|
@@ -138,10 +126,10 @@ dependencies:
|
|
138
126
|
version: '1.0'
|
139
127
|
type: :development
|
140
128
|
prerelease: false
|
141
|
-
version_requirements: *
|
129
|
+
version_requirements: *70184430293040
|
142
130
|
- !ruby/object:Gem::Dependency
|
143
131
|
name: sequel
|
144
|
-
requirement: &
|
132
|
+
requirement: &70184430292560 !ruby/object:Gem::Requirement
|
145
133
|
none: false
|
146
134
|
requirements:
|
147
135
|
- - ~>
|
@@ -149,10 +137,10 @@ dependencies:
|
|
149
137
|
version: '3.20'
|
150
138
|
type: :development
|
151
139
|
prerelease: false
|
152
|
-
version_requirements: *
|
140
|
+
version_requirements: *70184430292560
|
153
141
|
- !ruby/object:Gem::Dependency
|
154
142
|
name: rdoc
|
155
|
-
requirement: &
|
143
|
+
requirement: &70184430292100 !ruby/object:Gem::Requirement
|
156
144
|
none: false
|
157
145
|
requirements:
|
158
146
|
- - ~>
|
@@ -160,10 +148,10 @@ dependencies:
|
|
160
148
|
version: '3.10'
|
161
149
|
type: :development
|
162
150
|
prerelease: false
|
163
|
-
version_requirements: *
|
151
|
+
version_requirements: *70184430292100
|
164
152
|
- !ruby/object:Gem::Dependency
|
165
153
|
name: hoe
|
166
|
-
requirement: &
|
154
|
+
requirement: &70184430291660 !ruby/object:Gem::Requirement
|
167
155
|
none: false
|
168
156
|
requirements:
|
169
157
|
- - ~>
|
@@ -171,7 +159,7 @@ dependencies:
|
|
171
159
|
version: '2.13'
|
172
160
|
type: :development
|
173
161
|
prerelease: false
|
174
|
-
version_requirements: *
|
162
|
+
version_requirements: *70184430291660
|
175
163
|
description: ! "Treequel is an LDAP toolkit for Ruby. It is intended to allow quick,
|
176
164
|
easy\naccess to LDAP directories in a manner consistent with LDAP's hierarchical,\nfree-form
|
177
165
|
nature. \n\nIt's inspired by and modeled after {Sequel}[http://sequel.rubyforge.org/],
|
@@ -287,7 +275,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
287
275
|
version: '0'
|
288
276
|
requirements: []
|
289
277
|
rubyforge_project: treequel
|
290
|
-
rubygems_version: 1.8.
|
278
|
+
rubygems_version: 1.8.16
|
291
279
|
signing_key:
|
292
280
|
specification_version: 3
|
293
281
|
summary: Treequel is an LDAP toolkit for Ruby
|
metadata.gz.sig
CHANGED
Binary file
|