首页 > 解决方案 > Google::Cloud::Translate.new 在生产环境中提出的未初始化常量 Google::Cloud

问题描述

我有一个 GoogleTranslate 服务,可以翻译我的应用程序中的文本。该功能适用​​于本地主机,但在生产中它会提高

未初始化的常量 Google::Cloud 在我的应用程序/helpers/google_translations_helper.rb:4:in `initialize'...

这是Gemfile相关部分:

# use of google API
gem 'google-api-client', '~> 0.11', :require  => 
'google/apis/analyticsreporting_v4'
gem 'omniauth-google-oauth2'
gem "google-cloud-translate"

这是helper/service初始化程序:

module GoogleTranslationsHelper
 class GoogleTranslate
  def initialize
    @translation_service = Google::Cloud::Translate.new
  end

  def translate(text)
    @translation_service.translate text.to_s, from: "fr", to: "en"
  end
 end
end

我想知道我是否没有错过关于 gem 版本或类似的东西..

有人已经有问题了吗?

标签: ruby-on-railsrubygoogle-api

解决方案


我假设您正在运行 Rails。确保您包括:

require "google/cloud/translate"

在某个合理的地方,无论是在创建客户端对象的文件顶部(app/helpers/google_translations_helper.rb在您的情况下),还是在全局初始化文件中,例如config/application.rb. (与大多数库一样,google-cloud-translate 库需要您先要求它才能使用它。有关示例,请参阅文档中的片段。)

我并不完全清楚为什么这在您的开发和生产环境之间的工作方式不同,但是两个环境之间的初始化过程通常有很多差异,所以这并不奇怪。只需确保您习惯在使用任何库之前都需要它。

作为旁注,我还建议更新您的 Gemfile 以调用更新版本的 Google 客户端库。或者至少确保你最近完成了bundle update. 在撰写本文时,google-api-client 0.11 已经超过 2 年了;最新的是 0.30.8。而 google-cloud-translate 是 1.3.0。如果您使用的是旧版本,则总是可能存在问题。


推荐阅读