У меня была похожая проблема несколько дней назад, мне пришлось использовать const_set
для динамического задания константы.Итак, используя ваш пример, который переведет в
class Foo
def trial
#code to initialize shopify session here
set_query
client.query(ProductQuery)
end
private
def set_query
query = <<-GRAPHQL
{
shop {
name
}
}
GRAPHQL
Kernel.const_set(:ProductQuery, client.parse(query))
end
def client
ShopifyAPI::GraphQL.new
end
end
Функция GraphQL от Shopify использует Ruby-клиент Github GraphQL , который требует, чтобы запрос определялся в константе.Кроме того, shopify_api gem
предписывает существование сеанса Shopify, прежде чем вы сможете использовать этот метод, в зависимости от вашей настройки у вас может не быть определенного сеанса, если константа находится в теле класса, поскольку она выполняется сначала интерпретатором ruby.Обойти это можно, установив константу динамически