【问题标题】:Rails ActiveJob can't load aws-sdk-transcribeserviceRails ActiveJob 无法加载 aws-sdk-transcribeservice
【发布时间】: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


【解决方案1】:

评论中 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多