Почему неопределенная локальная переменная или метод 'args' - PullRequest
0 голосов
/ 07 мая 2019

Зачем вызывать метод с?вдруг получить параметр передается к нему?К вашему сведению, я обновился до Mongoid 5.0

В трассе ниже указано, что проблема в строке 18 синглтона.Я не уверен, как он попадает в эту строку, поскольку в mongodb есть 1 объект «Настройки», поэтому его не следует создавать?

Объект:

class Settings
  include Mongoid::Document
  field :use_kue, :type => Boolean, :default => false
  field :api_url, :type => String
  field :online_reason, :type => String

  def self.singleton
    s = Settings.first  
    if s.nil?
      s = Settings.create <---- the line causing the issue
    end
    s
  end

  def self.use_kue?
    s = Settings.singleton
    s.use_kue
  end
end

Вызывается:

if Settings.use_kue?
 .....
end

Трассировка стека:

Started GET "/ems/admin" for 70.124.147.246 at 2019-05-06 21:57:14 +0000 
May 06 16:57:15  app/web.1: Processing by EmController#admin as HTML 
May 06 16:57:15  app/web.1: Completed 500 Internal Server Error in 8ms 
May 06 16:57:15  app/web.1: NameError (undefined local variable or method `args' for SendGrid::Settings:Class): 
May 06 16:57:15  app/web.1:   app/models/settings.rb:18:in `singleton' 
May 06 16:57:15  app/web.1:   app/controllers/em_controller.rb:45:in `admin'

Исправление:

Кое-что со следующими Ruby, rails или MongoID НЕ любит модели с именами 's' (Настройка вместо Настройкиработал).Я думаю, 1.9, Rails 4 и старый MongoID были более щадящими.

ruby ​​'2.4.2' gem 'rails', '~> 4.2.8' gem 'mongoid', '~> 5.0.0'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...