Rails 2.3 Upgrade Issue with MemCache

One of the plugins I use is Workling. It throws the following error when I try to run it under 2.3:

/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/ dependencies.rb:443:in `load_missing_constant': uninitialized constant MemCache (NameError)

The offending line is:

      @@memcache_client_class ||= ::MemCache

I don't know a lot about memcache, so I'm not sure what changed with 2.3 that could cause the error. Anyone have some ideas?

Thanks! Tom

I'm not sure why this happens, BUT in rails 2.3.2 you have to wrap your Workling loader a after_init like so:

config.after_initialize do   Workling::Remote.dispatcher = Workling::Remote::Runners::StarlingRunner.new end

I'm having the same issue as Tom, but I'm not using Starling. I'm using spawn. I don't have anything in an initializer to wrap in a after_initialize.

Any ideas how to get workling to work in 2.3?

Steve

Steve,

Try throwing require 'memcache' in your environment.rb? I think that is how I finally got around it...

Thanks, Tom

Thanks Tom. The crappy part is I'm not using memcache for anything at the moment.

Steve

Ugh. But did it solve the problem?

Unfortunately it didn't solve the problem. I guess I could switch over to starling and that might solve it.

Steve,

I put a debugger statement in the plugin to figure out the problem. The error is definitely telling you that memcache hasn't been loaded. You may need to move that require 'memcache' statement around to make sure it is loading. Let me know what you find...

Thanks, Tom

Hi guys,

I got the same problem this morning. workling throws memcache error on 2.3 Found out that after_init solution works. And if you are using workling + spawner, these lines work fine with me

config.after_initialize do    Workling::Remote::Runners::SpawnRunner.options = { :method => :spawn }    Workling::Remote.dispatcher = Workling::Remote::Runners::SpawnRunner.new end

Cheers!

I was having the same problem. I use NotRemoteRunner in dev mode and StarlingRunner in production right now. I found that putting the following code in development.rb solved my problem:

config.after_initialize do   Workling::Remote.dispatcher = Workling::Remote::Runners::NotRemoteRunner.new end

Thanks!

-ajg-

Freddy Andersen wrote: