Я обновил свой Gemfile и обновили гемы rotp (4.1.0) и active_model_otp (1.2.0).С тех пор я начинаю получать сообщение об ошибке при вызове метода @ user.otp_code, связанного с Модальностью пользователя «неправильное количество аргументов (дано 2, ожидается 1)»
/usr/local/lib/ruby/gems/2.3.0/gems/rotp-4.1.0/lib/rotp/totp.rb:17:in `at'
/usr/local/lib/ruby/gems/2.3.0/gems/active_model_otp-1.2.0/lib/active_model/one_time_password.rb:77:in `otp_code'
/home/app/controllers/api/v1/users_controller.rb:745:in `resetpassword'
, насколько я в этом разбираюсь, янашел это.проблема в аргументах, кажется, что последний камень RotP был обновлен по методу ниже, чтобы принимать только 1 аргумент вместо 2 по сравнению со старой версией (3.3.1)
, так как необязательный параметр был удален, active_model_otp-1.2.0 гем выдает ошибку в строке номер 77
согласно rotp-4.1.0
def at(time)
generate_otp(timecode(time))
end
согласно rotp-3.3.1
def at(time, padding=true)
unless time.class == Time
time = Time.at(time.to_i)
end
generate_otp(timecode(time), padding)
end
Я попытался внести изменения в драгоценный камень, как показано ниже:
def otp_code(options = {})
if otp_counter_based
if options[:auto_increment]
self.otp_counter += 1
save if !new_record?
end
ROTP::HOTP.new(otp_column, digits: otp_digits).at(self.otp_counter)
else
if options.is_a? Hash
time = options.fetch(:time, Time.now)
padding = options.fetch(:padding, true)
else
time = options
padding = true
end
# ROTP::TOTP.new(otp_column, digits: otp_digits).at(time, padding)
# -- Commented Above Line to remove padding arguments from it.
ROTP::TOTP.new(otp_column, digits: otp_digits).at(time)
end
end
он работал, но не уверен, что еще сломается, драгоценный камень активной модели последний раз обновлялся в 2015 году, а rotp обновлялся несколько месяцев назад.Пожалуйста, предложите подходящий метод, если я вернусь к предыдущей версии gem ротп, то что еще сломается.Я как бы застрял.
любезно помогите.