Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么要再次创建相同的任务?_Ruby - Fatal编程技术网

Ruby 为什么要再次创建相同的任务?

Ruby 为什么要再次创建相同的任务?,ruby,Ruby,下面是我为与API(Habitica)接口而编写的代码摘录。下面的代码旨在创建一个任务,除非已经存在同名的任务。但是,在实践中,它将继续一次又一次地创建同名任务(尽管该任务已成功添加到任务列表中)。当我重新启动这个程序并重复时,它就会知道任务已经在那里了 def task_exists?(text) @habit.tasks.todos.any? { |t| t.text == text } end # create task def create_task(text) if ta

下面是我为与API(Habitica)接口而编写的代码摘录。下面的代码旨在创建一个任务,除非已经存在同名的任务。但是,在实践中,它将继续一次又一次地创建同名任务(尽管该任务已成功添加到任务列表中)。当我重新启动这个程序并重复时,它就会知道任务已经在那里了

def task_exists?(text)
    @habit.tasks.todos.any? { |t| t.text == text }
end

# create task
def create_task(text)
  if task_exists?(text)
    puts "\nTask already exists. No action taken!"
  else
    puts "\nCreating #{text}..."
    @habit.tasks.create(
    text: text,
    type: 'todo'
    )
  end
end
这可能是由于我的代码中的逻辑流造成的吗?也就是说,是否有明显的迹象表明该方法无法看到更新的任务列表,或者我是否可以确保在不需要重新启动程序的情况下搜索“更新的”列表


谢谢。

TODO是如何定义的?可能是缓存-如果某个地方正在缓存
@habity
(或
@habity.tasks
@habity.tasks.todos
),请确保在添加新任务或检查任务是否存在时已刷新缓存。这肯定是缓存。如何定义
@habity.tasks
@habity.tasks.todo
@habity
是连接到API的凭据的全局变量<代码>@HabiticaClient.new(ENV['HABITICA\u USER\u ID',ENV['HABITICA\u API\u TOKEN')```@habitic.tasks和
@habitic.tasks.todo
由我试图将脚本连接到的API处理:。。。也许问题在于here@omnikron你应该把它贴出来作为答案。