2010-05-09 42 views
9

我想獲得OAuth寶石與Rails 3一起工作,我遇到了這個奇怪的問題......(獨立於寶石,我想我已經遇到過這一次)第一次調用Controller,定義了常量,第二次調用「未初始化的常量Oauth」?

我有一個名爲「OauthTestController」的控制器和一個名爲「ConsumerToken」的模型。模型看起來像這樣。

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

當我去「/ oauth_test /嘰嘰喳喳」,它加載Oauth::Models::Consumers::Token模塊,我能夠連接到Twitter沒有問題。但我第二次嘗試(只是刷新/oauth_test/twitter URL),它給了我這個錯誤:

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' 

這是爲什麼?它可能與加載路徑有關或處於開發模式?

+0

它是否在生產模式下工作? – 2010-07-01 07:42:55

回答

5

嘗試使用require_or_load而不是require。每次開發時都會強制滿負荷,有時可以幫助解決這類問題。

2

是的,這與處於開發模式有關。在你的development.rb中設置config.cache_classes = true得到它的工作(但是是一個痛苦的屁股)