我在Ruby中得到“sqs-main.rb:42:in `< module:SqsTest>':undefined method `purge' for SqsTest:Module(NoMethodError)”

czfnxgou  于 2023-06-22  发布在  Ruby
关注(0)|答案(1)|浏览(75)

我的代码:

require 'aws-sdk'

module SqsTest

    access_key_id = $access_key_id
secret_access_key=$secret_access_key
session_token = $session_token 

    sqs_client = Aws::SQS::Client.new(
        region: 'us-east-1',
        credentials:Aws::Credentials.new(access_key_id, secret_access_key,session_token )
      )
   
queue_url = sqs_client.get_queue_url(queue_name: 'test-queue').queue_url
# puts queue_url

def purge(options = {})
  options = options.merge(queue_url: '{here is the queue link}')
  resp = Aws::Plugins::UserAgent.feature('resource') do
    sqs_client.purge_queue(options)
  end
  resp.data

end

purge

end

我学到了用ruby调用方法 你只需要调用方法名,通常这对我有用,但显然在模块中它不是。我想了解为什么以及是否有人知道如何在这种情况下调用该方法。

y4ekin9u

y4ekin9u1#

我在方法名之前调用模块名,如下所示:

def SqsTest.purge

然后成功了

def SqsTest.purge(options = {})
  options = options.merge(queue_url: '{here is the queue link}')
  resp = Aws::Plugins::UserAgent.feature('resource') do
    $sqs_client.purge_queue(options)
  end
  resp.data

end

purge

相关问题