ソフトウェア/rails/Turbolinks5 の履歴(No.1)
更新- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- ソフトウェア/rails/Turbolinks5 へ行く。
- 1
Turbolinks が新しくなって、使いやすくなった・・・らしい?†
Rails5 と合わせて Turbolinks が大幅に書き直されて、 ちまたでは使いやすくなったと評判みたいなのですが、 すでに古い Turbolinks を使っていた人向けの Migration Guide とか見つからずに困っています・・・
バージョン判別法が分からない†
そもそも
- バージョン判定法が API に含まれていなかったり
- 互換性目的の Turbolinks.EVENTS が廃止されたり
古い Turbolinks はもはや無かったことにされているのはかなりひどい話
バージョン判定方法†
バージョン一覧:
https://gemnasium.com/gems/turbolinks/versions
新しい Turbolinks には ChangeLog がない
https://github.com/turbolinks/turbolinks/releases
これ見る限りものすごく若いライブラリなのに、いきなり Rails5 に標準採用とか思い切ったことするなあ
旧バージョン turbolinks-classic の ChangeLog:
https://github.com/turbolinks/turbolinks-classic/blob/master/CHANGELOG.md
https://gist.github.com/saboyutaka/8727377 によれば、
TurbolinksはRails4.0からデフォルトで導入されたgem
そのときのバージョンは 2.2.0 ?
LANG:javascript if(typeof Turbolinks !== 'undefined' && Turbolinks.supported) { // Turbolinks が有効になっている if(Turbolinks.EVENTS) { // for Turbolinks >= 2.4 } else if(Turbolinks.pagesCached){ // for Turbolinks < 2.4 } else { // for Turbolinks >= 5.0 } }
で合っているのかしら???
具体的には riot_rails を使いたかったのだけれど、†
LANG:javascript if (Turbolinks.EVENTS) { // Turbolinks >= 2.4.0 $(document).on('page:change', function(){ riotRails.mountAll(); });
$(document).on(Turbolinks.EVENTS.BEFORE_UNLOAD, function(){ riotRails.unmountAll(); }); } else if (Turbolinks.pagesCached) { // Turbolinks < 2.4.0 Turbolinks.pagesCached(0); $(document).on('page:change', function(){ riotRails.mountAll(); });
$(document).on('page:receive', function(){ riotRails.unmountAll(); });
if (window.ReactRailsUJS.RAILS_ENV_DEVELOPMENT) { console.warn('The Turbolinks cache has been disabled (Turbolinks >= 2.4.0 is recommended).'); } } else { // Turbolinks >= 5 document.addEventListener("turbolinks:load", function(){ riotRails.unmountAll(); riotRails.mountAll(); }); }
これでそこそこまともに動きそう?
Turbolinks 5 では BEFORE_UNLOAD にあたるイベントはなさそうなのだけれど、 load の際に unmountAll() → mountAll() してしまえば、どんな場合にも動くんじゃないのかな?
しばらくこれでやってみることにします。
Counter: 2975 (from 2010/06/03),
today: 1,
yesterday: 3