Как предполагается использовать ShopifyAPI :: GraphQL из драгоценного камня shopify_api? (неопределенный метод `path = ') - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь использовать ShopifyAPI :: GraphQL из драгоценного камня shopify_api, который, кажется, хорошо работает в моей локальной среде, но у меня возникают проблемы в моей среде Heroku.

Первая ошибка, похоже, связана с ошибкой в ​​геме shopify_api и была исправлена ​​путем установки версии API, т.е. ShopifyAPI :: Base.api_version = "2019-10" (даже если она уже была установлена ​​в config / initializers / shopify_app.rb с config.api_version = "2019-10").

Продолжая, я получаю следующую ошибку при запуске сервера в среде Heroku:

NoMethodError: undefined method `path=' for nil:NilClass
info   /app/vendor/bundle/ruby/2.5.0/gems/shopify_api-8.1.0/lib/shopify_api/resources/graphql.rb:10:in `initialize'

Просмотр строк в файле graphql.rb из shopify_api что не получается:

uri = Base.site.dup #line 9
uri.path = Base.api_version.construct_graphql_path #line 10

похоже, это связано с тем, что Base.site имеет значение nil, что имеет смысл, поскольку в момент запуска сервера сеанс отсутствует.

Как Насколько я вижу, запросы graphql должны быть константами, и, поскольку они ссылаются на клиента graphql, я создаю экземпляр клиента graphql в качестве параметра класса:

@@client = ShopifyAPI::GraphQL.new

Приведенная выше строка кажется, инициализируется во время запуска сервера (я очень новичок в rails), и, как уже упоминалось, ошибка возникает из-за того, что нет сеанса и, следовательно, нет сайта в то время.

Поэтому я должен использовать компонент graphql неправильно , У меня вопрос, как я должен использовать класс ShopifyAPI :: GraphQL? Куда мне, например, поместить код ShopifyAPI :: GraphQL.new?

Или, чтобы сделать вопрос более общим - клиенту graphql требуются запросы, и, следовательно, клиент graphifyl ShopifyAPI :: GraphQL должен быть определен как константа. Как предотвратить инициализацию констант во время запуска сервера, поскольку при запуске сервера нет сеанса, который требуется при инициализации клиента graphql?

Спасибо, -Louise

...