Я пытаюсь использовать 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