0

在我的 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 开发工具包的正确方法是什么?谢谢你的帮助。

4

1 回答 1

0

Arieljuod 在评论中的解决方案有效。这是完整的代码:

/app/job/transcribe_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
于 2020-11-23T01:41:23.217 回答