この間、MT5 テーマのエクスポート時に「Can't call method "id" on unblessed reference 」と言う記事を書きましたが、あれから、再びエラーが。
今回は、「template_setのファイナライズ中にエラーが発生しました: テンプレートファイルの公開に失敗しました: 」と言うもの。バグや問題点がどこにあるのか、このエラー内容では詳細が全く分からず、再びバグ探しの放浪の旅へ・・。
yamlの書き方が悪いのか、はたまたテンプレートの書き方が悪いのか。まずは、yamlを確認してみました。yamlは自分が見てわかるように、グループごとに空白で分けているのですが、これが悪いのかな~と思い全てをぎゅうぎゅうに入れて試してみましたが、これが問題でもなさそう。もしや、上部の辺りに入力しているデータの入れ方が違うのか?と思い、エクスポートで出されたものと同じにしてみても同じ。。ということで、yaml自体に問題があるわけではないことがわかりました。
次はテンプレートの方。yamlがOKならば、こちらに何か問題があるのだろうと。しかし、沢山テンプレートの数がある中で、具体的にどれに問題があるのかが全くわからず。。とりあえず、1つずつ潰していくように検証していきました。
yamlを書く際は、タブがいけないらしいですので、テンプレートの方も駄目なのかな~と思い、タブを全て取り払い確認。でも、まだエラーが続きます。次に、ウィジェットやモジュール単位で少しずつテンプレートを削除しながらエクスポートを確認。全て削除しないとエクスポートできない・・。
では、手元にある自分でコーディングしたテンプレートをMTの方に全てコピー&ペーストし、それをエクスポートして確認だと思い、いくつもあるテンプレートを1つずつコピペしました。そうすると!無事にエクスポートできました!
コピペしたものはエクスポートできて、インストール用に用意したテンプレートをテーマのインストールでインストして(ちゃんとインストできます)、エクスポートすると駄目なのか?
どうも、ファイルのあり方自体に何か問題が?というのが少し分かってきました。
そこで、Win Mergeのファイルを比べるソフトで何が違うのかを比べてみると、あるテンプレートでキャリッジリターンが異なると出てきました。でも、実際には同じものであり、おかしいな~と試行錯誤していましたら、とあるモジュールでサイトのIDを入れるテンプレートがあるのですが、デフォルトではそれはブランクのファイルなので、改行コードも何もないものなのですが、手動でコピペしたテンプレートをエクスポートした分には、改行コードが入れられてutf-8で保存されているのを見つけました。手動の分も該当ファイルはutf-8で保存しているはずのファイルでしたが、中身が何も入っていないとエンコードが良く分からないのか、エンコードが無いファイルになっていました。
早速手動でコピペした分のように、改行コードを入れてutf-8で保存し、それを、テーマのインストールからインストールし、エクスポートで出力すると・・無事にエクスポートできました!
大変長い道のりでございました。。どうやら私の場合は、この何も中身が無いブランクの無改行&Nonエンコードファイルが全体的な問題を引き起こしていたようです。コーディングなどの問題でなくて良かったです。