【发布时间】:2021-09-06 15:30:42
【问题描述】:
我正在尝试调试 Ruby 脚本,但我无法访问如下所示的一种方法。
def move_objects(target_folder)
s3_objects.each do |obj|
binding.pry
new_key = s3_folder ? obj.key.sub(s3_folder, target_folder) : "#{target_folder}/#{obj.key}"
obj.put(metadata: { 'new_key' => 'ok' })
obj.move_to(bucket: bucket_name, key: new_key)
end
self
end
当我在 Rails C 中这样调用方法时:
Courts::Aws::S3Util.new('bucket_name').move_objects(target_folder)
我收到以下错误。
NameError: undefined local variable or method `target_folder' for main:Object
访问此函数以调试和读取 new_key 数据的适当方法是什么?
【问题讨论】:
-
如果您不确定
target_folder的值应该是什么,那么只需使用空字符串Courts::Aws::S3Util.new('bucket_name').move_objects('')调用它并进行相应的调试。 -
target_folder是传递给函数的参数的变量名。 调用方法时需要给它一个实际值。这适用于所有编程语言中的所有方法。例如,您可以调用move_objects('example-target-folder'),也可以先分配一个局部变量,然后使用该变量调用它:cdln = "example-target-folder'; ... move_objects(cdln)。
标签: ruby-on-rails ruby pry byebug