It's more idiomatic to use File.join(name + FOLDER_EXTENSION, METADATA_FILENAME) for the argument of find_on_tasks_path (since name is a String, there's no point in saying "#{name}")

Since find_on_task_paths now is only ever called with a single argument, and since constructing the actual file to look for is a little ugly, I'd change the signature of find_on_task_paths to find_on_task_paths(name, filename) and have that do the construction of the whole path (name + FOLDER_EXTENSION + ...)