Я только что развернул новое приложение rails 5 в рабочей среде, но не могу запустить функцию готовности документа. Приложение, включая подключение ActionCable и вывод консоли rails в инструкции о готовности документа, срабатывает локально в Chrome, Firefox и т. д.
Содержимое моего приложения/активов/javascripts/application.js:
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file. JavaScript code in this file should be added after the last require_* statement.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require featherlight.min
//= require jquery.growl
//= require cable
//= require base
//= require tradewars
//= require extensions
//= require_tree .
// TradeWars.io - application.js file
var Mining_Loop_Iterator = false;
$(document).ready(function() {
console.log("Initializing new TradeWars class...");
TradeWars = new TradeWarsClass();
console.log("Applying click handlers...");
TradeWars.applyClickHandlers();
console.log("Attempting to create WebSocket...");
App.game = App.cable.subscriptions.create({
channel: "GameChannel"
}, {
connected: function() {},
disconnected: function() {},
received: function(data) {
console.log('Received via ActionCable :: ' + data.message.method + ' :');
console.log(data);
if (data.message.method == 'disable_mining') {
TradeWars.disableMining(data.message);
} else if (data.message.method == 'offer_chest') {
TradeWars.offerChest();
} else {
// Refresh
TradeWars.animateDigging(data.message);
TradeWars.refresh(data.message);
}
return true;
},
mine: function(clicks_per_second) {
return this.perform('mine', {
clicks_per_second: clicks_per_second
});
}
});
TradeWars.miningLoop();
});
У меня также есть это встроенное в HTML загружаемой страницы:
<script>
$(document).ready(function() {
setTimeout(function() {
TradeWars.planet_id = 21;
}, 5000);
});
</script>
Когда это в конечном итоге срабатывает, я получаю ошибку javascript «ReferenceError: TradeWars не определен».
Я включил конвейер ресурсов в рельсах и предварительно компилирую ресурсы через командную строку с помощью:
bin/rails assets:precompile
Я также получаю ошибку JavaScript (как при локальной разработке, так и при производстве):
Uncaught Error: Bootstrap tooltips require Tether (http://tether.io/)
Но я не думаю, что это было бы так, плюс я не хочу устанавливать Tether.
Любая помощь приветствуется.