It seems odd that cattr_* (i.e. cattr_accessor, cattr_reader,
cattr_writer) is not in the native Ruby and that you have to require
active support and rubygems to get this to work. Including the rails
stuff appears to slow things down a little. Why is this not built in the
native Ruby source?
···
--
Posted via http://www.ruby-forum.com/.
Note that you can do the same using:
···
El Viernes, 5 de Septiembre de 2008, Jason Lillywhite escribió:
It seems odd that cattr_* (i.e. cattr_accessor, cattr_reader,
cattr_writer) is not in the native Ruby and that you have to require
active support and rubygems to get this to work. Including the rails
stuff appears to slow things down a little. Why is this not built in the
native Ruby source?
------------
class MyClass
class << self
attr_accessor :class_attribute_1, :class_attribute_2
end
end
-----------
So you can use it:
----------
MyClass.class_attribute_1 = something
---------
--
Iñaki Baz Castillo
Hi --
It seems odd that cattr_* (i.e. cattr_accessor, cattr_reader,
cattr_writer) is not in the native Ruby and that you have to require
active support and rubygems to get this to work. Including the rails
stuff appears to slow things down a little. Why is this not built in the
native Ruby source?
I can't answer that directly, but I can tell you why I'm glad it
isn't. It's partly that class variables are a bit oddball to start
with, and I'm not eager to see them used a lot more. But it's also the
terminology.
An "attribute" is, or should be, an attribute of an object. But class
variables are not object-specific; they're very promiscuous, visible
to a class, its instances, and all the subclasses and all their
instances.
Therefore, a class variable is not an appropriate choice for
representing an "attribute". The fit between instance variables, as a
language-level construct, and "attribute", as a concept, is very good;
but class variables are very different from instance variables, and
the "attr" terminology is very loose. (The methods may have uses, but
the names are problematic.)
David
···
On Sat, 6 Sep 2008, Jason Lillywhite wrote:
--
Rails training from David A. Black and Ruby Power and Light:
Intro to Ruby on Rails January 12-15 Fort Lauderdale, FL
Advancing with Rails January 19-22 Fort Lauderdale, FL *
* Co-taught with Patrick Ewing!
See http://www.rubypal.com for details and updates!
It seems odd that cattr_* (i.e. cattr_accessor, cattr_reader,
cattr_writer) is not in the native Ruby
I can not answer this but personally I have stopped using class
variables after
- i had a smallish bug which was caused by a stupid usage I did long ago
of a class variable
- there really is not a huge need to use a class var in the first place
(in my opinion and experience).
So personally, for me, I have found that I can live perfectly happy
without class vars, and in these times, whenever I can achieve the same
with a very simple easy route, I use it. There may be a few valid use
cases for a class var but I honestly have never seen them as being very
important.
···
--
Posted via http://www.ruby-forum.com/\.
Thanks. That makes sense. I want to do what is simplest, but it seems
without cattr things would get worse. Here is what I'm trying to do:
I have one rb file used for inputs:
require 'rubygems'
require 'activesupport'
class Input
cattr_reader :y
def self.y
@y = 2
end
end
**except I have lots of vars instead of just :y and I'm assigning them
values here.
Then I go to a new rb file and do this:
require 'firstfile.rb'
class NewClass
def do_something
Input.y * 2.3
end
end
new = NewClass.new
p new.do_something
**The fact that I need to say "Input.y" seems very bulky. Is there a
better way to do this? Plus, if I get away from class vars, it will get
bulkier. any ideas?
···
--
Posted via http://www.ruby-forum.com/.