mediaelement_rails 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +8 -0
- data/app/assets/javascripts/mediaelement_rails/mediaelement.js +77 -31
- data/app/assets/javascripts/mediaelement_rails/mediaelementplayer.js +59 -25
- data/app/assets/plugins/mediaelement_rails/flashmediaelement-cdn.swf +0 -0
- data/app/assets/plugins/mediaelement_rails/flashmediaelement.swf +0 -0
- data/app/assets/stylesheets/mediaelement_rails/mediaelementplayer.css.erb +1 -1
- data/lib/mediaelement_rails/version.rb +1 -1
- metadata +21 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23365c544c82660f323c1daabc33b00f6181dffb
|
4
|
+
data.tar.gz: a8c9ff738d46f26e0ec107d5284e750bef83fadd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e4207d1706fe455887273959db1e042ae32ec28ab3726bf0828b67443035951b741f9c48d80031eda3488627c85317a31f28018d2b22e84171dce52211bc68f
|
7
|
+
data.tar.gz: 6462b9298fd2670d65ccd8df2e97efc954f6b0ab6b2ab43cf5bf9f50d267fce94ef89749b6337cb2e9134de9a354dcc332afe04f51cc5b4a6c74ac67a55dad9d
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -50,4 +50,12 @@ Nothing special! This project includes all assets you might need.
|
|
50
50
|
- Add support for `flashmediaelement-cdn.swf` for cases when the assets are hosted on a different domain than the rails application.
|
51
51
|
- Setup [appraisal](https://github.com/thoughtbot/appraisal) gem to test against rails 3.x and 4.x
|
52
52
|
|
53
|
+
## Maintainers ##
|
54
|
+
|
55
|
+
- [Mark Oleson](https://github.com/fusion2004) - current
|
56
|
+
- [Tobias Schlottke](https://github.com/tobsch)
|
57
|
+
- [Pete Browne](https://github.com/petebrowne)
|
58
|
+
|
59
|
+
## License ##
|
60
|
+
|
53
61
|
This project rocks and uses MIT-LICENSE.
|
@@ -7,7 +7,7 @@
|
|
7
7
|
* for browsers that don't understand HTML5 or can't play the provided codec
|
8
8
|
* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
|
9
9
|
*
|
10
|
-
* Copyright 2010-
|
10
|
+
* Copyright 2010-2014, John Dyer (http://j.hn)
|
11
11
|
* License: MIT
|
12
12
|
*
|
13
13
|
*/
|
@@ -15,7 +15,7 @@
|
|
15
15
|
var mejs = mejs || {};
|
16
16
|
|
17
17
|
// version number
|
18
|
-
mejs.version = '2.
|
18
|
+
mejs.version = '2.14.2';
|
19
19
|
|
20
20
|
|
21
21
|
// player number (for missing, same id attr)
|
@@ -535,7 +535,7 @@ mejs.PluginMediaElement.prototype = {
|
|
535
535
|
// HTML5 methods
|
536
536
|
play: function () {
|
537
537
|
if (this.pluginApi != null) {
|
538
|
-
if (this.pluginType == 'youtube') {
|
538
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
539
539
|
this.pluginApi.playVideo();
|
540
540
|
} else {
|
541
541
|
this.pluginApi.playMedia();
|
@@ -545,7 +545,7 @@ mejs.PluginMediaElement.prototype = {
|
|
545
545
|
},
|
546
546
|
load: function () {
|
547
547
|
if (this.pluginApi != null) {
|
548
|
-
if (this.pluginType == 'youtube') {
|
548
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
549
549
|
} else {
|
550
550
|
this.pluginApi.loadMedia();
|
551
551
|
}
|
@@ -555,7 +555,7 @@ mejs.PluginMediaElement.prototype = {
|
|
555
555
|
},
|
556
556
|
pause: function () {
|
557
557
|
if (this.pluginApi != null) {
|
558
|
-
if (this.pluginType == 'youtube') {
|
558
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
559
559
|
this.pluginApi.pauseVideo();
|
560
560
|
} else {
|
561
561
|
this.pluginApi.pauseMedia();
|
@@ -567,7 +567,7 @@ mejs.PluginMediaElement.prototype = {
|
|
567
567
|
},
|
568
568
|
stop: function () {
|
569
569
|
if (this.pluginApi != null) {
|
570
|
-
if (this.pluginType == 'youtube') {
|
570
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
571
571
|
this.pluginApi.stopVideo();
|
572
572
|
} else {
|
573
573
|
this.pluginApi.stopMedia();
|
@@ -637,7 +637,7 @@ mejs.PluginMediaElement.prototype = {
|
|
637
637
|
},
|
638
638
|
setCurrentTime: function (time) {
|
639
639
|
if (this.pluginApi != null) {
|
640
|
-
if (this.pluginType == 'youtube') {
|
640
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
641
641
|
this.pluginApi.seekTo(time);
|
642
642
|
} else {
|
643
643
|
this.pluginApi.setCurrentTime(time);
|
@@ -651,7 +651,7 @@ mejs.PluginMediaElement.prototype = {
|
|
651
651
|
setVolume: function (volume) {
|
652
652
|
if (this.pluginApi != null) {
|
653
653
|
// same on YouTube and MEjs
|
654
|
-
if (this.pluginType == 'youtube') {
|
654
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
655
655
|
this.pluginApi.setVolume(volume * 100);
|
656
656
|
} else {
|
657
657
|
this.pluginApi.setVolume(volume);
|
@@ -661,7 +661,7 @@ mejs.PluginMediaElement.prototype = {
|
|
661
661
|
},
|
662
662
|
setMuted: function (muted) {
|
663
663
|
if (this.pluginApi != null) {
|
664
|
-
if (this.pluginType == 'youtube') {
|
664
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
665
665
|
if (muted) {
|
666
666
|
this.pluginApi.mute();
|
667
667
|
} else {
|
@@ -719,7 +719,7 @@ mejs.PluginMediaElement.prototype = {
|
|
719
719
|
var callbacks = this.events[eventName];
|
720
720
|
if (!callbacks) return true;
|
721
721
|
if (!callback) { this.events[eventName] = []; return true; }
|
722
|
-
for (i = 0; i < callbacks.length; i++) {
|
722
|
+
for (var i = 0; i < callbacks.length; i++) {
|
723
723
|
if (callbacks[i] === callback) {
|
724
724
|
this.events[eventName].splice(i, 1);
|
725
725
|
return true;
|
@@ -1051,7 +1051,9 @@ mejs.HtmlMediaElementShim = {
|
|
1051
1051
|
// normal check
|
1052
1052
|
if (htmlMediaElement.canPlayType(mediaFiles[i].type).replace(/no/, '') !== ''
|
1053
1053
|
// special case for Mac/Safari 5.0.3 which answers '' to canPlayType('audio/mp3') but 'maybe' to canPlayType('audio/mpeg')
|
1054
|
-
|| htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/mp3/,'mpeg')).replace(/no/, '') !== ''
|
1054
|
+
|| htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/mp3/,'mpeg')).replace(/no/, '') !== ''
|
1055
|
+
// special case for m4a supported by detecting mp4 support
|
1056
|
+
|| htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/m4a/,'mp4')).replace(/no/, '') !== '') {
|
1055
1057
|
result.method = 'native';
|
1056
1058
|
result.url = mediaFiles[i].url;
|
1057
1059
|
break;
|
@@ -1152,6 +1154,7 @@ mejs.HtmlMediaElementShim = {
|
|
1152
1154
|
switch (ext) {
|
1153
1155
|
case 'mp4':
|
1154
1156
|
case 'm4v':
|
1157
|
+
case 'm4a':
|
1155
1158
|
return 'mp4';
|
1156
1159
|
case 'webm':
|
1157
1160
|
case 'webma':
|
@@ -1217,8 +1220,8 @@ mejs.HtmlMediaElementShim = {
|
|
1217
1220
|
|
1218
1221
|
// check for placement inside a <p> tag (sometimes WYSIWYG editors do this)
|
1219
1222
|
node = htmlMediaElement.parentNode;
|
1220
|
-
while (node !== null && node.tagName.toLowerCase()
|
1221
|
-
if (node.parentNode.tagName.toLowerCase()
|
1223
|
+
while (node !== null && node.tagName.toLowerCase() !== 'body' && node.parentNode != null) {
|
1224
|
+
if (node.parentNode.tagName.toLowerCase() === 'p') {
|
1222
1225
|
node.parentNode.parentNode.insertBefore(node, node.parentNode);
|
1223
1226
|
break;
|
1224
1227
|
}
|
@@ -1345,9 +1348,18 @@ mejs.HtmlMediaElementShim = {
|
|
1345
1348
|
case 'youtube':
|
1346
1349
|
|
1347
1350
|
|
1348
|
-
var
|
1351
|
+
var videoId;
|
1352
|
+
// youtu.be url from share button
|
1353
|
+
if (playback.url.lastIndexOf("youtu.be") != -1) {
|
1354
|
+
videoId = playback.url.substr(playback.url.lastIndexOf('/')+1);
|
1355
|
+
if (videoId.indexOf('?') != -1) {
|
1356
|
+
videoId = videoId.substr(0, videoId.indexOf('?'));
|
1357
|
+
}
|
1358
|
+
}
|
1359
|
+
else {
|
1349
1360
|
videoId = playback.url.substr(playback.url.lastIndexOf('=')+1);
|
1350
|
-
|
1361
|
+
}
|
1362
|
+
youtubeSettings = {
|
1351
1363
|
container: container,
|
1352
1364
|
containerId: container.id,
|
1353
1365
|
pluginMediaElement: pluginMediaElement,
|
@@ -1367,23 +1379,57 @@ mejs.HtmlMediaElementShim = {
|
|
1367
1379
|
|
1368
1380
|
// DEMO Code. Does NOT work.
|
1369
1381
|
case 'vimeo':
|
1370
|
-
|
1371
|
-
|
1382
|
+
var player_id = pluginid + "_player";
|
1372
1383
|
pluginMediaElement.vimeoid = playback.url.substr(playback.url.lastIndexOf('/')+1);
|
1373
1384
|
|
1374
|
-
container.innerHTML ='<iframe src="
|
1375
|
-
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
1385
|
+
container.innerHTML ='<iframe src="//player.vimeo.com/video/' + pluginMediaElement.vimeoid + '?api=1&portrait=0&byline=0&title=0&player_id=' + player_id + '" width="' + width +'" height="' + height +'" frameborder="0" class="mejs-shim" id="' + player_id + '"></iframe>';
|
1386
|
+
if (typeof($f) == 'function') { // froogaloop available
|
1387
|
+
var player = $f(container.childNodes[0]);
|
1388
|
+
player.addEvent('ready', function() {
|
1389
|
+
player.playVideo = function() {
|
1390
|
+
player.api('play');
|
1391
|
+
};
|
1392
|
+
player.pauseVideo = function() {
|
1393
|
+
player.api('pause');
|
1394
|
+
};
|
1395
|
+
player.seekTo = function(seconds) {
|
1396
|
+
player.api('seekTo', seconds);
|
1397
|
+
};
|
1398
|
+
function createEvent(player, pluginMediaElement, eventName, e) {
|
1399
|
+
var obj = {
|
1400
|
+
type: eventName,
|
1401
|
+
target: pluginMediaElement
|
1402
|
+
};
|
1403
|
+
if (eventName == 'timeupdate') {
|
1404
|
+
pluginMediaElement.currentTime = obj.currentTime = e.seconds;
|
1405
|
+
pluginMediaElement.duration = obj.duration = e.duration;
|
1406
|
+
}
|
1407
|
+
pluginMediaElement.dispatchEvent(obj.type, obj);
|
1408
|
+
}
|
1409
|
+
player.addEvent('play', function() {
|
1410
|
+
createEvent(player, pluginMediaElement, 'play');
|
1411
|
+
createEvent(player, pluginMediaElement, 'playing');
|
1412
|
+
});
|
1413
|
+
player.addEvent('pause', function() {
|
1414
|
+
createEvent(player, pluginMediaElement, 'pause');
|
1415
|
+
});
|
1416
|
+
|
1417
|
+
player.addEvent('finish', function() {
|
1418
|
+
createEvent(player, pluginMediaElement, 'ended');
|
1419
|
+
});
|
1420
|
+
player.addEvent('playProgress', function(e) {
|
1421
|
+
createEvent(player, pluginMediaElement, 'timeupdate', e);
|
1422
|
+
});
|
1423
|
+
pluginMediaElement.pluginApi = player;
|
1424
|
+
|
1425
|
+
// init mejs
|
1426
|
+
mejs.MediaPluginBridge.initPlugin(pluginid);
|
1427
|
+
|
1428
|
+
});
|
1429
|
+
}
|
1430
|
+
else {
|
1431
|
+
console.warn("You need to include froogaloop for vimeo to work");
|
1432
|
+
}
|
1387
1433
|
break;
|
1388
1434
|
}
|
1389
1435
|
// hide original element
|
@@ -1539,7 +1585,7 @@ mejs.YouTubeApi = {
|
|
1539
1585
|
},
|
1540
1586
|
length: 1
|
1541
1587
|
};
|
1542
|
-
|
1588
|
+
|
1543
1589
|
}
|
1544
1590
|
|
1545
1591
|
// send event up the chain
|
@@ -532,8 +532,8 @@ if (typeof jQuery != 'undefined') {
|
|
532
532
|
} catch (e) {
|
533
533
|
// TODO: report control error
|
534
534
|
//throw e;
|
535
|
-
|
536
|
-
|
535
|
+
|
536
|
+
|
537
537
|
}
|
538
538
|
}
|
539
539
|
}
|
@@ -570,7 +570,7 @@ if (typeof jQuery != 'undefined') {
|
|
570
570
|
|
571
571
|
// create callback here since it needs access to current
|
572
572
|
// MediaElement object
|
573
|
-
|
573
|
+
t.clickToPlayPauseCallback = function() {
|
574
574
|
//
|
575
575
|
|
576
576
|
if (t.options.clickToPlayPause) {
|
@@ -771,6 +771,11 @@ if (typeof jQuery != 'undefined') {
|
|
771
771
|
parentWidth = t.container.parent().closest(':visible').width(),
|
772
772
|
newHeight = t.isVideo || !t.options.autosizeProgress ? parseInt(parentWidth * nativeHeight/nativeWidth, 10) : nativeHeight;
|
773
773
|
|
774
|
+
// When we use percent, the newHeight can't be calculated so we get the container height
|
775
|
+
if(isNaN(newHeight)) {
|
776
|
+
newHeight = t.container.parent().closest(':visible').height();
|
777
|
+
}
|
778
|
+
|
774
779
|
if (t.container.parent()[0].tagName.toLowerCase() === 'body') { // && t.container.siblings().count == 0) {
|
775
780
|
parentWidth = $(window).width();
|
776
781
|
newHeight = $(window).height();
|
@@ -830,7 +835,14 @@ if (typeof jQuery != 'undefined') {
|
|
830
835
|
total = t.controls.find('.mejs-time-total'),
|
831
836
|
current = t.controls.find('.mejs-time-current'),
|
832
837
|
loaded = t.controls.find('.mejs-time-loaded'),
|
833
|
-
others = rail.siblings()
|
838
|
+
others = rail.siblings(),
|
839
|
+
lastControl = others.last(),
|
840
|
+
lastControlPosition = null;
|
841
|
+
|
842
|
+
// skip calculation if hidden
|
843
|
+
if (!t.container.is(':visible') || !rail.length || !rail.is(':visible')) {
|
844
|
+
return;
|
845
|
+
}
|
834
846
|
|
835
847
|
|
836
848
|
// allow the size to come from custom CSS
|
@@ -854,12 +866,22 @@ if (typeof jQuery != 'undefined') {
|
|
854
866
|
// fit the rail into the remaining space
|
855
867
|
railWidth = t.controls.width() - usedWidth - (rail.outerWidth(true) - rail.width());
|
856
868
|
}
|
857
|
-
|
858
|
-
//
|
859
|
-
|
860
|
-
//
|
861
|
-
|
862
|
-
|
869
|
+
|
870
|
+
// resize the rail,
|
871
|
+
// but then check if the last control (say, the fullscreen button) got pushed down
|
872
|
+
// this often happens when zoomed
|
873
|
+
do {
|
874
|
+
// outer area
|
875
|
+
rail.width(railWidth);
|
876
|
+
// dark space
|
877
|
+
total.width(railWidth - (total.outerWidth(true) - total.width()));
|
878
|
+
|
879
|
+
if (lastControl.css('position') != 'absolute') {
|
880
|
+
lastControlPosition = lastControl.position();
|
881
|
+
railWidth--;
|
882
|
+
}
|
883
|
+
} while (lastControlPosition != null && lastControlPosition.top > 0 && railWidth > 0);
|
884
|
+
|
863
885
|
if (t.setProgressRail)
|
864
886
|
t.setProgressRail();
|
865
887
|
if (t.setCurrentRail)
|
@@ -938,7 +960,7 @@ if (typeof jQuery != 'undefined') {
|
|
938
960
|
.bind('click touchstart', function() {
|
939
961
|
if (t.options.clickToPlayPause) {
|
940
962
|
if (media.paused) {
|
941
|
-
|
963
|
+
media.play();
|
942
964
|
}
|
943
965
|
}
|
944
966
|
});
|
@@ -1039,9 +1061,7 @@ if (typeof jQuery != 'undefined') {
|
|
1039
1061
|
|
1040
1062
|
// check if someone clicked outside a player region, then kill its focus
|
1041
1063
|
t.globalBind('click', function(event) {
|
1042
|
-
|
1043
|
-
player.hasFocus = false;
|
1044
|
-
}
|
1064
|
+
player.hasFocus = $(event.target).closest('.mejs-container').length != 0;
|
1045
1065
|
});
|
1046
1066
|
|
1047
1067
|
},
|
@@ -1142,7 +1162,9 @@ if (typeof jQuery != 'undefined') {
|
|
1142
1162
|
// Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to pause a non existance flash api.
|
1143
1163
|
delete mejs.players[t.id];
|
1144
1164
|
|
1145
|
-
t.container
|
1165
|
+
if (typeof t.container == 'object') {
|
1166
|
+
t.container.remove();
|
1167
|
+
}
|
1146
1168
|
t.globalUnbind();
|
1147
1169
|
delete t.node.player;
|
1148
1170
|
}
|
@@ -1325,9 +1347,14 @@ if (typeof jQuery != 'undefined') {
|
|
1325
1347
|
timefloat = controls.find('.mejs-time-float'),
|
1326
1348
|
timefloatcurrent = controls.find('.mejs-time-float-current'),
|
1327
1349
|
handleMouseMove = function (e) {
|
1328
|
-
// mouse position relative to the object
|
1329
|
-
|
1330
|
-
|
1350
|
+
// mouse or touch position relative to the object
|
1351
|
+
if (e.originalEvent.changedTouches) {
|
1352
|
+
var x = e.originalEvent.changedTouches[0].pageX;
|
1353
|
+
}else{
|
1354
|
+
var x = e.pageX;
|
1355
|
+
}
|
1356
|
+
|
1357
|
+
var offset = total.offset(),
|
1331
1358
|
width = total.outerWidth(true),
|
1332
1359
|
percentage = 0,
|
1333
1360
|
newTime = 0,
|
@@ -1364,15 +1391,15 @@ if (typeof jQuery != 'undefined') {
|
|
1364
1391
|
// handle clicks
|
1365
1392
|
//controls.find('.mejs-time-rail').delegate('span', 'click', handleMouseMove);
|
1366
1393
|
total
|
1367
|
-
.bind('mousedown', function (e) {
|
1368
|
-
// only handle left clicks
|
1369
|
-
if (e.which === 1) {
|
1394
|
+
.bind('mousedown touchstart', function (e) {
|
1395
|
+
// only handle left clicks or touch
|
1396
|
+
if (e.which === 1 || e.which === 0) {
|
1370
1397
|
mouseIsDown = true;
|
1371
1398
|
handleMouseMove(e);
|
1372
|
-
t.globalBind('mousemove.dur', function(e) {
|
1399
|
+
t.globalBind('mousemove.dur touchmove.dur', function(e) {
|
1373
1400
|
handleMouseMove(e);
|
1374
1401
|
});
|
1375
|
-
t.globalBind('mouseup.dur', function (e) {
|
1402
|
+
t.globalBind('mouseup.dur touchend.dur', function (e) {
|
1376
1403
|
mouseIsDown = false;
|
1377
1404
|
timefloat.hide();
|
1378
1405
|
t.globalUnbind('.dur');
|
@@ -1569,7 +1596,7 @@ if (typeof jQuery != 'undefined') {
|
|
1569
1596
|
buildvolume: function(player, controls, layers, media) {
|
1570
1597
|
|
1571
1598
|
// Android and iOS don't support volume controls
|
1572
|
-
if (mejs.MediaFeatures.
|
1599
|
+
if ((mejs.MediaFeatures.isAndroid || mejs.MediaFeatures.isiOS) && this.options.hideVolumeOnTouchDevices)
|
1573
1600
|
return;
|
1574
1601
|
|
1575
1602
|
var t = this,
|
@@ -2103,9 +2130,16 @@ if (typeof jQuery != 'undefined') {
|
|
2103
2130
|
setTimeout(function checkFullscreen() {
|
2104
2131
|
|
2105
2132
|
if (t.isNativeFullScreen) {
|
2133
|
+
var zoomMultiplier = window["devicePixelRatio"] || 1;
|
2134
|
+
// Use a percent error margin since devicePixelRatio is a float and not exact.
|
2135
|
+
var percentErrorMargin = 0.002; // 0.2%
|
2136
|
+
var windowWidth = zoomMultiplier * $(window).width();
|
2137
|
+
var screenWidth = screen.width;
|
2138
|
+
var absDiff = Math.abs(screenWidth - windowWidth);
|
2139
|
+
var marginError = screenWidth * percentErrorMargin;
|
2106
2140
|
|
2107
2141
|
// check if the video is suddenly not really fullscreen
|
2108
|
-
if (
|
2142
|
+
if (absDiff > marginError) {
|
2109
2143
|
// manually exit
|
2110
2144
|
t.exitFullScreen();
|
2111
2145
|
} else {
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediaelement_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Oleson
|
@@ -10,118 +10,118 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-04-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: railties
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '3.1'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: jquery-rails
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '1.0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '1.0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rails
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: '3.1'
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '3.1'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: i18n
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '0'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: turn
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - ">="
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - ">="
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: sqlite3
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- -
|
89
|
+
- - ">="
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '0'
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- -
|
96
|
+
- - ">="
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: thor
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
|
-
- -
|
103
|
+
- - ">="
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
version: '0'
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
|
-
- -
|
110
|
+
- - ">="
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: rake
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
|
-
- -
|
117
|
+
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '0'
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- -
|
124
|
+
- - ">="
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
127
|
description: A MediaElement gem(engine) for Rails. Makes embedding HTML5 video easy.
|
@@ -133,7 +133,7 @@ executables: []
|
|
133
133
|
extensions: []
|
134
134
|
extra_rdoc_files: []
|
135
135
|
files:
|
136
|
-
- .gitignore
|
136
|
+
- ".gitignore"
|
137
137
|
- CHANGELOG.md
|
138
138
|
- Gemfile
|
139
139
|
- MIT-LICENSE
|
@@ -211,12 +211,12 @@ require_paths:
|
|
211
211
|
- lib
|
212
212
|
required_ruby_version: !ruby/object:Gem::Requirement
|
213
213
|
requirements:
|
214
|
-
- -
|
214
|
+
- - ">="
|
215
215
|
- !ruby/object:Gem::Version
|
216
216
|
version: '0'
|
217
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
218
|
requirements:
|
219
|
-
- -
|
219
|
+
- - ">="
|
220
220
|
- !ruby/object:Gem::Version
|
221
221
|
version: '0'
|
222
222
|
requirements: []
|