Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

First Call to a Controller, Constant is defined, Second call, "uninitialized constant Oauth"?

I am trying to get the OAuth gem to work with Rails 3 and I'm running into this weird problem... (independent of the gem, I think I've run into this once before)

I have a controller called "OauthTestController", and a model called "ConsumerToken". The model looks like this.

require 'oauth/models/consumers/token'
class ConsumerToken < ActiveRecord::Base
  include Oauth::Models::Consumers::Token
end

When I go to "/oauth_test/twitter", it loads the Oauth::Models::Consumers::Token module and I'm able to connect to twitter no problem. But the second time I try it (just refresh the /oauth_test/twitter url), it gives me this error:

NameError (uninitialized constant Oauth):
  app/models/consumer_token.rb:4
  app/models/twitter_token.rb:2
  app/controllers/oauth_test_controller.rb:66:in `load_consumer'

Why is that? It has something to do with load paths or being in development mode maybe?

like image 378
Lance Avatar asked May 09 '10 03:05

Lance


2 Answers

Try using require_or_load instead of require. That forces full load each time when in development and can sometimes help with this sort of issue.

like image 132
seriousken Avatar answered Nov 19 '22 08:11

seriousken


Yeah it's something to do with being in development mode. Setting config.cache_classes = true in your development.rb get's it working (but is a pain in the ass)

like image 2
user376459 Avatar answered Nov 19 '22 06:11

user376459