News for hackers. Stuff that matters.
Re:Rubinius X, an experiment in modernizing Ruby by comex on Tuesday October 15, 2013 @02:22PM (#6555267)
> Global Variables

> Gone. Period.

That's pretty extreme. What is supposed to replace them?

Re:Rubinius X, an experiment in modernizing Ruby by lobster_johnson on Tuesday October 15, 2013 @02:34PM (#6555343)
It's not really extreme. You can, and should, easily provide globals through attributes on classes and modules (which are globals themselves):

    module Foot
      @size = 10
      class << self
        attr_accessor :size
      end
    end

    Foot.size = 8
ActiveSupport gives you "mattr_accessor" and "class_attribute" to accomplish the same thing with less code.

In my opinion, class/module-level attributes are useful enough that it ought to be provided by the language itself.

Edit: Come to think of it, most people, that I have seen, use globals to set constants. That currently has perfectly good syntax:

    module Foot
      SIZE = 10
    end

    print Foot::SIZE
Re:Rubinius X, an experiment in modernizing Ruby by cheald on Tuesday October 15, 2013 @02:56PM (#6555524)
Sans ActiveSupport, you can achieve the same things by just opening class/module eigenclass:

    module Foo
      class << self
        attr_accessor :bar
      end
    end

    Foo.bar = "baz"
Re:Rubinius X, an experiment in modernizing Ruby by lobster_johnson on Tuesday October 15, 2013 @02:59PM (#6555547)
Sure, but wasn't that exactly what I wrote in my first example?
Re:Rubinius X, an experiment in modernizing Ruby by cheald on Tuesday October 15, 2013 @06:03PM (#6556670)
Oy, it is. Sorry; my brain is apparently missing its reading comprehension hat today.