Newbie problem of Class attributes

I am trying to create a class level attribute which can read and write.
I am doing something like this:

def self.selected_client
– my code –
end

def self.selected_client=(value)
– my code –
end

but its seems that the Ruby interpreter is not liking this. Can someone
tell me how to create class level attributes that can read and write.

On 10/10/06, Dipesh B. [email protected] wrote:

but its seems that the Ruby interpreter is not liking this. Can someone
tell me how to create class level attributes that can read and write.


Posted via http://www.ruby-forum.com/.

class A
def self.var() @@var end
defl self.var=(v) @@var = v end
end

A.var = 1
A.var

If you try to access a class variable before it is set, the
interpreter will throw a NameError at you.

Blessings,
TwP

On Oct 10, 2006, at 5:18 PM, Dipesh B. wrote:

end

but its seems that the Ruby interpreter is not liking this. Can
someone
tell me how to create class level attributes that can read and write.

#! /usr/bin/env ruby -w

class A
class << self
attr_accessor :foo
end
end

A.foo = ‘bar’
A.foo # => “bar”

Regards, Morton

On Oct 11, 6:56 am, Morton G. [email protected] wrote:

def self.selected_client=(value)
attr_accessor :foo
end
end

A.foo = ‘bar’
A.foo # => “bar”

Regards, Morton

What means ‘class << self’ ? I don’t understand…

Plz anyone let me know secret ; )

Thanks.

On 10/10/06, Mait [email protected] wrote:

What means ‘class << self’ ? I don’t understand…

Plz anyone let me know secret ; )

Thanks.

The ‘class << self’ notation gives you access to the Singleton class
for the object ‘self’.

There is a great explanation on the RubyGarden wiki page …

http://wiki.rubygarden.org/Ruby/page/show/SingletonTutorial

It is much better than my on line explanation.

Blessings,
TwP

On Oct 11, 7:28 am, “Tim P.” [email protected] wrote:

There is a great explanation on the RubyGarden wiki page …

http://wiki.rubygarden.org/Ruby/page/show/SingletonTutorial

It is much better than my on line explanation.

Blessings,
TwP

Thanks Tim,

Hi –

On Wed, 11 Oct 2006, Tim P. wrote:

end
def self.var() @@var end
defl self.var=(v) @@var = v end
end

A.var = 1
A.var

I’d steer clear of class variables unless there’s some very compelling
reason to use them. Classes can have regular attributes:

class C
def self.x
@x
end
def self.x=(value)
@x = value
end
end

I realize Dipesh said “class level”, which could mean specifically
using class variables, but then again, class variables aren’t really
class level (they’re class/sub[sub[…]]class/instances-level).

David

I’ve been trying to programmatically issue MSN Searches and processing
the results. I’m having a hell of a time doing it and was wondering
whether anyone had some coding or debugging advice.

First, I tried wsdl2ruby to generate some classes to work with, but it
pukes:

C:\temp>wsdl2ruby.rb --wsdl
http://soap.search.msn.com/webservices.asmx?wsdl --type client --force
ignored element: {http://www.w3.org/2001/XMLSchema}list
ignored attr: {}default
ignored attr: {http://schemas.xmlsoap.org/ws/2004/08/addressing}Action
I, [2006-10-10T16:36:52.259000 #2608] INFO – app: Creating class
definition.
W, [2006-10-10T16:36:52.259000 #2608] WARN – app: File ‘default.rb’
exists but overrides it.
F, [2006-10-10T16:36:52.275000 #2608] FATAL – app: Detected an
exception. Stopping … incomplete simpleType (ArgumentError)
C:/program files/ruby/lib/ruby/1.8/wsdl/xmlSchema/simpleType.rb:33:in
`base’
C:/program files/ruby/lib/ruby/1.8/wsdl/soap/classDefCreator.rb:217:in
[snip]

(BTW, wsdl2ruby works with http://api.google.com/GoogleSearch.wsdl.)

Second, I tried this code:

require ‘soap/wsdlDriver’
wsdl_url = ‘http://soap.search.msn.com/webservices.asmx?wsdl
soap = SOAP::WSDLDriverFactory.new( wsdl_url ).create_rpc_driver

msn_params = { ‘AppID’ => ‘1064081Cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’,
‘Query’ => ‘ruby programming language’,
‘CultureInfo’ => ‘en-US’,
‘SafeSearch’ => ‘Strict’,
‘Flags’ => ‘None’,
‘Requests’ => {
‘SourceRequest’ => {
‘Source’ => ‘Web’,
‘Offset’ => 0,
‘Count’ => 10,
‘ResultFields’ => ‘All’
}
}
}

soap.search(:Request => msn_params)

And got this:

irb(main):020:0* soap.search(:Request => msn_params)
ArgumentError: incomplete simpleType from c:/Program F
iles/ruby/lib/ruby/1.8/wsdl/xmlSchema/simpleType.rb:25:in
check_lexical_fo rmat' from c:/Program Files/ruby/lib/ruby/1.8/soap/mapping/wsdlliteralregistry.rb:113:insimpleob
j2soap’
[snip]

Note: the Python equivalent of this code works just fine, so I think it
has something to do with the way Ruby is processing SOAP.

Third, I tried to do it without SOAP:

require ‘rubygems’
require ‘open-uri’
require ‘rubyful_soup’
url =
http://search.live.com/results.aspx?q=ruby+programming+language&mkt=en-
us&FORM=LVSP&go.x=0&go.y=0&go=Search”
page = open(url)
page_content = page.read
soup = BeautifulSoup.new(page_content)

and I get this:

irb(main):007:0> soup = BeautifulSoup.new(page_content)
ArgumentError: invalid value for Integer: “0183”
from c:/Program
Files/ruby/lib/ruby/gems/1.8/gems/htmltools-1.10/lib/html/sgml-parser.rb
:335
:in Integer' from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/htmltools-1.10/lib/html/sgml-parser.rb :335 :inhandle_charref’
from c:/Program
Files/ruby/lib/ruby/gems/1.8/gems/htmltools-1.10/lib/html/sgml-parser.rb
:159
:in `goahead’

My next step is do to HTree/REXML, but I’d much rather use SOAP or
BeautifulSoup to do this. Anyone got ideas?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs