我正在尝试使用 shopify_api gem 中的 ShopifyAPI::GraphQL,它似乎在我的本地环境中运行良好,但我在 Heroku 环境中遇到了问题。
第一个错误似乎与 shopify_api gem 中的错误有关,并通过设置 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'
查看来自 shopify_api 的 graphql.rb 文件中失败的行:
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-client 需要查询,因此 graphql 客户端 ShopifyAPI::GraphQL 被定义为常量。如何防止在服务器启动期间初始化常量,因为在服务器启动时没有初始化 graphql 客户端时需要的会话?
谢谢,-路易丝