Issue #13115 has been updated by Nobuyoshi Nakada.

Status changed from Open to Assigned
Assignee set to Aaron Patterson

Psych warns if `to_yaml` method is defined by other than psych itself, and delegated methods are defined in `delegate.rb`.
You can avoid the warning by `undef to_yaml` in `class Delegated`.

----------------------------------------
Bug #13115: `YAML.dump` outputs deperecated message even with delegated object
https://bugs.ruby-lang.org/issues/13115#change-62536

* Author: Fumiaki Matsushima
* Status: Assigned
* Priority: Normal
* Assignee: Aaron Patterson
* Target version: 
* ruby -v: ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
`YAML.dump` outputs deprecated message if it calls with delegated object
but doesn't with inherited object:

~~~ ruby
require 'yaml'
require 'delegate'

$VERBOSE = true
class Delegated < DelegateClass(Object)
  def initialize
    super(Object.new)
  end
end

puts 'YAML.dump(Delegated.new)'
YAML.dump(Delegated.new)

class Inherited < Object
end
puts 'YAML.dump(Inherited.new)'
YAML.dump(Inherited.new)

# $ ruby test.rb
# YAML.dump(Delegated.new)
# implementing to_yaml is deprecated, please implement "encode_with"
# YAML.dump(Inherited.new)
~~~

Is this intentional?



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>