无法转储 ruby​​ 中的匿名类 Class

sum*_*man 3 ruby ruby-on-rails ruby-on-rails-3

任何人都可以解释这个例外在红宝石中意味着什么。

TypeError 异常:无法转储匿名类 Class

代码示例

   Class X_controller
     before filer: validate, :only => [:meth1]
     def meth1
      y.new.send_later(:issue1) #throws me exception
     end
     def meth2
      y.new.send_later(:issue1) #works
     end
     private
     def valiadate
      y.new.send_later(:issue1) #throws me exception
     end
    end
    class y
     include x::z
     def issue1
     end

    end
    module x::z
     def send_later(meth,*args)
     end
    end
Run Code Online (Sandbox Code Playgroud)

ale*_*nis 6

当您尝试直接在类上调用to_yaml或或任何其他表示而不是在实例上调用它时,就会发生这种情况。to_json例如

User.to_json
Run Code Online (Sandbox Code Playgroud)

会倾倒,但是

user = User.first
user.to_json
Run Code Online (Sandbox Code Playgroud)

会工作得很好。

编辑:

这个问题似乎也是旧 Rails 版本中的一个错误,(至少)Rails 3 已修复。