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 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] [tip]
33
+ [5a4dee114236]
6
34
 
7
35
  * .rspec-tm:
8
36
  Removing TextMate RSpec settings file
9
- [c1fefabf1a27] [github/master]
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 [Sequel](http://sequel.rubyforge.org/), a
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.3'
29
+ VERSION = '1.8.4'
30
30
 
31
31
  # VCS revision
32
- REVISION = %q$Revision: 5a4dee114236 $
32
+ REVISION = %q$Revision: d1834cc0605f $
33
33
 
34
34
  # Common paths for ldap.conf
35
35
  COMMON_LDAP_CONF_PATHS = %w[
@@ -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" ) unless self[ oid ]
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
@@ -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
- with( @entry['dn'].first, LDAP::LDAP_SCOPE_ONELEVEL, "(cn=magnelion)",
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
- with( @entry['dn'].first, LDAP::LDAP_SCOPE_ONELEVEL, "(cn=ephelion)",
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.3
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-01-30 00:00:00.000000000 Z
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: &70211399407800 !ruby/object:Gem::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: *70211399407800
64
+ version_requirements: *70230719754780
65
65
  - !ruby/object:Gem::Dependency
66
66
  name: hoe-mercurial
67
- requirement: &70211399407340 !ruby/object:Gem::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: *70211399407340
75
+ version_requirements: *70230719754360
76
76
  - !ruby/object:Gem::Dependency
77
77
  name: hoe-highline
78
- requirement: &70211399406840 !ruby/object:Gem::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: *70211399406840
86
+ version_requirements: *70230719753900
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: rspec
89
- requirement: &70211399406360 !ruby/object:Gem::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: *70211399406360
97
+ version_requirements: *70230719753440
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: ruby-termios
100
- requirement: &70211399405940 !ruby/object:Gem::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: *70211399405940
108
+ version_requirements: *70230719753020
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: ruby-terminfo
111
- requirement: &70211399405460 !ruby/object:Gem::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: *70211399405460
119
+ version_requirements: *70230719752600
120
120
  - !ruby/object:Gem::Dependency
121
121
  name: columnize
122
- requirement: &70211399404960 !ruby/object:Gem::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: *70211399404960
130
+ version_requirements: *70230719752180
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: sysexits
133
- requirement: &70211399404520 !ruby/object:Gem::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: *70211399404520
141
+ version_requirements: *70230719751760
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: sequel
144
- requirement: &70211399404060 !ruby/object:Gem::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: *70211399404060
152
+ version_requirements: *70230719751340
153
153
  - !ruby/object:Gem::Dependency
154
- name: hoe
155
- requirement: &70211399403600 !ruby/object:Gem::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: '2.12'
160
+ version: '3.10'
161
161
  type: :development
162
162
  prerelease: false
163
- version_requirements: *70211399403600
163
+ version_requirements: *70230719750920
164
164
  - !ruby/object:Gem::Dependency
165
- name: rdoc
166
- requirement: &70211416503480 !ruby/object:Gem::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: '3.10'
171
+ version: '2.13'
172
172
  type: :development
173
173
  prerelease: false
174
- version_requirements: *70211416503480
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 [Sequel](http://sequel.rubyforge.org/),
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.10
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