FYI: File.join will add the slash between arguments.
When you use UI::HtmlDialog#set_html it writes a temporary file to the TEMP path folder. So the CEF subprocess would likely be looking for the resource in the TEMP folder.
Absolute paths are always a good way to avoid ambiguity of file location.