å€æ°åã«ã¿ã€ããã¹ãããããšããããŸãïŒèªåææ¡ã䜿çšããå Žåã§ãïŒã
空ã®æååãè¿ãã®ã§ã¯ãªããmustache-jsããäžæãªãå€æ°ã«å¯ŸããŠèŠåãçæããããã«æ§æãããã°çŽ æŽãããã§ãããïŒä»æ§ã«æºæ ããŠããŸããïŒã
å£ã²ãã®ãã³ããŒãžã«ã¯æ¬¡ã®ããã«æžãããŠããŸãã
By default a variable "miss" returns an empty string. This can usually be configured in your Mustache library. The Ruby version of Mustache supports raising an exception in this situation, for instance.
ããŒã«ã«ã§éçºããŠããéãä»ã®ãã¬ãŒã ã¯ãŒã¯ãããã®æ©èœã倧奜ããªã®ã§ãç§ãã+1ããŠãã ããïŒ ããã©ãŒãã³ã¹ãžã®åœ±é¿ãæå°éã«æãããããŸã£ãã圱é¿ãäžããªãããšãéèŠã ãšæããŸãã ã³ã¢ããã®ãŸãŸã«ããŠããããšãã§ããã®ã§ããããïŒ ããšãã°ãéçºäžã«ãã®çš®ã®åäœãæå¹ã«ããããã«ãããã€ãã®å éšã¡ãœããããªãŒããŒã©ã€ãããŸãã
ãã¶ãmustache.dev.js
ãã«ãã䜿çšããŠããmustache.js
ãšãã§ãã¯ã»ããžãã¯ãå«ãé¢æ°ã®ãªãŒããŒã©ã€ããïŒ
ããŒããšã©ãŒãæãŸããã®ã§ãããšãã°ãExpressã§äœ¿çšãããšããšã³ããŠãŒã¶ãŒã誀ã£ãŠã¬ã³ããªã³ã°ãããããŒãžã衚瀺ããŠãããšãã«ãã°ã ãã§ãªã500å¿çã«ãªããŸãïŒæ¬ èœããŠããæ¹æ³ã«ãã£ãŠã¯ãéåžžã«èª€ã£ãŠã¬ã³ããªã³ã°ãããå¯èœæ§ããããŸãïŒãå€æ°ã䜿çšãããããšã«ãªã£ãŠããïŒ; ããã¯ã500ããŒãžãã©ãã ãåªããŠããããšã誀ã£ãŠã¬ã³ããªã³ã°ãããããŒãžãã¢ããªã±ãŒã·ã§ã³ã®æ©èœã«ã©ãã»ã©æªããã«ãã£ãŠã¯ãããŒã«ã«éçºãããæ¬çªç°å¢ã§ããã«åœ¹ç«ã€å¯èœæ§ããããŸãã ã»ã¯ã·ã§ã³ã䜿çšãããšãçŽæ¥äœ¿çšããããã®ããŒããšã©ãŒããã£ãŠãããã³ãã¬ãŒããæ¬ èœããŠããå€æ°ãç¡èŠã§ããå¯èœæ§ããããŸãã ãŸããåé¡ããã°ã«èšé²ããå¿ èŠã®ããé«ã¬ãã«ã®äœ¿çšã¯ããã°ã·ã¹ãã ã®å¶åŸ¡äžã«ãããããããšãã°ãMustacheã®å éšèŠåã¡ã«ããºã ããã¹ãã©ã³ããŒããã®åºåãå£ããŠããŸãããšãªã©ã«ã€ããŠå¿é ããå¿ èŠã¯ãããŸããã
https://github.com/ScottFreeCode/mustache.jsã«å®çšçãªãããã¿ã€ãããã
ããŒãããªããžã§ã¯ãã®ååšãif
ïŒ {{#thing}}
ïŒãšããŠäœ¿çšãããšããšã©ãŒãã¹ããŒãããŸããïŒ ïŒããã¯ããªãäžè¬çã ãšæããŸãïŒ
ãŸãã¯ãå€æ°ã®å®éã®ã¬ã³ããªã³ã°ïŒ {{ id }}
ïŒã®ã¿ããšã©ãŒãçºçãããŸããïŒ äœãèããŠããã®ã§ããïŒ
ç·šéïŒé¢åã«ãªããªãå Žåã«åããŠãã¡ãžã£ãŒã§ããã©ã«ãã§æå¹ã«ããããã«+1ããéåžžã«ã¯ãŒã«ãªæ©èœã
ç§ã®èãã§ã¯ãæåã¯ãšã©ãŒã§ããã2çªç®ã¯ãèŠåãã§ããå¿
èŠããããŸãã
ã©ã¡ãã®å Žåããæ¬ æž¬å€ãããããšãç¥ããããšæããŸãã
2çªç®ã®ã±ãŒã¹ã§ã¯ãæè¡çã«ã¯å£ããªããããããŸããããããŒãžã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã
ãŸããéã®æ¹æ³ãããã§ããããæªäœ¿çšã®å€æ°âŠããããããã¯ãã£ãšå€§ããªåœ±é¿ãäžãããšæããŸãïŒ ïŒNS
2016幎11æ8æ¥ã14ïŒ19ã§ãããããã»ãã»ã·ã«ãã®[email protected]ã¯æžããŸããïŒ
ããŒãããªããžã§ã¯ãã®ååšãifïŒ{{ïŒthing}}ïŒãšããŠäœ¿çšãããšããšã©ãŒãã¹ããŒãããŸããïŒ ïŒããã¯ããªãäžè¬çã ãšæããŸãïŒ
ãŸãã¯ãå€æ°ïŒ{{id}}ïŒã®å®éã®ã¬ã³ããªã³ã°ã®ã¿ã§ãšã©ãŒãçºçããŸããïŒ äœãèããŠããã®ã§ããïŒ
â
ã¹ã¬ãããäœæããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHub https://github.com/janl/mustache.js/issues/599#issuecomment -259133973ã§è¡šç€ºããããã¹ã¬ããããã¥ãŒãããŠãã ããhttps://github.com/notifications/unsubscribe-auth/ AJ8FmSptdhysYrQpg1ODkIrm12A_TXcYks5q8HbbgaJpZM4J8lKeã
ç§ã®èãã§ã¯ãæåã¯ãšã©ãŒã§ããã2çªç®ã¯ãèŠåãã§ããå¿ èŠããããŸãã
ã©ã¡ãã®å Žåããæ¬ æž¬å€ãããããšãç¥ããããšæããŸãã
@MatthijsZwãªãã»ã©ã ããããã£ã®null
å€ãæ ŒçŽã§ããããšãæãåºããŸãããããã¯è¯ãããšã§ããããããã£ãŠäŸå€ã¯çºçããŸããã ïŒç¹ã«if
å Žåã¯ããã«èšåããŸãïŒ
ç·šéïŒç§ã®çŸåšã®ç«å Žã¯ãäž¡æ¹ã§Errã奜ããšããããšã§ãã ç§ã¯äžè²«ããåäœã奜ã¿ãŸãã空ã®æ¬ 枬å€ã«ã¯null
ã®äœ¿çšã匷å¶ããŸãããããã¯æãŸãããšæããŸãã
ãŸããéã®æ¹æ³ãããã§ããããæªäœ¿çšã®å€æ°âŠããããããã¯ãã£ãšå€§ããªåœ±é¿ãäžãããšæããŸãïŒ ïŒNS
ãã³ãã¬ãŒããæåŸ ããŠããããŒã¿ã®ã¹ããŒãããªããšãããŠååŸããããã䜿çšããŠGraphQLã¯ãšãªãªã©ãçæããã®ã¯ã¯ãŒã«ã ãšæããŸãã
ããã«èããŠã¿ããšãããã§ã®åé¡ã®äžéšã¯ãæ¬ èœããŠããããŒã¿ãç¡å¹ã§ãããšããããšã ãšæããŸãããªããªãããã³ãã¬ãŒãããã®ããŒã¿ãæåŸ ããŠããå Žåã«éããŸãã ãããã£ãŠããã³ãã¬ãŒããåçŽã«è¡šç€ºããã ãã®æ¬ èœããŒã¿ã¯ããã®ããžãã¯ã§ã¯åžžã«ç¡å¹ã§ããããã³ãã¬ãŒãã¯ãç¹å®ã®ããŒã¿ãå©çšå¯èœã§ãããšæåŸ ããããçš®ã®ç/åœãã©ã°ãšããŠåå²ããå¯èœæ§ããããšèããããŸãïŒã€ãŸããæ¬ èœããŠããã»ã©åœã§ã¯ãªãããããã£ãŠãã®æåŸ ãæºãããŠããªãå Žåã¯ç¡å¹ã§ãïŒããå¥ã®å Žåã¯ãããŒã¿ãå©çšå¯èœãã©ãããæåŸ ããå©çšå¯èœãã©ããã§åå²ããå¯èœæ§ããããŸãïŒãã®å Žåãç¡å¹ã«ãªãããšã¯ãããŸããïŒã
ãã®èŠ³ç¹ã§ã¯ããããå¶åŸ¡ããããã«null
ã䜿çšããããšã¯ãç§ã«ã¯ããŸãæå³ããããŸããã
null
ã¯ãããŒã¿ãæåŸ
ããããŒã¿ãæ¬ èœããŠããããšã¯ç¡å¹ã§ãããšèŠãªãçå®æ§ã®åå²ã®èª€ã£ãå€ã§ããå¯èœæ§ããããŸãããããã§ããããŒã¿ãæäŸããããã©ãããæ£ç¢ºã«åå²ããå¿
èŠããããŸããããŒã¿ãå
¥åãããªãå¯èœæ§ãããããšãæåŸ
ããŸãïŒSQLãªã©ã®æ¬ èœããŒã¿ã«null
ã䜿çšãããœãŒã¹ããã®ãã®ã§ãªãéãã null
ã§ãå
¥åãããŸããïŒã null
ãæ¬ èœããŠãããã®ãšããŠæ±ãããããŒã¿ãœãŒã¹ã«åºã¥ããŠæ§æå¯èœã«ããå¿
èŠããããŸãïŒããã³ãã¬ãŒãåŽã®æåŸ ãç°ãªããããå¿ èŠãªã®ã¯2çš®é¡ã®ãã©ã³ãã§ãã ç§ã®ç¥ãéããèšèªã«äŸåããªãMustacheä»æ§ã§ã¯ãæ¬ æž¬ããŒã¿ããšã©ãŒã§ãããã©ããã®æ§æãå¯èœã§ããïŒå¿ é ã§ã¯ãããŸããïŒãå¥ã®çš®é¡ã®ãã©ã³ãã«ã¯äœããããŸããããã®ç¹ã§ç°ãªããŸãã ããŒã...
å察ã«ãç§ã¯çŸåšãç¡é¢ä¿/äœå°/æªäœ¿çšã®ããŒã¿ã¯å®éã«ã¯ããŒã¿ãç¡å¹ã§ãããšããåé¡ã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³/ããŒã¿/ã§ãã®ããŒã¿ã䜿çšããªãå Žåã¯ãã³ãã¬ãŒããç¡å¹ã§ãããšããåé¡ã§ãããšèããŠããŸããã¢ãã«ã¯ããã䜿çšãããããšãæåŸ ããŠããŸãã ã€ãŸããäžéšã®ãã®ãæœåšçã«äœ¿çšå¯èœã§ãããããã³ãã¬ãŒãããããé¢é£ãããã©ãããå€æã§ããå Žåããã³ãã¬ãŒãããã®ãã®ãå°å·ãããã©ããã¯åé¡ã§ã¯ãããŸããããäžéšã®ãã®ãæ¬åœã«ãŠãŒã¶ãŒã«è¡šç€ºãããå¿ èŠãããå Žåããã³ãã¬ãŒãã¯è¡šç€ºãããŸããããšã©ãŒã ãšè¡šç€ºããŸãã äžçš®ã®é転ãšããŠãæåŸ å€ã¯ãã³ãã¬ãŒãã®å€åŽïŒã¢ãã«å ïŒïŒã«ããããã®æåŸ å€ãæºãããªãããšã®ç¡å¹æ§ã¯ãã³ãã¬ãŒãã«ãããŸãã ãããããããšã¯å¥ã«åãçµãã®ãæåã ãšæããŸãã
以äžã®ããšã¯ã匷ãæèŠã匱ããšæããŸãã
null
å€ãååšããªãå€ãšããŠè§£éããIMOã¯ééã£ãŠããŸãã
{ name: null }
ãã®ãªããžã§ã¯ãã«ã¯ãåœã®å€ãæã€name
ããããã£ããããããç¡å¹ãšèŠãªãããã¹ãã§ã¯ãªããã¹ããŒããçç±ã«ããªããŸããã
ããé©åãªãã§ãã¯ã¯ã mustache.hasPropertyïŒïŒã®ããã«ãèŠæ±ãããããããã£ãå®çŸ©ãããŠãããã©ããããã§ãã¯ããããšã§ãã
ããããå¥ã®æ¹æ³ã§ã¯ãããŒã¿ãå©çšã§ããå Žåãšã§ããªãå Žåããããå©çšã§ãããã©ããã§åå²ããå ŽåããããŸãïŒãã®å ŽåãããŒã¿ãç¡å¹ã«ãªãããšã¯ãããŸããïŒã
ç§ãäŒããããšããŠããã®ã¯ãããŒX
ïŒããšãã°ã {{#X}}
ïŒã«å¿ããŠåå²ããå ŽåãæäŸãããããŒã¿ã«ã¯ãããŒX
å€ãå«ãŸããŠããå¿
èŠããããšããããšã§ããåœã®å€ã§ããã undefined
ã¯ãããŸããã
null
ãããããç§ã¯äŸ¡å€ããªãããšãç¥ã£ãŠããŸããç§ã¯äŸ¡å€ããªãããšãæ瀺çã«ããŒã¯ããŠããŸãããæå³ããŸããundefined
ã»ãšãã©ã®å ŽåãããŒX
ãå®çŸ©ãããŠããªãããšãæå³ããŸãïŒ undefined
å€ã§ããŒãå®çŸ©ããå Žåã¯ã null
ã䜿çšããæ¹ãããã§ãããïŒ ã ãŸããããŒãå®çŸ©ãããŠããªãå Žåã¯ãããŒã¿ã®å®£èšããæ æ°ãã§ããïŒããšãã°ããªããžã§ã¯ãåç
§ãäžè¶³ããŠãããšãã«null
ã䜿çšããªãïŒãã人çºçãšã©ãŒïŒã¿ã€ããã¹ãã¹ãªãããæ··ä¹±ïŒãåå ã§ãããããã£ãŠããã®å Žåããšã©ãŒãã¹ããŒããããšã«ã¯å©ç¹ããããŸãã ïŒå€ãundefined
ããŒã§åå²ããããšããŠããŸãïŒ
ãã1ã€ã®ã±ãŒã¹ã§ã¯ã undefined
ãŸãã¯null
ãããããã¬ã³ããªã³ã°ããããšããŠããŸããããã®ãŠãŒã¹ã±ãŒã¹ããããã©ããã¯ããããŸããã ãã¶ãããã®1ã€ã§ããšã©ãŒã
SQLãªã©ã®æ¬ èœããŒã¿ã«nullã䜿çšãããœãŒã¹ããã®ãã®ã§ãªãéã
AfaikãMustacheã®å²åŠã¯ãã¢ãã«ããã®ãŸãŸäœ¿çšããã®ã§ã¯ãªããã¢ãã«ããããã¥ãŒããçæããããšã§ãã ãããã€ããŒãäœããã®çç±ã§è¿œå ããªãå Žåã«åããŠã null
è¿œå ã§ããŸãã
ç§ã¯çŸåšãç¡é¢ä¿/äœå°/æªäœ¿çšã®ããŒã¿ã¯å®éã«ã¯ããŒã¿ãç¡å¹ã§ãããšããåé¡ã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³/ããŒã¿/ã¢ãã«ãæåŸ ãããšãã«ãã®ããŒã¿ã䜿çšããªãå Žåã¯ãã³ãã¬ãŒããç¡å¹ã§ãããšããåé¡ã§ãããšèããŠããŸãå©çšããã
ããŒããæäŸããããã¹ãŠã®ããŒã¿ã䜿çšããªãã®ã¯ããªãäžè¬çã ãšæããŸãã ç§ãææ¡ããGraphQLã¯ãšãªçæã®ããã«ãäž»ã«ããŒã«ã®åªããæ©èœã®ããã«ã¢ã€ãã¢ãæå ¥ããŸããã
æ¬åœã«ãŠãŒã¶ãŒã«è¡šç€ºããå¿ èŠããããã®ãããå Žåããã³ãã¬ãŒãã«è¡šç€ºãããªãå Žåã¯ãšã©ãŒã§ã
ãããã誰ã/äœããæ¬åœã«ãŠãŒã¶ãŒã«è¡šç€ºããå¿ èŠããããã®ãã決å®ããã®ã§ããããã ç§ãæšæž¬ããŠãããã³ãã¬ãŒãã©ã€ã¿ãŒïŒ ãã¥ãŒå ã®ãã¹ãŠã®ããŒã¿ã䜿çšããããã«ãŠãŒã¶ãŒã«åŒ·å¶ãããšãã¬ã³ããªã³ã°ãããã³ãã¬ãŒãããšã«èª¿æŽããããã¥ãŒãçæããããã«åŒ·å¶ãããŸãã
泚ïŒç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ãåå²ãªãã®æåã»ããã¢ããã§ããã
ãä»ã®äººãã«æåã§ããŒã¿ïŒã€ãã³ãïŒãäœæããŠããããŸããããã®å Žåããã¹ãŠã®ãã£ãŒã«ãã«å ¥åããããå€æ°åã«ã¿ã€ããã¹ããããã確èªããæ¹æ³ããããŸããã§ããã
ç§ã®ãã³ãã¬ãŒãã¯ã{{event.date}}ã®{{event.name}}ããšèšãã§ãããã ãã®å Žåãå€ãæ¬ èœããŠãããšæãããããŒãžãäœæãããŸãã
ãã¹ãŠã®ãã£ãŒã«ããå¿
é ã ã£ãããã{{event.date}}ã衚瀺ããªãããžãã¯ãè¿œå ããŠãæå³ããããŸããã
ãã®å Žåãã䜿çšãããŠããªããå€æ°ãç¥ã£ãŠãããšäŸ¿å©ã§ããã¿ã€ããã¹ããããŒãžã«ãéæ³ã®ããã«ã衚瀺ããããšèããŠè¿œå ããã¢ã€ãã ãå確èªããŠãã ãã:)
ãã®ãŠãŒã¹ã±ãŒã¹ã¯ã©ããããããMustacheã®ã€ããªãã®ãŒã«éåããŠãããšæããŸãããããã¯å®éã®ã·ããªãªã§ãã
ãŸããäž¡æ¹ã®ç¶æ³ïŒæ¬ èœå€+æªäœ¿çšã®å€ïŒã§èŠåãçæããããšäŸ¿å©ã§ãã
2016幎11æ9æ¥ã10æ53åã§ãããããã»ãã»ã·ã«ãã®[email protected]ã¯æžããŸããïŒ
ããããå¥ã®æ¹æ³ã§ã¯ãããŒã¿ãå©çšã§ããå Žåãšã§ããªãå Žåããããå©çšã§ãããã©ããã§åå²ããå ŽåããããŸãïŒãã®å ŽåãããŒã¿ãç¡å¹ã«ãªãããšã¯ãããŸããïŒã
ç§ãäŒããããšããŠããã®ã¯ãããŒXã«å¿ããŠåå²ããå ŽåïŒ{{#X}}ãªã©ïŒãæäŸãããããŒã¿ã«ã¯ãããŒXã®å€ãçãŸãã¯åœã®å€ã§ããå¿ èŠããããŸãããééããªãæªå®çŸ©ã§ã¯ãªããšããããšã§ãã
nullã¯ãããããç§ã¯äŸ¡å€ããªãããšãç¥ã£ãŠããŸããç§ã¯äŸ¡å€ããªãããšãæ瀺çã«ããŒã¯ããŠããŸãããæå³ããŸãã
undefinedã¯ãã»ãšãã©ã®å ŽåãããŒXãå®çŸ©ãããŠããªãããšãæå³ããŸãïŒundefinedã®å€ã§ããŒãå®çŸ©ããå Žåã¯ãnullã䜿çšããæ¹ãããã§ãããïŒã ãŸããããŒãå®çŸ©ãããŠããªãå Žåã¯ãããŒã¿ããé 延ã宣èšããŠããïŒããšãã°ããªããžã§ã¯ãåç §ãäžè¶³ããŠãããšãã«nullã䜿çšããŠããªãïŒãã人çºçãšã©ãŒïŒã¿ã€ããã¹ãã¹ãªãããæ··ä¹±ïŒãåå ã§ãã
ãããã£ãŠããã®å Žåããšã©ãŒãã¹ããŒããããšã«ã¯å©ç¹ããããŸãã ïŒå€ãæªå®çŸ©ã®ããŒã§åå²ããããšããŠããŸãïŒäžæ¹ãæªå®çŸ©ãŸãã¯nullã®ãããããã¬ã³ããªã³ã°ããããšãããšããã®ãŠãŒã¹ã±ãŒã¹ããããã©ãããããããŸããã ãã¶ãããã®1ã€ã§ããšã©ãŒã
SQLãªã©ã®æ¬ èœããŒã¿ã«nullã䜿çšãããœãŒã¹ããã®ãã®ã§ãªãéã
AfaikãMustacheã®å²åŠã¯ãã¢ãã«ããã®ãŸãŸäœ¿çšããã®ã§ã¯ãªããã¢ãã«ããããã¥ãŒããçæããããšã§ãã ãããã€ããŒãäœããã®çç±ã§è¿œå ããªãå Žåã«åããŠãnullãè¿œå ã§ããŸãã
ç§ã¯çŸåšãç¡é¢ä¿/äœå°/æªäœ¿çšã®ããŒã¿ã¯å®éã«ã¯ããŒã¿ãç¡å¹ã§ãããšããåé¡ã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³/ããŒã¿/ã¢ãã«ãæåŸ ãããšãã«ãã®ããŒã¿ã䜿çšããªãå Žåã¯ãã³ãã¬ãŒããç¡å¹ã§ãããšããåé¡ã§ãããšèããŠããŸãå©çšããã
ããŒããæäŸããããã¹ãŠã®ããŒã¿ã䜿çšããªãã®ã¯ããªãäžè¬çã ãšæããŸãã ç§ãææ¡ããGraphQLã¯ãšãªçæã®ããã«ãäž»ã«ããŒã«ã®åªããæ©èœã®ããã«ã¢ã€ãã¢ãæå ¥ããŸããã
æ¬åœã«ãŠãŒã¶ãŒã«è¡šç€ºããå¿ èŠããããã®ãããå Žåããã³ãã¬ãŒãã«è¡šç€ºãããªãå Žåã¯ãšã©ãŒã§ã
ãããã誰ã/äœããæ¬åœã«ãŠãŒã¶ãŒã«è¡šç€ºããå¿ èŠããããã®ãã決å®ããã®ã§ããããã ç§ãæšæž¬ããŠãããã³ãã¬ãŒãã©ã€ã¿ãŒïŒ ãã¥ãŒå ã®ãã¹ãŠã®ããŒã¿ã䜿çšããããã«ãŠãŒã¶ãŒã«åŒ·å¶ãããšãã¬ã³ããªã³ã°ãããã³ãã¬ãŒãããšã«èª¿æŽããããã¥ãŒãçæããããã«åŒ·å¶ãããŸãã
â
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHub https://github.com/janl/mustache.js/issues/599#issuecomment -259374603ã§è¡šââ瀺ããããã¹ã¬ããhttps://github.com/notifications/unsubscribe-auth/ããã¥ãŒãããŸã
ãã®ãŠãŒã¹ã±ãŒã¹ã¯ã©ããããããMustacheã®ã€ããªãã®ãŒã«éåããŠãããšæããŸãããããã¯å®éã®ã·ããªãªã§ãã ãŸããäž¡æ¹ã®ç¶æ³ïŒæ¬ èœå€+æªäœ¿çšã®å€ïŒã§èŠåãçæããããšäŸ¿å©ã§ãã
ã©ã¡ããå®è¡å¯èœã®ããã§ãã CIã«åœ¹ç«ã€å¯èœæ§ããããŸãã
ãããã°ã®ããã«ããã©ã¡ãŒã¿ãŒããã¥ãŒã«çŽæ¥è¡šç€ºããããšæããŸãã
ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯å°ãç°ãªããŸããMustacheã䜿çšããŠãGulpã䜿çšããŠTerraformãã³ãã¬ãŒããå€æããŸãã å€æ°ãæ¬ èœããŠãããšãç¹ã«èªç±åœ¢åŒã®æååã«çœ®ãæãããšãã«ãã€ã³ã¹ã¿ã³ã¹ãæ£ããèµ·åããªãå¯èœæ§ããããŸãã ç§ã¯ãã®æ©èœãååŸããããã®ç°¡åãªã¢ã³ããŒããããæãã€ããããããã¯ã»ãšãã©çæ³çã§ã¯ãªãïŒ
var mustache = require("mustache");
var errors = [];
var lookup = mustache.Context.prototype.lookup;
mustache.Context.prototype.lookup = function(name) {
var value = lookup.bind(this)(name);
if (value === undefined) {
console.error("Unknown symbol", name);
errors.push(name);
}
return value;
}
var render = mustache.render;
mustache.render = function(template, view, partials) {
var result = render.bind(this)(template, view, partials);
if (errors.length > 0) {
throw {message: "Unknown symbols: " + errors.join(", ")};
}
return result;
}
ããŒãïŒ
ããããããã¯ç§ã®ç®çã«ã¯ããŸãæ©èœããå¿ èŠã«å¿ããŠèª°ãããããé©å¿ãããããšãã§ãããšç¢ºä¿¡ããŠããŸãã
ããããçš®é¡ã®æ§æ管çç°å¢ã§ãã³ãã¬ãŒããšã³ãžã³ãšããŠå£ã²ãã䜿çšããã«ã¯ãå€æ°ãæ¬ èœããŠããå Žåã«ããŒããšã©ãŒãå¿ èŠã§ãã @steverukutsã«äŒŒããŠãŒã¹ã±ãŒã¹ã
@stefanegãæžããæ°ãæåŸãå®éãTerraformãJSON圢åŒã§èšè¿°ãããæ§æããµããŒãããŠããããšãçºèŠããã®ã§ãMustacheã䜿çšãã代ããã«ããã䜿çšããŸãã ããã¯ã¯ããã«åªããŠãããããããã°ã©ã å¯èœã§ãã ããã«å¯ŸããMustacheã®äœ¿çšã¯éæšå¥šã«ãªãããããã€ã¡ã³ããã€ãã©ã€ã³ã®æ¬¡ã®ãªããžã§ã³ã§åé€ãããäºå®ã§ãã
Kubernetesã®ãããã€ããã¥ã¡ã³ããèŠããšããããã¯YAMLãã¡ã€ã«ã§ããããšãããããŸãã ã»ãšãã©ã®ããã°ã©ãã³ã°èšèªã«ã¯YAMLã®èªã¿åããšæžã蟌ã¿ãå¯èœãªã©ã€ãã©ãªãããããã代ããã«ãããè¡ãããšããå§ãããŸãã ç§ã®å®éšãããæ©æ¢°å¯èªåœ¢åŒãæäœããããšãããšãã»ãšãã©ã®å ŽåãMustacheãããåªãããªãã·ã§ã³ãããããšãããããŸããã
泚æïŒMustacheã¯ããäœã«ã䜿çšããŠããŸããããããã¯æå¹ãªæ©èœãªã¯ãšã¹ãã§ãããšæããŠããŸãã
解決çã¯ãåãæ§æããµããŒããããã³ãã«ããŒã䜿çšããããšã§ãããŸãããã®ãŠãŒã¹ã±ãŒã¹ã§å¿ èŠãšãããå³å¯ãªãªãã·ã§ã³ããããŸãã
@steverukutsãµããŒãããå¿ èŠã®ããäºåæ£ããã§ãã ãªãŒãã³ãšã³ãã®æ§æããŒã«ã®å Žåãæè»æ§ãéåžžã«éããªãããããã³ãã¬ãŒããäœæããå¿ èŠããããŸãã ä»»æã®å Žæã«ä»»æã®å€ãæ¿å ¥ããããšããµããŒãããããŒã«ãæžããŠã¿ãŠãã ãã...ããã«ãã³ãã¬ãŒããšã³ãžã³ãã§ããŸããã
ä»äºã§ã¯ãããæ°å¹ŽãKubernetesãªãœãŒã¹ãæ§æããããã«kontemplateã䜿çšããŠããŸãã ããã¯åºæ¬çã«goãã³ãã¬ãŒããšã³ãžã³ã§ããããã®ãããžã§ã¯ãã®å°æãã«ã¹ã¿ã æ©èœããããã€ãã®äŸ¿å©ãªæ©èœãåããŠããŸãã ããšãã°ããã«ã ããã軜éãªã¢ãããŒããšããŠäœæãããŠããŸãã
äžèšã®è°è«ã«é¢é£ããŠ; ãŸããæªç¥ã®å€æ°ã§ççºããŸãã
解決çã¯ãåãæ§æããµããŒããããã³ãã«ããŒã䜿çšããããšã§ãããŸãããã®ãŠãŒã¹ã±ãŒã¹ã§å¿ èŠãšãããå³å¯ãªãªãã·ã§ã³ããããŸãã
ãã®åé¡ã«ããããã³ãã«ããŒã䜿çšããããåŸãªããªããŸããã ãããå£ã²ãã§ãµããŒããããŠããªãã®ã¯æ®å¿µã§ãã
æãåèã«ãªãã³ã¡ã³ã
ããŒããšã©ãŒãæãŸããã®ã§ãããšãã°ãExpressã§äœ¿çšãããšããšã³ããŠãŒã¶ãŒã誀ã£ãŠã¬ã³ããªã³ã°ãããããŒãžã衚瀺ããŠãããšãã«ãã°ã ãã§ãªã500å¿çã«ãªããŸãïŒæ¬ èœããŠããæ¹æ³ã«ãã£ãŠã¯ãéåžžã«èª€ã£ãŠã¬ã³ããªã³ã°ãããå¯èœæ§ããããŸãïŒãå€æ°ã䜿çšãããããšã«ãªã£ãŠããïŒ; ããã¯ã500ããŒãžãã©ãã ãåªããŠããããšã誀ã£ãŠã¬ã³ããªã³ã°ãããããŒãžãã¢ããªã±ãŒã·ã§ã³ã®æ©èœã«ã©ãã»ã©æªããã«ãã£ãŠã¯ãããŒã«ã«éçºãããæ¬çªç°å¢ã§ããã«åœ¹ç«ã€å¯èœæ§ããããŸãã ã»ã¯ã·ã§ã³ã䜿çšãããšãçŽæ¥äœ¿çšããããã®ããŒããšã©ãŒããã£ãŠãããã³ãã¬ãŒããæ¬ èœããŠããå€æ°ãç¡èŠã§ããå¯èœæ§ããããŸãã ãŸããåé¡ããã°ã«èšé²ããå¿ èŠã®ããé«ã¬ãã«ã®äœ¿çšã¯ããã°ã·ã¹ãã ã®å¶åŸ¡äžã«ãããããããšãã°ãMustacheã®å éšèŠåã¡ã«ããºã ããã¹ãã©ã³ããŒããã®åºåãå£ããŠããŸãããšãªã©ã«ã€ããŠå¿é ããå¿ èŠã¯ãããŸããã
https://github.com/ScottFreeCode/mustache.jsã«å®çšçãªãããã¿ã€ãããã