【发布时间】:2023-03-21 02:48:01
【问题描述】:
在我的 Rails 应用程序中,我需要使用 AWS Transcribe 服务。但是,当我尝试从 ActiveJob 内部创建 AWS 客户端时,Sidekiq 日志总是给我NameError: uninitialized constant Aws::TranscribeService。但是,当我尝试直接从 Rails 控制台创建客户端时,它并没有抱怨。这是我的代码。
/app/job/transcribe_audio_job.rb
class TranscribeAudioJob < ApplicationJob
queue_as :default
def perform(job_id)
job = TranscriptionJob.find(job_id)
# This line always show: NameError: uninitialized constant Aws::TranscribeService
client = Aws::TranscribeService::Client.new(
region: 'eu-west-1'
)
p client
end
end
宝石文件
# AWS SDK
gem 'aws-sdk-rails', '~> 3'
gem 'aws-sdk-transcribeservice', '~> 1.50'
如果我直接在 Rails 控制台中尝试,上面的代码就可以工作。
client = Aws::TranscribeService::Client.new(
region: 'eu-west-1'
)
# <Aws::TranscribeService::Client> <- The result in the Rails console
从 ActiveJob 使用 AWS 开发工具包的正确方法是什么?感谢您的帮助。
【问题讨论】:
-
我会尝试在文件开头添加
require 'aws-sdk-transcribeservice'。 -
您的应用中是否有任何
Aws文件夹并将其用作命名空间? -
谢谢,Ariejuod。你的建议是有效的。我没想到。
标签: ruby-on-rails aws-sdk rails-activejob aws-transcribe aws-sdk-ruby