Issue #5264 has been updated by Charlie Savage.


Ok, can reproduce like this:

require 'rubygems'
require 'redis-namespace'
require 'redis-store'

Which when you go look at the gems source ends up like this:

# from redis-namespace (lib/redis/namespace.rb)
class Redis
  class Namespace
  end
end

# from redis-store (lib/redis/store/namespace.rb)
class Redis
  class Store < self
    module Namespace
    end
  end
end

I can see why Ruby is complaining, but this code works on 1.8.7 and did work on 1.9.3 until commit 33157.
----------------------------------------
Bug #5264: Commit 33157
http://redmine.ruby-lang.org/issues/5264

Author: Charlie Savage
Status: Feedback
Priority: Normal
Assignee: 
Category: core
Target version: 1.9.3
ruby -v: r33157


It appears this commit:

https://github.com/ruby/ruby/commit/43284b6bf8324a762808537d5cd2c0774b662a84

Breaks our test suite, with this error from the redis namespace gem.  Here is a trackeback from our Rails app:

Namespace is not a module
/usr/lib/ruby/gems/1.9.1/bundler/gems/redis-store-b70b9326d083/lib/redis/store/namespace.rb:3:in `<class:Store>'
/usr/lib/ruby/gems/1.9.1/bundler/gems/redis-store-b70b9326d083/lib/redis/store/namespace.rb:2:in `<class:Redis>'
/usr/lib/ruby/gems/1.9.1/bundler/gems/redis-store-b70b9326d083/lib/redis/store/namespace.rb:1:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:240:in `require'
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:240:in `block in require'
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:223:in `block in load_dependency'
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:640:in `new_constants_in'
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:223:in `load_dependency'
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:240:in `require'
/usr/lib/ruby/gems/1.9.1/bundler/gems/redis-store-b70b9326d083/lib/redis-store.rb:6:in `<top (required)>'

Line 6 in redis-store.rb is:

require "redis/store/namespace"

And then the top of namespace looks like this:
class Redis
  class Store < self
    module Namespace

Not sure if this is an intentional change or not, but a heads up its breaks the gem.

Thanks - Charlie

Note the ruby -v version attached to the ticket isn't the one I used for testing.


-- 
http://redmine.ruby-lang.org