在我的Rails应用程序中,我需要使用AWS转录服务。但是,当我尝试从ActiveJob内部创建AWS客户端时,Sidekiq日志总是给我NameError: uninitialized constant Aws::TranscribeService
。但是,当我尝试直接从Rails控制台创建客户端时,它并没有抱怨。这是我的密码。
/app/job/transcript_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
Gemfile
# 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 SDK的正确方法是什么?谢谢你的帮助。
注释中Arieljuod的解决方案有效。这是完整的代码:
/app/job/transcript_audio_job.rb
require 'aws-sdk-transcribeservice'
class TranscribeAudioJob < ApplicationJob
queue_as :default
def perform(job_id)
job = TranscriptionJob.find(job_id)
client = Aws::TranscribeService::Client.new(
region: 'eu-west-1'
)
p client
end
end