Гем ApiAuth + ActiveResource

Я пытаюсь заставить ApiAuth работать с ActiveResource, и мне не повезло. Документация предлагает это как способ использования драгоценного камня:

class Foo < ActiveResource::Base
  with_api_auth("foo", "bar")
end

Это приводит к следующей ошибке:

NoMethodError: undefined method `with_api_auth' for Foo:Class

Я знаю, что библиотека api_auth доступна, потому что, когда я

require 'api_auth' 

я получаю «false», что, как я полагаю, означает, что библиотека/драгоценный камень уже загружен.

Кроме того, я выбрал модуль/класс, в котором определен with_api_auth, и не получил ошибку:

2.3.8 :004 > 
ApiAuth::Rails::ActiveResourceExtension::ActiveResourceApiAuth
=> ApiAuth::Rails::ActiveResourceExtension::ActiveResourceApiAuth
2.3.8 :005 >

Я нашел пару проблем с этой точной ошибкой в ​​​​проекте api_auth github, но ни у одного из них не было решений, которые сработали для меня.

Кто-нибудь еще видит эту ошибку или знает, как ее устранить?


person jaydel    schedule 02.07.2019    source источник
comment
github.com/mgomes/api_auth/issues/28 Помогает ли это? Какая у вас запись в Gemfile для этого?   -  person Anuj Khandelwal    schedule 02.07.2019
comment
Нет, это не исправило ситуацию для меня. Однако github.com/mgomes/api_auth/issues/113 действительно направил меня по правильному пути. Я предлагаю свое решение в качестве ответа на мой вопрос.   -  person jaydel    schedule 02.07.2019


Ответы (1)


Так что, в конце концов, это был порядок драгоценных камней в моем Gemfile, который имел значение. Это закончилось проблемой заказа в моем Gemfile. Я нашел проблему (113) в списке проблем gem github, в которой говорилось, что заказ был правильным, делая:

gem 'activeresource'
gem 'api-auth'

Первоначально это не сработало, и в конечном итоге это произошло потому, что вам больше не нужно явно указывать активный ресурс в вашем Gemfile. Итак, я переместил gem 'api-auth' последнюю строку в свой Gemfile, и все заработало.

Я не знаю точно, но я думаю, что это связано с тем, как миксины загружаются при установке пакета. «думать» — самое важное слово в этом утверждении.

person jaydel    schedule 02.07.2019
comment
да, вы правы, сначала нужно загрузить активный ресурс в среде Rails, чтобы зарегистрировать аутентификацию API с активным ресурсом. Проверьте это github.com/mgomes/api_auth/blob /master/lib/api_auth/, вы обнаружите, что аутентификация API ищет активный ресурс и регистрирует расширения аутентификации API с активным ресурсом. - person Anil Cherukuri; 08.08.2019