Я пытаюсь использовать 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 равен нулю, что имеет смысл, поскольку во время запуска сервера нет сеанса.
Насколько я вижу, запросы graphql должны быть константами, и поскольку они ссылаются на клиент graphql, я создаю экземпляр клиента graphql в качестве параметра класса:
@@client = ShopifyAPI::GraphQL.new
Вышеупомянутая строка, кажется, инициализируется во время запуска сервера (я очень новичок в рельсах), и, как уже упоминалось, ошибка возникает из-за отсутствия сеанса и, следовательно, сайта в то время.
Так что я должен неправильно использовать компонент graphql. Мой вопрос в том, как я должен использовать класс ShopifyAPI::GraphQL? Где я должен, например. разместить код ShopifyAPI::GraphQL.new?
Или, чтобы сделать вопрос более общим - клиент graphql требует, чтобы запросы и, следовательно, клиент graphql ShopifyAPI:: GraphQL определялись как константы. Как предотвратить инициализацию констант во время запуска сервера, поскольку при запуске сервера нет сеанса, необходимого при инициализации клиента graphql?
Спасибо, -Луиза