1

私の Yesod ハンドラー関数の 1 つのコードを次に示します。

import qualified Data.Text.Lazy             as LT
import qualified Data.Text.Lazy.Builder     as TLB

SomeRouteR= do
    -- ................
    code <- someFuncAccessDB
    render <- getUrlRenderParams
    let tmpl = $(textFileReload "templates/some.txt")
        sms_content = LT.toStrict $ TLB.toLazyText $ tmpl render
    $(logDebug) $ "trying to send SMS: " `mappend` sms_content
    -- ....

「some.txt」には次のような行が含まれています。

the code is #{code}

しかし、logDebug 行は、「sms_content」が「code」の新しい値に応じて変化しないことを報告しています。つまり、別の新しいリクエストで 'code' の値が変更された場合、'sms_content' には前回のリクエストの古い値が残っています。Yesod が 'sms_content' の最後の値をキャッシュしているようです。

私の間違いは何ですか?

編集: textFileReload を textFile に変更すると、問題はなくなりました。したがって、ここで「リロード」の意味を誤解しなければなりません。誰でも手がかりを教えてもらえますか?

4

0 に答える 0