# Add a class variable with a mixin

**URL:** <https://www.ruby-forum.com/t/add-a-class-variable-with-a-mixin/182446>\
**Category:** Ruby\
**Created:** [January 28, 2010, 8:33am UTC](https://www.ruby-forum.com/t/add-a-class-variable-with-a-mixin/182446 "2010-01-28T08:33:08Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ncho](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/9dc877/32.png) [@ncho](https://www.ruby-forum.com/u/ncho)\
**Post date:** [January 28, 2010, 8:33am UTC](https://www.ruby-forum.com/t/add-a-class-variable-with-a-mixin/182446/1 "2010-01-28T08:33:08Z")

</div>

Is it easily possible to add a class variable to a class via a Mixin?  
I’m running into insane problems. Can I access a Class’s class  
variables at all(outside of an instance), or are they otherwise private?

---

<div class="post-metadata">

**Author:** ![ncho](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/9dc877/32.png) [@ncho](https://www.ruby-forum.com/u/ncho)\
**Post date:** [January 28, 2010, 8:36am UTC](https://www.ruby-forum.com/t/add-a-class-variable-with-a-mixin/182446/2 "2010-01-28T08:36:51Z")

</div>

Actualy, I can do that. I just need to modify it externally afterwards  
by name.

---

<div class="post-metadata">

**Author:** ![ncho](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/9dc877/32.png) [@ncho](https://www.ruby-forum.com/u/ncho)\
**Post date:** [January 28, 2010, 10:41am UTC](https://www.ruby-forum.com/t/add-a-class-variable-with-a-mixin/182446/3 "2010-01-28T10:41:07Z")

</div>

2010/1/28 Gene S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Actualy, I can do that. I just need to modify it externally afterwards  
> by name.

What exactly are you trying to do? Here’s one way:

module Foo  
attr\_accessor :bar  
end

String.extend Foo

irb(main):009:0\> String.bar = “nonsense”  
=\> “nonsense”  
irb(main):010:0\> String.bar  
=\> “nonsense”  
irb(main):011:0\>

Kind regards

robert

---

<div class="post-metadata">

**Author:** ![ncho](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/9dc877/32.png) [@ncho](https://www.ruby-forum.com/u/ncho)\
**Post date:** [January 28, 2010, 10:42am UTC](https://www.ruby-forum.com/t/add-a-class-variable-with-a-mixin/182446/4 "2010-01-28T10:42:18Z")

</div>

2010/1/28 Robert K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> String.extend Foo
> 
> irb(main):009:0\> String.bar = “nonsense”  
> =\> “nonsense”  
> irb(main):010:0\> String.bar  
> =\> “nonsense”  
> irb(main):011:0\>

PS: this is not a class variable in the “classical” sense, e.g. a  
variable starting with “@@” (e.g. @@bar). It’s an instance variable  
of the class.

Kind regards

robert
