treequel 1.8.3 → 1.8.4
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.tar.gz.sig +0 -0
- data/ChangeLog +30 -2
- data/History.rdoc +6 -0
- data/README.rdoc +1 -1
- data/lib/treequel.rb +2 -2
- data/lib/treequel/model.rb +17 -17
- data/lib/treequel/model/schemavalidations.rb +1 -1
- data/spec/treequel/model_spec.rb +18 -2
- metadata +30 -30
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,12 +1,40 @@
|
|
1
|
+
2012-01-30 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* .hgtags:
|
4
|
+
Added tag v1.8.3 for changeset c9e91880eeb9
|
5
|
+
[142d9a553024] [tip]
|
6
|
+
|
7
|
+
* .hgsigs:
|
8
|
+
Added signature for changeset 5bab245f02aa
|
9
|
+
[c9e91880eeb9] [v1.8.3]
|
10
|
+
|
11
|
+
2012-01-27 Michael Granger <ged@FaerieMUD.org>
|
12
|
+
|
13
|
+
* .rspec-tm, .rvm.gems, .rvmrc:
|
14
|
+
Adding project rvmrc, TextMate RSpec settings.
|
15
|
+
[84cfb6b8e964]
|
16
|
+
|
17
|
+
2012-01-26 Michael Granger <ged@FaerieMUD.org>
|
18
|
+
|
19
|
+
* README.rdoc:
|
20
|
+
Fixing a link in the README
|
21
|
+
[55b0f2e1048e]
|
22
|
+
|
23
|
+
2012-01-25 Michael Granger <ged@FaerieMUD.org>
|
24
|
+
|
25
|
+
* lib/treequel/monkeypatches.rb:
|
26
|
+
Remove the (now unnecessary) diff/lcs requires.
|
27
|
+
[5bab245f02aa]
|
28
|
+
|
1
29
|
2012-01-24 Michael Granger <ged@FaerieMUD.org>
|
2
30
|
|
3
31
|
* History.rdoc, lib/treequel.rb:
|
4
32
|
Bumping patch version, updating History.
|
5
|
-
[5a4dee114236]
|
33
|
+
[5a4dee114236]
|
6
34
|
|
7
35
|
* .rspec-tm:
|
8
36
|
Removing TextMate RSpec settings file
|
9
|
-
[c1fefabf1a27]
|
37
|
+
[c1fefabf1a27]
|
10
38
|
|
11
39
|
* Rakefile, lib/treequel/model.rb, lib/treequel/monkeypatches.rb,
|
12
40
|
spec/treequel/model_spec.rb:
|
data/History.rdoc
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== v1.8.4 [2012-02-02] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
- Fixed a bug with handling of BOOLEAN values in Treequel::Model. Thanks to
|
4
|
+
Patricio Bruna <pbruna@it-linux.cl> for the bug report.
|
5
|
+
|
6
|
+
|
1
7
|
== v1.8.3 [2012-01-24] Michael Granger <ged@FaerieMUD.org>
|
2
8
|
|
3
9
|
- A fix for Treequel::Model#save LDIF. Thanks to Patricio Bruna <pbruna@it-linux.cl> for
|
data/README.rdoc
CHANGED
@@ -8,7 +8,7 @@ Treequel is an LDAP toolkit for Ruby. It is intended to allow quick, easy
|
|
8
8
|
access to LDAP directories in a manner consistent with LDAP's hierarchical,
|
9
9
|
free-form nature.
|
10
10
|
|
11
|
-
It's inspired by and modeled after [
|
11
|
+
It's inspired by and modeled after {Sequel}[http://sequel.rubyforge.org/], a
|
12
12
|
kick-ass database library.
|
13
13
|
|
14
14
|
|
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.4'
|
30
30
|
|
31
31
|
# VCS revision
|
32
|
-
REVISION = %q$Revision:
|
32
|
+
REVISION = %q$Revision: d1834cc0605f $
|
33
33
|
|
34
34
|
# Common paths for ldap.conf
|
35
35
|
COMMON_LDAP_CONF_PATHS = %w[
|
data/lib/treequel/model.rb
CHANGED
@@ -78,7 +78,7 @@ class Treequel::Model < Treequel::Branch
|
|
78
78
|
end
|
79
79
|
|
80
80
|
|
81
|
-
### Return the Treequel::Directory the Model will use for searches, creating it if it
|
81
|
+
### Return the Treequel::Directory the Model will use for searches, creating it if it
|
82
82
|
### hasn't been created already. The default Directory will be created by calling
|
83
83
|
### Treequel.directory_from_config.
|
84
84
|
def self::directory
|
@@ -103,7 +103,7 @@ class Treequel::Model < Treequel::Branch
|
|
103
103
|
end
|
104
104
|
|
105
105
|
|
106
|
-
### Register the given +mixin+ for the specified +objectclasses+. Instances that
|
106
|
+
### Register the given +mixin+ for the specified +objectclasses+. Instances that
|
107
107
|
### have all the specified +objectclasses+ will be extended with the +mixin+, which should be
|
108
108
|
### a Module extended with Treequel::Model::ObjectClass.
|
109
109
|
def self::register_mixin( mixin )
|
@@ -157,7 +157,7 @@ class Treequel::Model < Treequel::Branch
|
|
157
157
|
values_at( *ocsymbols ).
|
158
158
|
inject {|set1,set2| set1 | set2 }
|
159
159
|
|
160
|
-
# Return the mixins whose objectClass requirements are met by the
|
160
|
+
# Return the mixins whose objectClass requirements are met by the
|
161
161
|
# specified objectclasses
|
162
162
|
return mixins.delete_if do |mixin|
|
163
163
|
!mixin.model_objectclasses.all? {|oc| ocsymbols.include?(oc) }
|
@@ -186,7 +186,7 @@ class Treequel::Model < Treequel::Branch
|
|
186
186
|
def self::freeze_converted_values?; false; end
|
187
187
|
|
188
188
|
|
189
|
-
### Create a new Treequel::Model object with the given +entry+ hash from the
|
189
|
+
### Create a new Treequel::Model object with the given +entry+ hash from the
|
190
190
|
### specified +directory+. Overrides Treequel::Branch.new_from_entry to pass the
|
191
191
|
### +from_directory+ flag to mark it as unmodified.
|
192
192
|
def self::new_from_entry( entry, directory )
|
@@ -262,7 +262,7 @@ class Treequel::Model < Treequel::Branch
|
|
262
262
|
|
263
263
|
|
264
264
|
### Index set operator -- set attribute +attrname+ to a new +value+.
|
265
|
-
### Overridden to make Model objects defer writing changes until
|
265
|
+
### Overridden to make Model objects defer writing changes until
|
266
266
|
### Treequel::Model#save is called.
|
267
267
|
def []=( attrname, value )
|
268
268
|
attrtype = self.find_attribute_type( attrname.to_sym ) or
|
@@ -270,10 +270,10 @@ class Treequel::Model < Treequel::Branch
|
|
270
270
|
value = Array( value ) unless attrtype.single?
|
271
271
|
|
272
272
|
self.mark_dirty
|
273
|
-
if value
|
274
|
-
@values[ attrtype.name.to_sym ] = value
|
275
|
-
else
|
273
|
+
if value.nil?
|
276
274
|
@values.delete( attrtype.name.to_sym )
|
275
|
+
else
|
276
|
+
@values[ attrtype.name.to_sym ] = value
|
277
277
|
end
|
278
278
|
|
279
279
|
# If the objectClasses change, we (may) need to re-apply mixins
|
@@ -289,7 +289,7 @@ class Treequel::Model < Treequel::Branch
|
|
289
289
|
|
290
290
|
|
291
291
|
### Make the changes to the object specified by the given +attributes+.
|
292
|
-
### Overridden to make Model objects defer writing changes until
|
292
|
+
### Overridden to make Model objects defer writing changes until
|
293
293
|
### Treequel::Model#save is called.
|
294
294
|
def merge( attributes )
|
295
295
|
attributes.each do |attrname, value|
|
@@ -299,7 +299,7 @@ class Treequel::Model < Treequel::Branch
|
|
299
299
|
|
300
300
|
|
301
301
|
### Delete the specified attributes.
|
302
|
-
### Overridden to make Model objects defer writing changes until
|
302
|
+
### Overridden to make Model objects defer writing changes until
|
303
303
|
### Treequel::Model#save is called.
|
304
304
|
def delete( *attributes )
|
305
305
|
return super if attributes.empty?
|
@@ -313,8 +313,8 @@ class Treequel::Model < Treequel::Branch
|
|
313
313
|
if attribute.is_a?( Hash )
|
314
314
|
self.delete_specific_values( attribute )
|
315
315
|
|
316
|
-
# With an array of attributes to delete, replace
|
317
|
-
# MULTIPLE attribute types with an empty array, and SINGLE
|
316
|
+
# With an array of attributes to delete, replace
|
317
|
+
# MULTIPLE attribute types with an empty array, and SINGLE
|
318
318
|
# attribute types with nil
|
319
319
|
elsif attribute.respond_to?( :to_sym )
|
320
320
|
attrtype = self.find_attribute_type( attribute.to_sym )
|
@@ -365,7 +365,7 @@ class Treequel::Model < Treequel::Branch
|
|
365
365
|
|
366
366
|
|
367
367
|
### Write any pending changes in the model object to the directory. The valid +opts+ are:
|
368
|
-
###
|
368
|
+
###
|
369
369
|
### [+:raise_on_failure+]
|
370
370
|
### raise a Treequel::ValidationFailed or Treequel::BeforeHookFailed if either the
|
371
371
|
### validations or before_{save,create}.
|
@@ -606,7 +606,7 @@ class Treequel::Model < Treequel::Branch
|
|
606
606
|
def method_missing( sym, *args )
|
607
607
|
self.log.debug "Dynamic dispatch to %p with args: %p" % [ sym, args ]
|
608
608
|
|
609
|
-
# First, if the entry hasn't yet been loaded, try loading it to make sure the
|
609
|
+
# First, if the entry hasn't yet been loaded, try loading it to make sure the
|
610
610
|
# object is already extended with any applicable objectClass mixins. If that ends
|
611
611
|
# up defining the method in question, call it.
|
612
612
|
if !@entry && self.entry
|
@@ -627,7 +627,7 @@ class Treequel::Model < Treequel::Branch
|
|
627
627
|
plainsym, methodtype = attribute_from_method( sym )
|
628
628
|
return super if methodtype == :reader && !args.empty?
|
629
629
|
|
630
|
-
# Now make a method body for a new method based on what attributeType it is if
|
630
|
+
# Now make a method body for a new method based on what attributeType it is if
|
631
631
|
# it's a valid attribute
|
632
632
|
attrtype = self.find_attribute_type( plainsym ) or return super
|
633
633
|
methodbody = case methodtype
|
@@ -688,7 +688,7 @@ class Treequel::Model < Treequel::Branch
|
|
688
688
|
end
|
689
689
|
|
690
690
|
|
691
|
-
### Overridden to apply applicable mixins to lazily-loaded objects once their entry
|
691
|
+
### Overridden to apply applicable mixins to lazily-loaded objects once their entry
|
692
692
|
### has been looked up.
|
693
693
|
def lookup_entry
|
694
694
|
if entryhash = super
|
@@ -699,7 +699,7 @@ class Treequel::Model < Treequel::Branch
|
|
699
699
|
end
|
700
700
|
|
701
701
|
|
702
|
-
### Apply mixins that are applicable considering the receiver's DN and the
|
702
|
+
### Apply mixins that are applicable considering the receiver's DN and the
|
703
703
|
### objectClasses from the given +entryhash+ merged with any unsaved values.
|
704
704
|
def apply_applicable_mixins( dn, entryhash=nil )
|
705
705
|
objectclasses = @values[:objectClass] ||
|
@@ -41,7 +41,7 @@ module Treequel::Model::SchemaValidations
|
|
41
41
|
self.must_attribute_types.each do |attrtype|
|
42
42
|
oid = attrtype.name
|
43
43
|
if attrtype.single?
|
44
|
-
self.errors.add( oid, "MUST have a value" )
|
44
|
+
self.errors.add( oid, "MUST have a value" ) if self[ oid ].nil?
|
45
45
|
else
|
46
46
|
self.errors.add( oid, "MUST have at least one value" ) if self[ oid ].empty?
|
47
47
|
end
|
data/spec/treequel/model_spec.rb
CHANGED
@@ -379,6 +379,22 @@ describe Treequel::Model do
|
|
379
379
|
@obj.uid.should == ['stampley']
|
380
380
|
end
|
381
381
|
|
382
|
+
it "treats setting an attribute to nil as a delete" do
|
383
|
+
@obj.display_name = 'J. P. Havershaven'
|
384
|
+
@obj.values.should include( :displayName )
|
385
|
+
@obj.display_name = nil
|
386
|
+
@obj.values.should_not include( :displayName )
|
387
|
+
end
|
388
|
+
|
389
|
+
it "allows a BOOLEAN attribute to be set to false" do
|
390
|
+
@obj.object_class += ['sambaAccount']
|
391
|
+
@obj.rid = 1181
|
392
|
+
@obj.pwd_must_change = false
|
393
|
+
@obj.values.should include( :pwdMustChange => false )
|
394
|
+
@obj.pwd_must_change = nil
|
395
|
+
@obj.values.should_not include( :pwdMustChange )
|
396
|
+
end
|
397
|
+
|
382
398
|
it "provides a predicate that tests true for valid singular attributes that are set" do
|
383
399
|
@obj.display_name?.should be_true()
|
384
400
|
end
|
@@ -413,7 +429,7 @@ describe Treequel::Model do
|
|
413
429
|
it "adds the objectClass attribute to the attribute list when executing a search that " +
|
414
430
|
"contains a select" do
|
415
431
|
@conn.should_receive( :search_ext2 ).
|
416
|
-
|
432
|
+
with( @entry['dn'].first, LDAP::LDAP_SCOPE_ONELEVEL, "(cn=magnelion)",
|
417
433
|
["cn", "objectClass"], false, nil, nil, 0, 0, 0, "", nil ).
|
418
434
|
and_return( [] )
|
419
435
|
@obj.search( :one, '(cn=magnelion)', :selectattrs => ['cn'] )
|
@@ -422,7 +438,7 @@ describe Treequel::Model do
|
|
422
438
|
it "doesn't add the objectClass attribute to the attribute list when the search " +
|
423
439
|
"doesn't contain a select" do
|
424
440
|
@conn.should_receive( :search_ext2 ).
|
425
|
-
|
441
|
+
with( @entry['dn'].first, LDAP::LDAP_SCOPE_ONELEVEL, "(cn=ephelion)",
|
426
442
|
['*'], false, nil, nil, 0, 0, 0, "", nil ).
|
427
443
|
and_return( [] )
|
428
444
|
@obj.search( :one, '(cn=ephelion)' )
|
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.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -49,11 +49,11 @@ cert_chain:
|
|
49
49
|
-----END CERTIFICATE-----
|
50
50
|
|
51
51
|
'
|
52
|
-
date: 2012-
|
52
|
+
date: 2012-02-02 00:00:00.000000000 Z
|
53
53
|
dependencies:
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
55
|
name: ruby-ldap
|
56
|
-
requirement: &
|
56
|
+
requirement: &70230719754780 !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
@@ -61,10 +61,10 @@ dependencies:
|
|
61
61
|
version: '0.9'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
|
-
version_requirements: *
|
64
|
+
version_requirements: *70230719754780
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
66
|
name: hoe-mercurial
|
67
|
-
requirement: &
|
67
|
+
requirement: &70230719754360 !ruby/object:Gem::Requirement
|
68
68
|
none: false
|
69
69
|
requirements:
|
70
70
|
- - ~>
|
@@ -72,10 +72,10 @@ dependencies:
|
|
72
72
|
version: 1.3.1
|
73
73
|
type: :development
|
74
74
|
prerelease: false
|
75
|
-
version_requirements: *
|
75
|
+
version_requirements: *70230719754360
|
76
76
|
- !ruby/object:Gem::Dependency
|
77
77
|
name: hoe-highline
|
78
|
-
requirement: &
|
78
|
+
requirement: &70230719753900 !ruby/object:Gem::Requirement
|
79
79
|
none: false
|
80
80
|
requirements:
|
81
81
|
- - ~>
|
@@ -83,10 +83,10 @@ dependencies:
|
|
83
83
|
version: 0.0.1
|
84
84
|
type: :development
|
85
85
|
prerelease: false
|
86
|
-
version_requirements: *
|
86
|
+
version_requirements: *70230719753900
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
88
|
name: rspec
|
89
|
-
requirement: &
|
89
|
+
requirement: &70230719753440 !ruby/object:Gem::Requirement
|
90
90
|
none: false
|
91
91
|
requirements:
|
92
92
|
- - ~>
|
@@ -94,10 +94,10 @@ dependencies:
|
|
94
94
|
version: '2.7'
|
95
95
|
type: :development
|
96
96
|
prerelease: false
|
97
|
-
version_requirements: *
|
97
|
+
version_requirements: *70230719753440
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: ruby-termios
|
100
|
-
requirement: &
|
100
|
+
requirement: &70230719753020 !ruby/object:Gem::Requirement
|
101
101
|
none: false
|
102
102
|
requirements:
|
103
103
|
- - ~>
|
@@ -105,10 +105,10 @@ dependencies:
|
|
105
105
|
version: '0.9'
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
|
-
version_requirements: *
|
108
|
+
version_requirements: *70230719753020
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: ruby-terminfo
|
111
|
-
requirement: &
|
111
|
+
requirement: &70230719752600 !ruby/object:Gem::Requirement
|
112
112
|
none: false
|
113
113
|
requirements:
|
114
114
|
- - ~>
|
@@ -116,10 +116,10 @@ dependencies:
|
|
116
116
|
version: '0.1'
|
117
117
|
type: :development
|
118
118
|
prerelease: false
|
119
|
-
version_requirements: *
|
119
|
+
version_requirements: *70230719752600
|
120
120
|
- !ruby/object:Gem::Dependency
|
121
121
|
name: columnize
|
122
|
-
requirement: &
|
122
|
+
requirement: &70230719752180 !ruby/object:Gem::Requirement
|
123
123
|
none: false
|
124
124
|
requirements:
|
125
125
|
- - ~>
|
@@ -127,10 +127,10 @@ dependencies:
|
|
127
127
|
version: '0.3'
|
128
128
|
type: :development
|
129
129
|
prerelease: false
|
130
|
-
version_requirements: *
|
130
|
+
version_requirements: *70230719752180
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: sysexits
|
133
|
-
requirement: &
|
133
|
+
requirement: &70230719751760 !ruby/object:Gem::Requirement
|
134
134
|
none: false
|
135
135
|
requirements:
|
136
136
|
- - ~>
|
@@ -138,10 +138,10 @@ dependencies:
|
|
138
138
|
version: '1.0'
|
139
139
|
type: :development
|
140
140
|
prerelease: false
|
141
|
-
version_requirements: *
|
141
|
+
version_requirements: *70230719751760
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
143
|
name: sequel
|
144
|
-
requirement: &
|
144
|
+
requirement: &70230719751340 !ruby/object:Gem::Requirement
|
145
145
|
none: false
|
146
146
|
requirements:
|
147
147
|
- - ~>
|
@@ -149,32 +149,32 @@ dependencies:
|
|
149
149
|
version: '3.20'
|
150
150
|
type: :development
|
151
151
|
prerelease: false
|
152
|
-
version_requirements: *
|
152
|
+
version_requirements: *70230719751340
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
155
|
-
requirement: &
|
154
|
+
name: rdoc
|
155
|
+
requirement: &70230719750920 !ruby/object:Gem::Requirement
|
156
156
|
none: false
|
157
157
|
requirements:
|
158
158
|
- - ~>
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version: '
|
160
|
+
version: '3.10'
|
161
161
|
type: :development
|
162
162
|
prerelease: false
|
163
|
-
version_requirements: *
|
163
|
+
version_requirements: *70230719750920
|
164
164
|
- !ruby/object:Gem::Dependency
|
165
|
-
name:
|
166
|
-
requirement: &
|
165
|
+
name: hoe
|
166
|
+
requirement: &70230719766880 !ruby/object:Gem::Requirement
|
167
167
|
none: false
|
168
168
|
requirements:
|
169
169
|
- - ~>
|
170
170
|
- !ruby/object:Gem::Version
|
171
|
-
version: '
|
171
|
+
version: '2.13'
|
172
172
|
type: :development
|
173
173
|
prerelease: false
|
174
|
-
version_requirements: *
|
174
|
+
version_requirements: *70230719766880
|
175
175
|
description: ! "Treequel is an LDAP toolkit for Ruby. It is intended to allow quick,
|
176
176
|
easy\naccess to LDAP directories in a manner consistent with LDAP's hierarchical,\nfree-form
|
177
|
-
nature. \n\nIt's inspired by and modeled after [
|
177
|
+
nature. \n\nIt's inspired by and modeled after {Sequel}[http://sequel.rubyforge.org/],
|
178
178
|
a\nkick-ass database library."
|
179
179
|
email:
|
180
180
|
- ged@FaerieMUD.org
|
@@ -287,7 +287,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
287
287
|
version: '0'
|
288
288
|
requirements: []
|
289
289
|
rubyforge_project: treequel
|
290
|
-
rubygems_version: 1.8.
|
290
|
+
rubygems_version: 1.8.14
|
291
291
|
signing_key:
|
292
292
|
specification_version: 3
|
293
293
|
summary: Treequel is an LDAP toolkit for Ruby
|
metadata.gz.sig
CHANGED
Binary file
|