Page Top

MT5 テーマのエクスポートでエラー:template_setのファイナライズ中にエラーが発生しました: テンプレートファイルの公開に失敗しました:

March 23, 2010

この間、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エンコードファイルが全体的な問題を引き起こしていたようです。コーディングなどの問題でなくて良かったです。

最新記事

Comments

はじめまて。
やっぱり、空のテンプレートが原因だったんですね。
ファイナライズのエラーは、経験的には、読み込むmtmlの指定間違えて、空テンプレート作ってしまったか、重複したidentifier付けてしまってたりするのが原因だったりしました。
予測できない原因じゃなくて良かったです。

oscarさま、はじめまして!
oscarさまのサイトで度々MTのこと勉強させていただいております。ありがとうございます!
はい。私の分は元々作成していた空のNon改行&Nonエンコードのテンプレートが問題を起こしていました。oscarさまが言われるような原因の場合もあるのだな~と思い読ませていただきました。次からは、こういうことが原因になりうるのだな、と参考になります。ありがとうございます。m(._.)m

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)