:javascript +function() { var action = new Narou.Action; function checkVersionIsUpdated(latest, current) { var latestNumbers = latest.split("."); var currentNumbers = current.split("."); var maxVersionLength = Math.max(latestNumbers.length, currentNumbers.length); for (var i = 0; i < maxVersionLength; i++) { var leftNum = latestNumbers[i] | 0; var rightNum = currentNumbers[i] | 0; if (leftNum !== rightNum) { return leftNum > rightNum; } } return false; } function getCurrentVersion() { var dfd = jQuery.Deferred(); $.ajax({ type: "GET", url: "/api/version/current.json", dataType: "json", success: function(json) { $("#current-version").text(json.version); dfd.resolve(json.version); }, error: function() { dfd.reject(); } }); return dfd; } function getLatestVersion() { var dfd = jQuery.Deferred(); $.ajax({ type: "GET", url: "/api/version/latest.json", dataType: "json", success: function(json) { $("#latest-version").text(json.version); dfd.resolve(json.version); }, error: function() { dfd.reject(); } }); return dfd; } function updateButtonHandler() { var dfd = jQuery.Deferred(); $("#version-update-button").one("click", function(e) { e.preventDefault(); $(this).hide(); $("#fail-update-system").hide(); dfd.resolve(); }); return dfd; } function callUpdateSystem() { var dfd = jQuery.Deferred(); $("#version-updating").show(); $("#gem-result-log").hide(); action.updateSystem(function(result, log) { $("#version-updating").hide(); $("#gem-result-log").text(log); if (result == "success") dfd.resolve(); else dfd.reject(result); }); return dfd; } function rebootButtonHandler() { $("#gem-result-log").addClass("large").show(); $("#reboot-button") .show() .on("click", function(e) { action.rebootDialog(); }); } function failUpdateSystem(result) { if (result == "failure") { $("#fail-update-system").show(); $("#gem-result-log").show(); updateSysmteProcess(); } else if (result == "nothing") { $("#nothing-to-update").show(); } } function updateSysmteProcess() { $("#version-update-button").show(); updateButtonHandler() .then(callUpdateSystem) .then(rebootButtonHandler) .fail(failUpdateSystem); } $result = $("#result-of-version-checking"); $result.children("div").hide(); $("#version-update-button").hide(); $("#reboot-button").hide(); $("#version-updating").hide(); $("#fail-update-system").hide(); $("#nothing-to-update").hide(); $("#gem-result-log").hide(); action.checkUpdatedSystem({ // まだgemのアップデートは行われていないので、バージョンチェックからはじめる not_updated: function() { $result.children(".checking").show(); $.when( getCurrentVersion(), getLatestVersion() ) .done(function(current_version, latest_version) { $result.children(".checking").hide(); if (checkVersionIsUpdated(latest_version, current_version)) { $("#latest-version").text(latest_version); $result.children(".need-an-update").show(); } else { $result.children(".version-is-latest").show(); } }) .fail(function() { $result.children(".checking").hide(); $result.children(".error").show(); }); updateSysmteProcess(); }, // すでにgemをアップデート済みなので、再起動ボタンを最初から表示する already_updated: function(log) { $result.children(".need-an-update").show(); $("#latest-version-found").hide(); $("#reboot-button").show(); $("#gem-result-log").text(log); rebootButtonHandler(); } }); }(); %div.link-to-changelog-in-about %a.btn.btn-default.btn-sm(href="https://github.com/whiteleaf7/narou/blob/master/ChangeLog.md" target="_blank") 更新履歴 %span.glyphicon.glyphicon-new-window %div(style="text-align:center") %h1 %strong Narou.rb %div Version #{@narourb_version} %div Copyright © 2013-#{Narou.last_commit_year} whiteleaf. All rights reserved. #result-of-version-checking(style="margin-top:10px") .checking %span.rotate-progress %span.icon %span.text アップデートを確認しています... .version-is-latest %p %span.glyphicon.glyphicon-thumbs-up.text-primary Narou.rb は最新版です。 .need-an-update %p %span#latest-version-found %span.glyphicon.glyphicon-exclamation-sign.text-primary 新しいバージョン()が見つかりました。
%a#version-update-button.btn.btn-primary.btn-sm %b Narou.rb を更新する %span#version-updating %span.rotate-progress %span.icon %span.text 更新しています。 %a#reboot-button.btn.btn-success.btn-sm %b 再起動して更新を反映する %span#nothing-to-update.text-success Narou.rb はすでに最新版です。 %p#fail-update-system.text-danger Narou.rb の更新に失敗しました。 .error %span.text-danger 最新バージョンの取得に失敗しました。 %pre#gem-result-log.log-box .well.well-sm(style="font-size:80%; margin-top: 10px") #{@ruby_version}
#{env["HTTP_USER_AGENT"]}