On Saturday 04 January 2003 05:13 pm, why the lucky stiff wrote:
> Tom Sawyer (transami@...) wrote:
> > trying to YAML.load in my mod_ruby/eruby web app and get this:
> >
> > src/emitter.rb:1450:in `initialize': wrong # of arguments(0 for 1)
> > (ArgumentError)
> > from src/emitter.rb:1450:in `new'
> > from src/emitter.rb:1450:in `module_eval'
> > from src/emitter.rb:1446:in `call'
> > from src/emitter.rb:953:in `transfer_method'
> > from src/yaml.y:661:in `attach_transfer'
>
> Well, this appears to be an error caused by loading a typed node. The
> `tranfer_method' call is supposed to call a type handler (usually
> registered with YAML.add_private_type or YAML.add_domain_type methods).
> Are you loading ruby objects (!ruby/object:Test) or are you loading
> other types?
ruby objects, albiet complex ones. here's a (partial) example:
class ZenPurchase < ZenRecord
# data
attr_reader :date
attr_reader :description
attr_reader :v_ref
attr_reader :discount
attr_reader :terms_daysdue
attr_reader :terms_penalty
attr_reader :terms_daysdisc
attr_reader :terms_disc
attr_reader :taxes_prcnt
attr_reader :message
# subrecords
attr_reader :detail
# peer records
attr_reader :vendor
def initialize
super
# data
@date =3D Time.new.strftime('%Y-%m-%d')
@description =3D ''
@v_ref =3D nil
@discount =3D 0.0
@terms_daysdue =3D 0
@terms_penalty =3D 0.0
@terms_daysdisc =3D 0
@terms_disc =3D 0.0
@taxes_prcnt =3D 0.0
@message =3D ''
# sub records
@detail =3D ZenPurchaseDetails.new(self)
# peer records
@vendor =3D ZenVendor.new(:v_ref)
end
def qtytotal
qt =3D 0.0
@detail.each do |d|
qt +=3D d.qty
end
return qt
end
def subtotal
st =3D 0.0
@detail.each do |d|
st +=3D d.ext
end
return st
end
def tax
return ((subtotal * (taxes_prcnt / 100.0) * 100.0).round) / 100.0
end
def total
return subtotal + tax
end
def date=3D(x) @date =3D x.to_s end
def description=3D(x) @description =3D x.to_s end
def v_ref=3D(x) @v_ref =3D x.to_i =3D=3D 0 ? nil : x.to_i end
def discount=3D(x) @discount =3D x.to_f end
def terms_daysdue=3D(x) @terms_daysdue =3D x.to_i end
def terms_penalty=3D(x) @terms_penalty =3D x.to_f end
def terms_daysdisc=3D(x) @terms_daysdisc =3D x.to_i end
def terms_disc=3D(x) @terms_disc =3D x.to_f end
def taxes_prcnt=3D(x) @taxes_prcnt =3D x.to_f end
def message=3D(x) @message =3D x.to_s end
=20
# server-side validation
def valid
v =3D true
return v
end
def table() 'po' end
end # ZenPurchase
|