treequel 1.8.3 → 1.8.4

Sign up to get free protection for your applications and to get access to all the features.
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