fullcalendar.io-rails 3.3.0 → 3.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fff0c0d29fd03d1936961495bfeca8ee0954dbb7
4
- data.tar.gz: f126510b73657173511b0d60ef8733f76cc5678e
3
+ metadata.gz: 183d16d2fc0cd0013d71ab3931e407e1c462d825
4
+ data.tar.gz: c240d22deeced6d3ed07fa23f1c2fd5773146531
5
5
  SHA512:
6
- metadata.gz: c15e22c3fffaea4c7c253fff9090216f5954000c18cc5668f37e1450c0db57ed281e4354fbf08ade8552cf26f232f55023609e1bec77f45a32c92a734b04c21d
7
- data.tar.gz: bbf9a890a7af974c9f87978cfdf0438a7f53e198b057cdc7fb9b24fa5be55b0a42f74c965bbe049d0090b7b4b15671478b43ac32c0729991378fc70b3dd0d23e
6
+ metadata.gz: 647278a51aa2ad0b2416cd7e6f2be82499e04a06eeaa3f40a7950d02884b75538d6d2dd0d5567313053c20c9c4b3cf45f4c94d6862355def7fa66bd6318f4f9f
7
+ data.tar.gz: eec81bf6e5a4038afb977bb8d725751159582fbe657ae95cdc7cde4598be179c7a54a6caed08d97872e0d642ef02d16d14f5adac7f001b51ca13471dc825d3c4
@@ -1,5 +1,5 @@
1
1
  module Fullcalendario
2
2
  module Rails
3
- VERSION = "3.3.0"
3
+ VERSION = "3.3.1"
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v3.3.0
2
+ * FullCalendar v3.3.1
3
3
  * Docs & License: https://fullcalendar.io/
4
4
  * (c) 2017 Adam Shaw
5
5
  */
@@ -19,11 +19,11 @@
19
19
  ;;
20
20
 
21
21
  var FC = $.fullCalendar = {
22
- version: "3.3.0",
22
+ version: "3.3.1",
23
23
  // When introducing internal API incompatibilities (where fullcalendar plugins would break),
24
24
  // the minor version of the calendar should be upped (ex: 2.7.2 -> 2.8.0)
25
25
  // and the below integer should be incremented.
26
- internalApiVersion: 8
26
+ internalApiVersion: 9
27
27
  };
28
28
  var fcViews = FC.views = {};
29
29
 
@@ -277,6 +277,7 @@ function getOuterRect(el, origin) {
277
277
  // Queries the area within the margin/border/scrollbars of a jQuery element. Does not go within the padding.
278
278
  // Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).
279
279
  // Origin is optional.
280
+ // WARNING: given element can't have borders
280
281
  // NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.
281
282
  function getClientRect(el, origin) {
282
283
  var offset = el.offset();
@@ -313,10 +314,11 @@ function getContentRect(el, origin) {
313
314
 
314
315
 
315
316
  // Returns the computed left/right/top/bottom scrollbar widths for the given jQuery element.
317
+ // WARNING: given element can't have borders (which will cause offsetWidth/offsetHeight to be larger).
316
318
  // NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.
317
319
  function getScrollbarWidths(el) {
318
- var leftRightWidth = el.innerWidth() - el[0].clientWidth; // the paddings cancel out, leaving the scrollbars
319
- var bottomWidth = el.innerHeight() - el[0].clientHeight; // "
320
+ var leftRightWidth = el[0].offsetWidth - el[0].clientWidth;
321
+ var bottomWidth = el[0].offsetHeight - el[0].clientHeight;
320
322
  var widths;
321
323
 
322
324
  leftRightWidth = sanitizeScrollbarWidth(leftRightWidth);
@@ -680,6 +682,19 @@ function computeGreatestUnit(start, end) {
680
682
  }
681
683
 
682
684
 
685
+ // like computeGreatestUnit, but has special abilities to interpret the source input for clues
686
+ function computeDurationGreatestUnit(duration, durationInput) {
687
+ var unit = computeGreatestUnit(duration);
688
+
689
+ // prevent days:7 from being interpreted as a week
690
+ if (unit === 'week' && typeof durationInput === 'object' && durationInput.days) {
691
+ unit = 'day';
692
+ }
693
+
694
+ return unit;
695
+ }
696
+
697
+
683
698
  // Computes the number of units (like "hours") in the given range.
684
699
  // Range can be a {start,end} object, separate start/end args, or a Duration.
685
700
  // Results are based on Moment's .as() and .diff() methods, so results can depend on internal handling
@@ -8960,7 +8975,7 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {
8960
8975
  var isReset = this.isDateSet;
8961
8976
 
8962
8977
  this.isDateSet = true;
8963
- this.handleDate(date, isReset);
8978
+ this.handleRawDate(date);
8964
8979
  this.trigger(isReset ? 'dateReset' : 'dateSet', date);
8965
8980
  },
8966
8981
 
@@ -8978,12 +8993,31 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {
8978
8993
  // -----------------------------------------------------------------------------------------------------------------
8979
8994
 
8980
8995
 
8981
- handleDate: function(date, isReset) {
8996
+ handleRawDate: function(date) {
8997
+ var _this = this;
8998
+ var dateProfile = this.buildDateProfile(date, null, true); // forceToValid=true
8999
+
9000
+ if (!this.isSameDateProfile(dateProfile)) { // real change
9001
+ this.handleDate(dateProfile);
9002
+ }
9003
+ else {
9004
+ // View might have no date change, but still needs to render (because of a view unrender/rerender).
9005
+ // Wait for possible queued unrenders. TODO: refactor.
9006
+ this.dateRenderQueue.add(function() {
9007
+ if (!_this.isDateRendered) {
9008
+ _this.handleDate(dateProfile);
9009
+ }
9010
+ });
9011
+ }
9012
+ },
9013
+
9014
+
9015
+ handleDate: function(dateProfile) {
8982
9016
  var _this = this;
8983
9017
 
8984
9018
  this.unbindEvents(); // will do nothing if not already bound
8985
- this.requestDateRender(date).then(function() {
8986
- // wish we could start earlier, but setRangeFromDate needs to execute first
9019
+ this.requestDateRender(dateProfile).then(function() {
9020
+ // wish we could start earlier, but setDateProfile needs to execute first
8987
9021
  _this.bindEvents(); // will request events
8988
9022
  });
8989
9023
  },
@@ -8999,12 +9033,12 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {
8999
9033
  // -----------------------------------------------------------------------------------------------------------------
9000
9034
 
9001
9035
 
9002
- // if date not specified, uses current
9003
- requestDateRender: function(date) {
9036
+ // if dateProfile not specified, uses current
9037
+ requestDateRender: function(dateProfile) {
9004
9038
  var _this = this;
9005
9039
 
9006
9040
  return this.dateRenderQueue.add(function() {
9007
- return _this.executeDateRender(date);
9041
+ return _this.executeDateRender(dateProfile);
9008
9042
  });
9009
9043
  },
9010
9044
 
@@ -9022,50 +9056,46 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {
9022
9056
  // -----------------------------------------------------------------------------------------------------------------
9023
9057
 
9024
9058
 
9025
- // if date not specified, uses current
9026
- executeDateRender: function(date) {
9059
+ // if dateProfile not specified, uses current
9060
+ executeDateRender: function(dateProfile) {
9027
9061
  var _this = this;
9028
- var rangeChanged = false;
9029
9062
 
9030
- if (date) {
9031
- rangeChanged = _this.setRangeFromDate(date);
9063
+ if (dateProfile) {
9064
+ _this.setDateProfile(dateProfile);
9032
9065
  }
9033
9066
 
9034
- if (!date || rangeChanged || !_this.isDateRendered) { // should render?
9067
+ this.updateTitle();
9068
+ this.calendar.updateToolbarButtons();
9035
9069
 
9036
- // if rendering a new date, reset scroll to initial state (scrollTime)
9037
- if (date) {
9038
- this.captureInitialScroll();
9039
- }
9040
- else {
9041
- this.captureScroll(); // a rerender of the current date
9042
- }
9070
+ // if rendering a new date, reset scroll to initial state (scrollTime)
9071
+ if (dateProfile) {
9072
+ this.captureInitialScroll();
9073
+ }
9074
+ else {
9075
+ this.captureScroll(); // a rerender of the current date
9076
+ }
9043
9077
 
9044
- this.freezeHeight();
9078
+ this.freezeHeight();
9045
9079
 
9046
- // potential issue: date-unrendering will happen with the *new* range
9047
- return this.executeDateUnrender().then(function() {
9080
+ // potential issue: date-unrendering will happen with the *new* range
9081
+ return this.executeDateUnrender().then(function() {
9048
9082
 
9049
- if (_this.render) {
9050
- _this.render(); // TODO: deprecate
9051
- }
9083
+ if (_this.render) {
9084
+ _this.render(); // TODO: deprecate
9085
+ }
9052
9086
 
9053
- _this.renderDates();
9054
- _this.updateSize();
9055
- _this.renderBusinessHours(); // might need coordinates, so should go after updateSize()
9056
- _this.startNowIndicator();
9087
+ _this.renderDates();
9088
+ _this.updateSize();
9089
+ _this.renderBusinessHours(); // might need coordinates, so should go after updateSize()
9090
+ _this.startNowIndicator();
9057
9091
 
9058
- _this.thawHeight();
9059
- _this.releaseScroll();
9092
+ _this.thawHeight();
9093
+ _this.releaseScroll();
9060
9094
 
9061
- _this.isDateRendered = true;
9062
- _this.onDateRender();
9063
- _this.trigger('dateRender');
9064
- });
9065
- }
9066
- else {
9067
- return Promise.resolve();
9068
- }
9095
+ _this.isDateRendered = true;
9096
+ _this.onDateRender();
9097
+ _this.trigger('dateRender');
9098
+ });
9069
9099
  },
9070
9100
 
9071
9101
 
@@ -10077,63 +10107,51 @@ View.mixin({
10077
10107
  ------------------------------------------------------------------------------------------------------------------*/
10078
10108
 
10079
10109
 
10080
- // Updates all internal dates/ranges for eventual rendering around the given date.
10081
- // Returns a boolean about whether there was some sort of change.
10082
- setRangeFromDate: function(date) {
10083
-
10084
- var rangeInfo = this.buildRangeInfo(date);
10085
-
10086
- // some sort of change? (TODO: compare other ranges too?)
10087
- if (!this.activeRange || !isRangesEqual(this.activeRange, rangeInfo.activeRange)) {
10088
-
10089
- this.currentRange = rangeInfo.currentRange;
10090
- this.currentRangeUnit = rangeInfo.currentRangeUnit;
10091
- this.renderRange = rangeInfo.renderRange;
10092
- this.activeRange = rangeInfo.activeRange;
10093
- this.validRange = rangeInfo.validRange;
10094
- this.dateIncrement = rangeInfo.dateIncrement;
10095
- this.currentDate = rangeInfo.date;
10096
- this.minTime = rangeInfo.minTime;
10097
- this.maxTime = rangeInfo.maxTime;
10110
+ isSameDateProfile: function(dateProfile) {
10111
+ return this.activeRange && isRangesEqual(this.activeRange, dateProfile.activeRange);
10112
+ },
10098
10113
 
10099
- // DEPRECATED, but we need to keep it updated
10100
- this.start = rangeInfo.activeRange.start;
10101
- this.end = rangeInfo.activeRange.end;
10102
- this.intervalStart = rangeInfo.currentRange.start;
10103
- this.intervalEnd = rangeInfo.currentRange.end;
10104
10114
 
10105
- this.updateTitle();
10106
- this.calendar.updateToolbarButtons();
10115
+ setDateProfile: function(dateProfile) {
10116
+ this.currentRange = dateProfile.currentRange;
10117
+ this.currentRangeUnit = dateProfile.currentRangeUnit;
10118
+ this.renderRange = dateProfile.renderRange;
10119
+ this.activeRange = dateProfile.activeRange;
10120
+ this.validRange = dateProfile.validRange;
10121
+ this.dateIncrement = dateProfile.dateIncrement;
10122
+ this.currentDate = dateProfile.date;
10123
+ this.minTime = dateProfile.minTime;
10124
+ this.maxTime = dateProfile.maxTime;
10107
10125
 
10108
- return true;
10109
- }
10110
-
10111
- return false;
10126
+ // DEPRECATED, but we need to keep it updated
10127
+ this.start = dateProfile.activeRange.start;
10128
+ this.end = dateProfile.activeRange.end;
10129
+ this.intervalStart = dateProfile.currentRange.start;
10130
+ this.intervalEnd = dateProfile.currentRange.end;
10112
10131
  },
10113
10132
 
10114
10133
 
10115
10134
  // Builds a structure with info about what the dates/ranges will be for the "prev" view.
10116
- buildPrevRangeInfo: function(date) {
10135
+ buildPrevDateProfile: function(date) {
10117
10136
  var prevDate = date.clone().startOf(this.currentRangeUnit).subtract(this.dateIncrement);
10118
10137
 
10119
- return this.buildRangeInfo(prevDate, -1);
10138
+ return this.buildDateProfile(prevDate, -1);
10120
10139
  },
10121
10140
 
10122
10141
 
10123
10142
  // Builds a structure with info about what the dates/ranges will be for the "next" view.
10124
- buildNextRangeInfo: function(date) {
10143
+ buildNextDateProfile: function(date) {
10125
10144
  var nextDate = date.clone().startOf(this.currentRangeUnit).add(this.dateIncrement);
10126
10145
 
10127
- return this.buildRangeInfo(nextDate, 1);
10146
+ return this.buildDateProfile(nextDate, 1);
10128
10147
  },
10129
10148
 
10130
10149
 
10131
10150
  // Builds a structure holding dates/ranges for rendering around the given date.
10132
10151
  // Optional direction param indicates whether the date is being incremented/decremented
10133
10152
  // from its previous value. decremented = -1, incremented = 1 (default).
10134
- buildRangeInfo: function(givenDate, direction) {
10153
+ buildDateProfile: function(date, direction, forceToValid) {
10135
10154
  var validRange = this.buildValidRange();
10136
- var constrainedDate = constrainDate(givenDate, validRange);
10137
10155
  var minTime = null;
10138
10156
  var maxTime = null;
10139
10157
  var currentInfo;
@@ -10141,7 +10159,11 @@ View.mixin({
10141
10159
  var activeRange;
10142
10160
  var isValid;
10143
10161
 
10144
- currentInfo = this.buildCurrentRangeInfo(constrainedDate, direction);
10162
+ if (forceToValid) {
10163
+ date = constrainDate(date, validRange);
10164
+ }
10165
+
10166
+ currentInfo = this.buildCurrentRangeInfo(date, direction);
10145
10167
  renderRange = this.buildRenderRange(currentInfo.range, currentInfo.unit);
10146
10168
  activeRange = cloneRange(renderRange);
10147
10169
 
@@ -10154,12 +10176,11 @@ View.mixin({
10154
10176
  this.adjustActiveRange(activeRange, minTime, maxTime);
10155
10177
 
10156
10178
  activeRange = constrainRange(activeRange, validRange);
10157
- constrainedDate = constrainDate(constrainedDate, activeRange);
10179
+ date = constrainDate(date, activeRange);
10158
10180
 
10159
10181
  // it's invalid if the originally requested date is not contained,
10160
10182
  // or if the range is completely outside of the valid range.
10161
- isValid = isDateWithinRange(givenDate, currentInfo.range) &&
10162
- doRangesIntersect(currentInfo.range, validRange);
10183
+ isValid = doRangesIntersect(currentInfo.range, validRange);
10163
10184
 
10164
10185
  return {
10165
10186
  validRange: validRange,
@@ -10170,7 +10191,7 @@ View.mixin({
10170
10191
  minTime: minTime,
10171
10192
  maxTime: maxTime,
10172
10193
  isValid: isValid,
10173
- date: constrainedDate,
10194
+ date: date,
10174
10195
  dateIncrement: this.buildDateIncrement(currentInfo.duration)
10175
10196
  // pass a fallback (might be null) ^
10176
10197
  };
@@ -10186,7 +10207,7 @@ View.mixin({
10186
10207
 
10187
10208
  // Builds a structure with info about the "current" range, the range that is
10188
10209
  // highlighted as being the current month for example.
10189
- // See buildRangeInfo for a description of `direction`.
10210
+ // See buildDateProfile for a description of `direction`.
10190
10211
  // Guaranteed to have `range` and `unit` properties. `duration` is optional.
10191
10212
  buildCurrentRangeInfo: function(date, direction) {
10192
10213
  var duration = null;
@@ -10274,9 +10295,11 @@ View.mixin({
10274
10295
  // Builds the "current" range when it is specified as an explicit duration.
10275
10296
  // `unit` is the already-computed computeGreatestUnit value of duration.
10276
10297
  buildRangeFromDuration: function(date, direction, duration, unit) {
10277
- var customAlignment = this.opt('dateAlignment');
10298
+ var alignment = this.opt('dateAlignment');
10278
10299
  var start = date.clone();
10279
10300
  var end;
10301
+ var dateIncrementInput;
10302
+ var dateIncrementDuration;
10280
10303
 
10281
10304
  // if the view displays a single day or smaller
10282
10305
  if (duration.as('days') <= 1) {
@@ -10286,7 +10309,27 @@ View.mixin({
10286
10309
  }
10287
10310
  }
10288
10311
 
10289
- start.startOf(customAlignment || unit);
10312
+ // compute what the alignment should be
10313
+ if (!alignment) {
10314
+ dateIncrementInput = this.opt('dateIncrement');
10315
+
10316
+ if (dateIncrementInput) {
10317
+ dateIncrementDuration = moment.duration(dateIncrementInput);
10318
+
10319
+ // use the smaller of the two units
10320
+ if (dateIncrementDuration < duration) {
10321
+ alignment = computeDurationGreatestUnit(dateIncrementDuration, dateIncrementInput);
10322
+ }
10323
+ else {
10324
+ alignment = unit;
10325
+ }
10326
+ }
10327
+ else {
10328
+ alignment = unit;
10329
+ }
10330
+ }
10331
+
10332
+ start.startOf(alignment);
10290
10333
  end = start.clone().add(duration);
10291
10334
 
10292
10335
  return { start: start, end: end };
@@ -11021,12 +11064,7 @@ var Calendar = FC.Calendar = Class.extend({
11021
11064
 
11022
11065
  if (duration.valueOf()) { // valid?
11023
11066
 
11024
- unit = computeGreatestUnit(duration);
11025
-
11026
- // prevent days:7 from being interpreted as a week
11027
- if (unit === 'week' && typeof durationInput === 'object' && durationInput.days) {
11028
- unit = 'day';
11029
- }
11067
+ unit = computeDurationGreatestUnit(duration, durationInput);
11030
11068
 
11031
11069
  spec.duration = duration;
11032
11070
  spec.durationUnit = unit;
@@ -11182,7 +11220,7 @@ var Calendar = FC.Calendar = Class.extend({
11182
11220
 
11183
11221
 
11184
11222
  prev: function() {
11185
- var prevInfo = this.view.buildPrevRangeInfo(this.currentDate);
11223
+ var prevInfo = this.view.buildPrevDateProfile(this.currentDate);
11186
11224
 
11187
11225
  if (prevInfo.isValid) {
11188
11226
  this.currentDate = prevInfo.date;
@@ -11192,7 +11230,7 @@ var Calendar = FC.Calendar = Class.extend({
11192
11230
 
11193
11231
 
11194
11232
  next: function() {
11195
- var nextInfo = this.view.buildNextRangeInfo(this.currentDate);
11233
+ var nextInfo = this.view.buildNextDateProfile(this.currentDate);
11196
11234
 
11197
11235
  if (nextInfo.isValid) {
11198
11236
  this.currentDate = nextInfo.date;
@@ -11852,9 +11890,9 @@ function Calendar_constructor(element, overrides) {
11852
11890
 
11853
11891
  t.updateToolbarButtons = function() {
11854
11892
  var now = t.getNow();
11855
- var todayInfo = currentView.buildRangeInfo(now);
11856
- var prevInfo = currentView.buildPrevRangeInfo(t.currentDate);
11857
- var nextInfo = currentView.buildNextRangeInfo(t.currentDate);
11893
+ var todayInfo = currentView.buildDateProfile(now);
11894
+ var prevInfo = currentView.buildPrevDateProfile(t.currentDate);
11895
+ var nextInfo = currentView.buildNextDateProfile(t.currentDate);
11858
11896
 
11859
11897
  toolbarsManager.proxyCall(
11860
11898
  (todayInfo.isValid && !isDateWithinRange(now, currentView.currentRange)) ?
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v3.3.0 Google Calendar Plugin
2
+ * FullCalendar v3.3.1 Google Calendar Plugin
3
3
  * Docs & License: https://fullcalendar.io/
4
4
  * (c) 2017 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v3.3.0 Stylesheet
2
+ * FullCalendar v3.3.1 Stylesheet
3
3
  * Docs & License: https://fullcalendar.io/
4
4
  * (c) 2017 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v3.3.0 Print Stylesheet
2
+ * FullCalendar v3.3.1 Print Stylesheet
3
3
  * Docs & License: https://fullcalendar.io/
4
4
  * (c) 2017 Adam Shaw
5
5
  */
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fullcalendar.io-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - dbackowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-26 00:00:00.000000000 Z
11
+ date: 2017-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jquery-rails
@@ -187,18 +187,31 @@ files:
187
187
  - spec/dummy/public/422.html
188
188
  - spec/dummy/public/500.html
189
189
  - spec/dummy/public/favicon.ico
190
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/2P/2P5spSyAcTAKS4aCA-o3-eXv6E_hhMQmXrpzm1mcdQQ.cache
191
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/3d/3dKzammzi4qtSyy2vg82IYFv_dZnHtMqE4-I2QRgnLI.cache
192
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/4L/4Lncie-grIRu8o3w0GoLUEwN2hjKhoV4euPXWcGdOVI.cache
190
193
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/4y/4yDGyI9P-ycbEJV3st7b3Cl23UUy3mS_8dOItuQ4WQs.cache
194
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/5G/5G9j-cEcAJdCJzGLf8VkajaMgg0o6ibXwG0NLVHD3dI.cache
195
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/5L/5LvHvKruXO5TFlFaUSXyZKddNWWaFa-ZRwj4qjWSZls.cache
196
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/60/60QR035PTzIL_ERGf1ZenH-53wM4Ajhg_glBdQTPOzg.cache
191
197
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/7X/7XT_zYx_T65Ig1-tI3W2b-1YmBgSN5ocwaRU6JWLg50.cache
198
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/7Y/7Y9wslxA9L8dPk0r4uGCY-FVf7AnvQC96y4Vw1Ja_fw.cache
192
199
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/9l/9lyDx_SpBBKxlLmBR6419nzqj7bX9kE1pKAu81-j1e8.cache
193
200
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/9m/9mgdO_CaXZJ-vC5ll8cP1XKz3wCECNQSPLjUeXC5d00.cache
194
201
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/CV/CVEYgRUZBsm1bBquX1-8SqFdT7sc9GPLGQPJ_NK9Uh0.cache
195
202
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/CZ/CZHjvu2s7K-UnKF62Xk-ACIbM8s3VoQgAPVMuCKM5iI.cache
196
203
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/DK/DKPi01dwcEcU_ydI496hnsR36bDQK3ZaTD6H6AGDVSo.cache
197
204
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/DR/DRoNiGViBBUT-1VTQCcg8omGljl88QwNIxVREbYaPk0.cache
205
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Fv/FvJlRHyMKMMSd8hoIJzDDQPRakvpf21WietXgAHoYIY.cache
206
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Fz/FzygF5SKhztBrKXeEPvroCRZe4QS87qMo_wMOE4s2Nk.cache
198
207
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Hb/HbyJZdNWCMyI7J2Kxw-ppzZ1Cf5KdveMkkcnUVG60GM.cache
208
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/I0/I04BxjPsEGmsMr88ORwuWpgGXLI1dRnB1c5ndH8egcI.cache
199
209
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/IL/ILhpn6eigtulj-mYC5zvPjOE49OeJUCj0HzRfTSEUTo.cache
210
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/K1/K1O7XumnEzOMuOqGCa8E_qICaU1FatsdxaxOBvoZuUU.cache
200
211
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Ko/KolhVuPF1NkgO0S-1x6v1xNGb5gFEWEjvZEEteEHGxU.cache
212
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Mp/MpTrMaNLnURkrOude8Mai0Q-9tXWm3QFE-sEAxGQvHI.cache
201
213
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/N8/N84EFqwrsTo_Tw88DjZpZc62Z7euEwwKkTLU4VMrMDE.cache
214
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/PW/PWm6uPcS4qVtvPmC-utmC-HWI0eZsHLj3ztWoPGmwxU.cache
202
215
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Qh/Qhj6lhYjgrbxCrzYZuQHtAJnrc4GAU02MUNlKDg3ceY.cache
203
216
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Qv/QvdKQXdJJXdFSOXQ-MXRTBiQtyVgc5RvjCJZ6J4rg00.cache
204
217
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Rb/Rbm8nkPS1Of8Rz0rWkok4MSNVIlnPgH9XHKR7hgiv04.cache
@@ -206,20 +219,36 @@ files:
206
219
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/TX/TXvC1s0RwEok5qyXreihpd5DOVq-nJ50VidQ5BGZskQ.cache
207
220
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/UE/UEDUyjE1DXBxIQ_p0U_E_t5I_cJvlnVOKlXNU4GqS_Y.cache
208
221
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Uh/UhsOeKMDQiu7EfjvaV9ohgtqjGaU4uXFmQbtEx_jMBw.cache
222
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/WI/WI50RPknV6gYR0Aplyrv_mFxOZ_pMLvAwoxgBa8a8iY.cache
209
223
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Wj/WjH_EHXvlMDw78-0_LEnXWHfmat2T4EIjjRnQr8XpLg.cache
224
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Zd/Zd974jZcxvH-MhDRGTUpL9wkcI-X3w3cnd9AtuEDlGk.cache
210
225
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/a4/a4_fyeSyS2-mZ9BX47IKD8z_lsJfQ8XxlYmqHolNSok.cache
226
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/ab/abIHusMZFinoCmUhvtot_5XjKVHWpxFX7uEBYlWA3Co.cache
211
227
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/ak/akEtN5UI756WTx2HrDpUrmyaxtLOesJIsbh7SMrNBxo.cache
212
228
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/c5/c5ukb30hpWfrOXfKCTNn9yBORe7ZQR9PJjGMKMsAe6w.cache
229
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/h0/h0rn1DiPO9ccypGoAqlMHn551__8MAMynJGHJ4eKRO8.cache
213
230
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/h1/h1-mgdelDIkDFRTv01FyDH_SPuu-SNjfuyPjzxkTBdE.cache
231
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/hf/hfQ0m4DOk_gg28K1MxF6hVeEgnen75YgCSFNh7Sla-k.cache
232
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/i0/i0-dpmkq2Qg1Z74SElswjQuqpgKCEKg_S0Z6BNfnglQ.cache
214
233
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/jS/jSIhGbOIMmrTZwhfKUglo6FfoHenUfowQb0XlmibruI.cache
215
234
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/l4/l4HO2rzZUYDw4TbQtFtDQzVjLH7Vz8XxxPAEZjYR7xo.cache
235
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/lc/lcDzAqoOnJPKB4xQjCKQF7M1VhLmtjTfd75MB3pjwnQ.cache
236
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/mN/mNgeptjwXN7Y-qDaMNLgh386iNcLLYAxNKIDHKYf1MQ.cache
216
237
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/p8/p81pAbcLJHXA6CG_aMyQkwMuh-lrXqqVY4mTgdnXmUo.cache
238
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/pL/pLyPfUXjSp954q5Xo2evt--UelJhRhb-9_GHHJ4H_ks.cache
239
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/pP/pPSiidm8ssfTxzaSv3HDCnUOuguPwGI7ZNvndWgqrrs.cache
240
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/ps/ps4TqKx-BwydgW8ZhE2JsdStYDg7uJpBbs_Jwlou9LU.cache
241
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/qT/qT1JHngVlVMYsfOs8djSPuBnb8xL6zpg56GMf7IoWnY.cache
217
242
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/rh/rhYQUAg7PWjDiHfFfHyqnSbdco2A-XtwQL-caAd6Vhs.cache
218
243
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/uE/uE2U4G3P2HooIC1xKr87545DNdocxCbwAg3GOKFYtmk.cache
244
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/uJ/uJgvt1T01ZLyh6mh8pU68YwutZEqJJnDZExH39O-pps.cache
245
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/uj/ujOz1icLtoO2u6Xs-dDld2yYJDg905RW9859E_Ll354.cache
219
246
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/v5/v50HRxuwfzJwnH_gq5x6fv-NxrraSPkUNYwd1ltq6Ck.cache
220
247
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/vl/vlZYZK4PdV8DB-4CyGZuH-1e-Ts3JVLjSpRP4Djpf98.cache
221
248
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/wz/wz0K-l71cAY6qzTqNojmW0icKR0Xy4cIOdjAyV_Qq94.cache
249
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/xA/xAB8K05aO57Z3nT_o2p9XmIopdBbdZmQU7BkSN7BiI4.cache
222
250
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/xK/xKV2Id3Vd6th4Mw_Xlz6QvEsxO9jF--t8S31xC3IyIg.cache
251
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/xa/xau3ikIdr5UoXeg2moTigSxLRwWfUIvrVWlCr2TpcHo.cache
223
252
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/y8/y8npHBsQJHpNd5vLRaY1exx-HSaKZpvNm8flv2AwaIY.cache
224
253
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/yz/yz6jNITUuiiRhpp2UF6fgHGaoHmOwrnL1u29somV0V0.cache
225
254
  - spec/features/assets_spec.rb
@@ -325,39 +354,68 @@ test_files:
325
354
  - spec/dummy/log/test.log
326
355
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Qh/Qhj6lhYjgrbxCrzYZuQHtAJnrc4GAU02MUNlKDg3ceY.cache
327
356
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/CZ/CZHjvu2s7K-UnKF62Xk-ACIbM8s3VoQgAPVMuCKM5iI.cache
357
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/ps/ps4TqKx-BwydgW8ZhE2JsdStYDg7uJpBbs_Jwlou9LU.cache
358
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/qT/qT1JHngVlVMYsfOs8djSPuBnb8xL6zpg56GMf7IoWnY.cache
359
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/ab/abIHusMZFinoCmUhvtot_5XjKVHWpxFX7uEBYlWA3Co.cache
360
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/3d/3dKzammzi4qtSyy2vg82IYFv_dZnHtMqE4-I2QRgnLI.cache
361
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/xa/xau3ikIdr5UoXeg2moTigSxLRwWfUIvrVWlCr2TpcHo.cache
328
362
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/p8/p81pAbcLJHXA6CG_aMyQkwMuh-lrXqqVY4mTgdnXmUo.cache
329
363
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Uh/UhsOeKMDQiu7EfjvaV9ohgtqjGaU4uXFmQbtEx_jMBw.cache
330
364
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/ak/akEtN5UI756WTx2HrDpUrmyaxtLOesJIsbh7SMrNBxo.cache
331
365
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/TX/TXvC1s0RwEok5qyXreihpd5DOVq-nJ50VidQ5BGZskQ.cache
366
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/PW/PWm6uPcS4qVtvPmC-utmC-HWI0eZsHLj3ztWoPGmwxU.cache
332
367
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/v5/v50HRxuwfzJwnH_gq5x6fv-NxrraSPkUNYwd1ltq6Ck.cache
333
368
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/N8/N84EFqwrsTo_Tw88DjZpZc62Z7euEwwKkTLU4VMrMDE.cache
334
369
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/DK/DKPi01dwcEcU_ydI496hnsR36bDQK3ZaTD6H6AGDVSo.cache
370
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Mp/MpTrMaNLnURkrOude8Mai0Q-9tXWm3QFE-sEAxGQvHI.cache
335
371
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/DR/DRoNiGViBBUT-1VTQCcg8omGljl88QwNIxVREbYaPk0.cache
336
372
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/yz/yz6jNITUuiiRhpp2UF6fgHGaoHmOwrnL1u29somV0V0.cache
337
373
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/a4/a4_fyeSyS2-mZ9BX47IKD8z_lsJfQ8XxlYmqHolNSok.cache
338
374
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/CV/CVEYgRUZBsm1bBquX1-8SqFdT7sc9GPLGQPJ_NK9Uh0.cache
339
375
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/9m/9mgdO_CaXZJ-vC5ll8cP1XKz3wCECNQSPLjUeXC5d00.cache
376
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/pL/pLyPfUXjSp954q5Xo2evt--UelJhRhb-9_GHHJ4H_ks.cache
377
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/pP/pPSiidm8ssfTxzaSv3HDCnUOuguPwGI7ZNvndWgqrrs.cache
378
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Zd/Zd974jZcxvH-MhDRGTUpL9wkcI-X3w3cnd9AtuEDlGk.cache
379
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/5L/5LvHvKruXO5TFlFaUSXyZKddNWWaFa-ZRwj4qjWSZls.cache
340
380
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Rb/Rbm8nkPS1Of8Rz0rWkok4MSNVIlnPgH9XHKR7hgiv04.cache
381
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Fz/FzygF5SKhztBrKXeEPvroCRZe4QS87qMo_wMOE4s2Nk.cache
382
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/uJ/uJgvt1T01ZLyh6mh8pU68YwutZEqJJnDZExH39O-pps.cache
341
383
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/y8/y8npHBsQJHpNd5vLRaY1exx-HSaKZpvNm8flv2AwaIY.cache
384
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/hf/hfQ0m4DOk_gg28K1MxF6hVeEgnen75YgCSFNh7Sla-k.cache
342
385
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/h1/h1-mgdelDIkDFRTv01FyDH_SPuu-SNjfuyPjzxkTBdE.cache
343
386
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/xK/xKV2Id3Vd6th4Mw_Xlz6QvEsxO9jF--t8S31xC3IyIg.cache
387
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Fv/FvJlRHyMKMMSd8hoIJzDDQPRakvpf21WietXgAHoYIY.cache
388
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/K1/K1O7XumnEzOMuOqGCa8E_qICaU1FatsdxaxOBvoZuUU.cache
344
389
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/IL/ILhpn6eigtulj-mYC5zvPjOE49OeJUCj0HzRfTSEUTo.cache
390
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/lc/lcDzAqoOnJPKB4xQjCKQF7M1VhLmtjTfd75MB3pjwnQ.cache
391
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/h0/h0rn1DiPO9ccypGoAqlMHn551__8MAMynJGHJ4eKRO8.cache
345
392
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/9l/9lyDx_SpBBKxlLmBR6419nzqj7bX9kE1pKAu81-j1e8.cache
393
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/7Y/7Y9wslxA9L8dPk0r4uGCY-FVf7AnvQC96y4Vw1Ja_fw.cache
346
394
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/4y/4yDGyI9P-ycbEJV3st7b3Cl23UUy3mS_8dOItuQ4WQs.cache
395
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/xA/xAB8K05aO57Z3nT_o2p9XmIopdBbdZmQU7BkSN7BiI4.cache
347
396
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Ko/KolhVuPF1NkgO0S-1x6v1xNGb5gFEWEjvZEEteEHGxU.cache
348
397
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/wz/wz0K-l71cAY6qzTqNojmW0icKR0Xy4cIOdjAyV_Qq94.cache
349
398
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/c5/c5ukb30hpWfrOXfKCTNn9yBORe7ZQR9PJjGMKMsAe6w.cache
399
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/I0/I04BxjPsEGmsMr88ORwuWpgGXLI1dRnB1c5ndH8egcI.cache
350
400
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/UE/UEDUyjE1DXBxIQ_p0U_E_t5I_cJvlnVOKlXNU4GqS_Y.cache
401
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/uj/ujOz1icLtoO2u6Xs-dDld2yYJDg905RW9859E_Ll354.cache
402
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/60/60QR035PTzIL_ERGf1ZenH-53wM4Ajhg_glBdQTPOzg.cache
351
403
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Hb/HbyJZdNWCMyI7J2Kxw-ppzZ1Cf5KdveMkkcnUVG60GM.cache
352
404
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Sd/Sd04KBX_Tx0-pgiqxpvgIbEGIUv8U_VC3EeD7FEWgwM.cache
405
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/mN/mNgeptjwXN7Y-qDaMNLgh386iNcLLYAxNKIDHKYf1MQ.cache
353
406
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/jS/jSIhGbOIMmrTZwhfKUglo6FfoHenUfowQb0XlmibruI.cache
407
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/4L/4Lncie-grIRu8o3w0GoLUEwN2hjKhoV4euPXWcGdOVI.cache
354
408
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Qv/QvdKQXdJJXdFSOXQ-MXRTBiQtyVgc5RvjCJZ6J4rg00.cache
355
409
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/vl/vlZYZK4PdV8DB-4CyGZuH-1e-Ts3JVLjSpRP4Djpf98.cache
410
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/2P/2P5spSyAcTAKS4aCA-o3-eXv6E_hhMQmXrpzm1mcdQQ.cache
356
411
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Wj/WjH_EHXvlMDw78-0_LEnXWHfmat2T4EIjjRnQr8XpLg.cache
357
412
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/uE/uE2U4G3P2HooIC1xKr87545DNdocxCbwAg3GOKFYtmk.cache
358
413
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/l4/l4HO2rzZUYDw4TbQtFtDQzVjLH7Vz8XxxPAEZjYR7xo.cache
414
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/WI/WI50RPknV6gYR0Aplyrv_mFxOZ_pMLvAwoxgBa8a8iY.cache
415
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/5G/5G9j-cEcAJdCJzGLf8VkajaMgg0o6ibXwG0NLVHD3dI.cache
359
416
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/7X/7XT_zYx_T65Ig1-tI3W2b-1YmBgSN5ocwaRU6JWLg50.cache
360
417
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/rh/rhYQUAg7PWjDiHfFfHyqnSbdco2A-XtwQL-caAd6Vhs.cache
418
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/i0/i0-dpmkq2Qg1Z74SElswjQuqpgKCEKg_S0Z6BNfnglQ.cache
361
419
  - spec/dummy/bin/rake
362
420
  - spec/dummy/bin/bundle
363
421
  - spec/dummy/bin/rails