ソフトウェア/rails/Turbolinks5 の変更点
更新- 追加された行はこの色です。
- 削除された行はこの色です。
- ソフトウェア/rails/Turbolinks5 へ行く。
- ソフトウェア/rails/Turbolinks5 の差分を削除
[[公開メモ]]
* Turbolinks が新しくなって、使いやすくなった・・・らしい? [#if2d008f]
Rails5 と合わせて Turbolinks が大幅に書き直されて、
ちまたでは使いやすくなったと評判みたいなのですが、
すでに古い Turbolinks を使っていた人向けの Migration Guide
とか見つからずに困っています・・・
* バージョン判別法が分からない [#h334c9dd]
そもそも
- バージョン判定法が API に含まれていなかったり
- 互換性目的の Turbolinks.EVENTS が廃止されたり
古い Turbolinks はもはや無かったことにされているのはかなりひどい話
* バージョン判定方法 [#p8e3bdc0]
バージョン一覧:~
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 を使いたかったのだけれど、 [#r1f2b861]
LANG:javascript
var handleTurbolinksPageLoad = function () {
var unmountEvent;
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() してしまえば、どんな場合にも動くんじゃないのかな?
しばらくこれでやってみることにします。
* コメント・質問 [#occ345c2]
#article_kcaptcha
Counter: 3307 (from 2010/06/03),
today: 1,
yesterday: 2