NoMethodError в AuthenticationsController # создать неопределенный метод RandomString для String: Class - PullRequest
1 голос
/ 04 октября 2011

Я следую этому руководству для установки omniauth в devise + mongoid:

https://github.com/fertapric/rails3-mongoid-devise-omniauth/wiki/OmniAuth-Installation-Tutorial

У меня есть устройство 1.4.5 + omniauth 0.3.0 + rails 3.1.0.

В моем devise.rb есть следующая информация:

config.omniauth :facebook, 'My_CONSUMER_KEY', 'MY_CONSUMER_SECRET', :scope => 'user_hometown, user_about_me, email'

В этом руководстве эта конфигурация создает файл initializers / omniauth.rb.

Когда я возвращаюсь к обратному вызову в Facebook, я улавливаю эту ошибку:

NoMethodError in AuthenticationsController#create

undefined method `RandomString' for String:Class

app/models/user.rb:39:in `apply_trusted_services'
app/models/user.rb:23:in `apply_omniauth'
app/controllers/authentications_controller.rb:33:in `create_new_omniauth_user'
app/controllers/authentications_controller.rb:16:in `create'

Я тоже создал файл в lib / string_extensions.rb с этим кодом:

module StringExtensions
  def self.included(base) 
    String.extend StringExtensions::ClassMethods
  end
  module ClassMethods
    RAND_CHARS = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789"
    def RandomString(len)
      rand_max = RAND_CHARS.size
      ret = ""
      len.times{ ret << RAND_CHARS[rand(rand_max)] }
      ret
    end
  end
end

В чем моя проблема

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Вам необходимо включить загрузку модулей в вашем application.rb

0 голосов
/ 04 октября 2011

Вы можете поместить это в config/initializers, и он будет загружен автоматически, в противном случае вам придется вручную загружать его из lib/, используя грязный require

...