Зачем вызывать метод с?вдруг получить параметр передается к нему?К вашему сведению, я обновился до 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'