Skip to content

Instantly share code, notes, and snippets.

@chad
Created May 8, 2012 14:58
Show Gist options
  • Select an option

  • Save chad/2635951 to your computer and use it in GitHub Desktop.

Select an option

Save chad/2635951 to your computer and use it in GitHub Desktop.

Revisions

  1. chad revised this gist May 8, 2012. 1 changed file with 4 additions and 20 deletions.
    24 changes: 4 additions & 20 deletions test.rb
    Original file line number Diff line number Diff line change
    @@ -1,33 +1,17 @@

    module Foo
    def self.included(klass)
    klass.extend ClassMethods
    end

    module ClassMethods
    def foo
    str = "test"
    class_eval do
    attr_accessor str
    class << self
    attr_accessor str
    end
    end
    def foo(name)
    (class << self; self; end).send :attr_accessor, name
    end
    end
    end

    class Bar
    include Foo

    foo
    foo("test")
    end

    Bar.test


    $ ruby ~/Desktop/test.rb
    /Users/test/Desktop/module.rb:12:in `foo': undefined local variable or method `str' for #<Class:Bar> (NameError)
    from /Users/test/Desktop/module.rb:9:in `class_eval'
    from /Users/test/Desktop/module.rb:9:in `foo'
    from /Users/test/Desktop/module.rb:22
    p Bar.test
  2. @josh-m-sharpe josh-m-sharpe created this gist May 8, 2012.
    33 changes: 33 additions & 0 deletions test.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@

    module Foo
    def self.included(klass)
    klass.extend ClassMethods
    end

    module ClassMethods
    def foo
    str = "test"
    class_eval do
    attr_accessor str
    class << self
    attr_accessor str
    end
    end
    end
    end
    end

    class Bar
    include Foo

    foo
    end

    Bar.test


    $ ruby ~/Desktop/test.rb
    /Users/test/Desktop/module.rb:12:in `foo': undefined local variable or method `str' for #<Class:Bar> (NameError)
    from /Users/test/Desktop/module.rb:9:in `class_eval'
    from /Users/test/Desktop/module.rb:9:in `foo'
    from /Users/test/Desktop/module.rb:22