ruby-on-rails - 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 版本或类似的东西..
有人已经有问题了吗?
解决方案
我假设您正在运行 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。如果您使用的是旧版本,则总是可能存在问题。
推荐阅读
- excel - VBA 使用 Excel 2016 填充 Word 2016 内容控件
- r - dygraph 中的时间标签与时间序列数据中的时间标签不同。我该如何解决这个问题?
- python - 如何使用 cssSelector :nth-child(n) 在 Python Selenium 中定位元素
- php - 使用命令“composer install --no-dev --optimize-autoloader”下载翼龙时出错
- cakephp - 如何修复 Cakephp 4 Composer 安装错误
- model-view-controller - 使用令牌 WebAPI 对 MVC 应用程序进行身份验证
- android - 点击事件上的片段重叠?- 安卓
- javascript - 在 react-native 中从客户端 TCP IP 读取消息
- python-3.x - 如何使用可用于 aws lambda 函数的 goofy 将 s3 存储桶上的文件安装到 aws ec2 实例?
- c++ - 重载减量运算符时使用的额外参数是什么?