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