autoprefixer-rails 0.8.20130911 → 0.8.20130919

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -22,6 +22,13 @@
22
22
  20130911:
23
23
  * Fix parsing property name with spaces.
24
24
 
25
+ 20130919:
26
+ * Fix processing custom framework prefixes (by Johannes J. Schmidt).
27
+ * Concat outputs if several files compiled to one output.
28
+ * Decrease standalone build size by removing unnecessary Binary class.
29
+ * iOS 7 is moved to released versions.
30
+ * Clean up binary code (by Simon Lydell).
31
+
25
32
  == 0.7 (We Do Not Sow)
26
33
  * Add vendor prefixes to selectors.
27
34
  * Add ::selection and ::placeholder selectors support.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- autoprefixer-rails (0.8.20130911)
4
+ autoprefixer-rails (0.8.20130919)
5
5
  execjs
6
6
 
7
7
  GEM
@@ -1,3 +1,3 @@
1
1
  module AutoprefixerRails
2
- VERSION = '0.8.20130911'.freeze unless defined? AutoprefixerRails::VERSION
2
+ VERSION = '0.8.20130919'.freeze unless defined? AutoprefixerRails::VERSION
3
3
  end
@@ -27,11 +27,13 @@ function require(path, parent, orig) {
27
27
  // perform real require()
28
28
  // by invoking the module's
29
29
  // registered function
30
- if (!module.exports) {
30
+ if (!module._resolving && !module.exports) {
31
31
  var mod = {};
32
32
  mod.exports = {};
33
33
  mod.client = mod.component = true;
34
+ module._resolving = true;
34
35
  module.call(this, mod.exports, require.relative(resolved), mod);
36
+ delete module._resolving;
35
37
  module.exports = mod.exports;
36
38
  }
37
39
 
@@ -1090,9 +1092,8 @@ require.register("autoprefixer/data/browsers.js", function(exports, require, mod
1090
1092
  },
1091
1093
  ios: {
1092
1094
  prefix: "-webkit-",
1093
- future: [7],
1094
- versions: [6, 6.1, 5, 5.1, 4.2, 4.3, 4, 4.1, 3.2],
1095
- popularity: [3.477105, 3.477105, 0.306353, 0.306353, 0.04595295, 0.04595295, 0.0076588, 0.0076588, 0.00765882]
1095
+ versions: [7, 6, 6.1, 5, 5.1, 4.2, 4.3, 4, 4.1, 3.2],
1096
+ popularity: [0, 3.477105, 3.477105, 0.306353, 0.306353, 0.04595295, 0.04595295, 0.0076588, 0.0076588, 0.00765882]
1096
1097
  },
1097
1098
  opera: {
1098
1099
  prefix: "-o-",
@@ -1322,7 +1323,7 @@ require.register("autoprefixer/data/prefixes.js", function(exports, require, mod
1322
1323
  "linear-gradient": {
1323
1324
  props: ["background", "background-image", "border-image"],
1324
1325
  mistakes: ["-ms-"],
1325
- browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4", "safari 5", "safari 5.1", "safari 6"]
1326
+ browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4", "safari 5", "safari 5.1", "safari 6"]
1326
1327
  },
1327
1328
  "max-content": {
1328
1329
  props: ["width", "min-width", "max-width", "height", "min-height", "max-height"],
@@ -1346,17 +1347,17 @@ require.register("autoprefixer/data/prefixes.js", function(exports, require, mod
1346
1347
  "radial-gradient": {
1347
1348
  props: ["background", "background-image", "border-image"],
1348
1349
  mistakes: ["-ms-"],
1349
- browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4", "safari 5", "safari 5.1", "safari 6"]
1350
+ browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4", "safari 5", "safari 5.1", "safari 6"]
1350
1351
  },
1351
1352
  "repeating-linear-gradient": {
1352
1353
  props: ["background", "background-image", "border-image"],
1353
1354
  mistakes: ["-ms-"],
1354
- browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4", "safari 5", "safari 5.1", "safari 6"]
1355
+ browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4", "safari 5", "safari 5.1", "safari 6"]
1355
1356
  },
1356
1357
  "repeating-radial-gradient": {
1357
1358
  props: ["background", "background-image", "border-image"],
1358
1359
  mistakes: ["-ms-"],
1359
- browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4", "safari 5", "safari 5.1", "safari 6"]
1360
+ browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4", "safari 5", "safari 5.1", "safari 6"]
1360
1361
  },
1361
1362
  "tab-size": {
1362
1363
  browsers: ["ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "opera 12.1"]
@@ -1512,254 +1513,6 @@ require.register("autoprefixer/lib/autoprefixer.js", function(exports, require,
1512
1513
 
1513
1514
  }).call(this);
1514
1515
 
1515
- });
1516
- require.register("autoprefixer/lib/autoprefixer/binary.js", function(exports, require, module){
1517
- (function() {
1518
- var Binary, autoprefixer, fs;
1519
-
1520
- autoprefixer = require('../autoprefixer');
1521
-
1522
- fs = require('fs');
1523
-
1524
- Binary = (function() {
1525
- function Binary(process) {
1526
- this["arguments"] = process.argv.slice(2);
1527
- this.stdin = process.stdin;
1528
- this.stderr = process.stderr;
1529
- this.stdout = process.stdout;
1530
- this.status = 0;
1531
- this.command = 'compile';
1532
- this.inputFiles = [];
1533
- this.parseArguments();
1534
- }
1535
-
1536
- Binary.prototype.help = function() {
1537
- var h;
1538
- h = [];
1539
- h.push('Usage: autoprefixer [OPTION...] FILES');
1540
- h.push('');
1541
- h.push('Parse CSS files and add prefixed properties and values.');
1542
- h.push('');
1543
- h.push('Options:');
1544
- h.push(' -b, --browsers BROWSERS add prefixes for selected browsers');
1545
- h.push(' -o, --output FILE set output CSS file');
1546
- h.push(' -i, --inspect show selected browsers and properties');
1547
- h.push(' -h, --help show help text');
1548
- h.push(' -v, --version print program version');
1549
- return h.join("\n");
1550
- };
1551
-
1552
- Binary.prototype.desc = function() {
1553
- var h;
1554
- h = [];
1555
- h.push('Files:');
1556
- h.push(" By default, prefixed CSS will rewrite original files.");
1557
- h.push(" If you didn't set input files, " + "autoprefixer will read from stdin stream.");
1558
- h.push(" Output CSS will be written to stdout stream on " + "`-o -' argument or stdin input.");
1559
- h.push('');
1560
- h.push('Browsers:');
1561
- h.push(' Separate browsers by comma. For example, ' + "`-b \"> 1%, opera 12\".");
1562
- h.push(" You can set browsers by global usage statictics: " + "`-b \"> 1%\"'");
1563
- h.push(" or last version: `-b \"last 2 versions\"' (by default).");
1564
- return h.join("\n");
1565
- };
1566
-
1567
- Binary.prototype.print = function(str) {
1568
- str = str.replace(/\n$/, '');
1569
- return this.stdout.write(str + "\n");
1570
- };
1571
-
1572
- Binary.prototype.error = function(str) {
1573
- this.status = 1;
1574
- return this.stderr.write(str + "\n");
1575
- };
1576
-
1577
- Binary.prototype.version = function() {
1578
- return require('../../package.json').version;
1579
- };
1580
-
1581
- Binary.prototype.parseArguments = function() {
1582
- var arg, args, _results;
1583
- args = this["arguments"].slice();
1584
- _results = [];
1585
- while (args.length > 0) {
1586
- arg = args.shift();
1587
- if (arg === '-h' || arg === '--help') {
1588
- _results.push(this.command = 'showHelp');
1589
- } else if (arg === '-v' || arg === '--version') {
1590
- _results.push(this.command = 'showVersion');
1591
- } else if (arg === '-i' || arg === '--inspect') {
1592
- _results.push(this.command = 'inspect');
1593
- } else if (arg === '-u' || arg === '--update') {
1594
- _results.push(this.command = 'update');
1595
- } else if (arg === '-b' || arg === '--browsers') {
1596
- _results.push(this.requirements = args.shift().split(',').map(function(i) {
1597
- return i.trim();
1598
- }));
1599
- } else if (arg === '-o' || arg === '--output') {
1600
- _results.push(this.outputFile = args.shift());
1601
- } else if (arg.match(/^-\w$/) || arg.match(/^--\w[\w-]+$/)) {
1602
- this.command = void 0;
1603
- this.error("autoprefixer: Unknown argument " + arg);
1604
- this.error('');
1605
- _results.push(this.error(this.help()));
1606
- } else {
1607
- _results.push(this.inputFiles.push(arg));
1608
- }
1609
- }
1610
- return _results;
1611
- };
1612
-
1613
- Binary.prototype.showHelp = function(done) {
1614
- this.print(this.help());
1615
- this.print('');
1616
- this.print(this.desc());
1617
- return done();
1618
- };
1619
-
1620
- Binary.prototype.showVersion = function(done) {
1621
- this.print("autoprefixer " + (this.version()));
1622
- return done();
1623
- };
1624
-
1625
- Binary.prototype.inspect = function(done) {
1626
- this.print(this.compiler().inspect());
1627
- return done();
1628
- };
1629
-
1630
- Binary.prototype.update = function(done) {
1631
- var coffee, updater,
1632
- _this = this;
1633
- try {
1634
- coffee = require('coffee-script');
1635
- } catch (_error) {
1636
- this.error("Install coffee-script npm package");
1637
- return done();
1638
- }
1639
- updater = require('./updater');
1640
- updater.request(function() {
1641
- return _this.stdout.write('.');
1642
- });
1643
- updater.done(function() {
1644
- _this.print('');
1645
- if (updater.changed.length === 0) {
1646
- _this.print('Everything up-to-date');
1647
- } else {
1648
- _this.print('Update ' + updater.changed.join(' and ') + ' data');
1649
- }
1650
- return done();
1651
- });
1652
- return updater.run();
1653
- };
1654
-
1655
- Binary.prototype.startWork = function() {
1656
- return this.waiting += 1;
1657
- };
1658
-
1659
- Binary.prototype.endWork = function() {
1660
- this.waiting -= 1;
1661
- if (this.waiting <= 0) {
1662
- return this.doneCallback();
1663
- }
1664
- };
1665
-
1666
- Binary.prototype.compiler = function() {
1667
- return this.compilerCache || (this.compilerCache = autoprefixer(this.requirements));
1668
- };
1669
-
1670
- Binary.prototype.compileCSS = function(css, file) {
1671
- var error, prefixed,
1672
- _this = this;
1673
- try {
1674
- prefixed = this.compiler().compile(css);
1675
- } catch (_error) {
1676
- error = _error;
1677
- if (error.autoprefixer || error.css) {
1678
- this.error("autoprefixer: " + error.message);
1679
- } else {
1680
- this.error('autoprefixer: Internal error');
1681
- }
1682
- if (error.css || !error.autoprefixer) {
1683
- if (error.stack != null) {
1684
- this.error('');
1685
- this.error(error.stack);
1686
- }
1687
- }
1688
- }
1689
- if (!prefixed) {
1690
- return this.endWork();
1691
- }
1692
- if (file === '-') {
1693
- this.print(prefixed);
1694
- return this.endWork();
1695
- } else {
1696
- return fs.writeFile(file, prefixed, function(error) {
1697
- if (error) {
1698
- _this.error("autoprefixer: " + error);
1699
- }
1700
- return _this.endWork();
1701
- });
1702
- }
1703
- };
1704
-
1705
- Binary.prototype.compile = function(done) {
1706
- var css, file, _fn, _i, _len, _ref,
1707
- _this = this;
1708
- this.waiting = 0;
1709
- this.doneCallback = done;
1710
- if (this.inputFiles.length === 0) {
1711
- this.startWork();
1712
- this.outputFile || (this.outputFile = '-');
1713
- css = '';
1714
- this.stdin.resume();
1715
- this.stdin.on('data', function(chunk) {
1716
- return css += chunk;
1717
- });
1718
- return this.stdin.on('end', function() {
1719
- return _this.compileCSS(css, _this.outputFile);
1720
- });
1721
- } else {
1722
- fs = require('fs');
1723
- _ref = this.inputFiles;
1724
- _fn = function(file) {
1725
- return fs.readFile(file, function(error, css) {
1726
- if (error) {
1727
- return _this.error("autoprefixer: " + error);
1728
- } else {
1729
- css = css.toString();
1730
- return _this.compileCSS(css, _this.outputFile || file);
1731
- }
1732
- });
1733
- };
1734
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
1735
- file = _ref[_i];
1736
- this.startWork();
1737
- if (!fs.existsSync(file)) {
1738
- this.error("autoprefixer: File " + file + " doesn't exists");
1739
- this.endWork();
1740
- return;
1741
- }
1742
- _fn(file);
1743
- }
1744
- }
1745
- };
1746
-
1747
- Binary.prototype.run = function(done) {
1748
- if (this.command) {
1749
- return this[this.command](done);
1750
- } else {
1751
- return done();
1752
- }
1753
- };
1754
-
1755
- return Binary;
1756
-
1757
- })();
1758
-
1759
- module.exports = Binary;
1760
-
1761
- }).call(this);
1762
-
1763
1516
  });
1764
1517
  require.register("autoprefixer/lib/autoprefixer/browsers.js", function(exports, require, module){
1765
1518
  (function() {
@@ -3582,6 +3335,10 @@ require.register("autoprefixer/lib/autoprefixer/prefixes.js", function(exports,
3582
3335
  }
3583
3336
  };
3584
3337
 
3338
+ Prefixes.prototype.isCustom = function(prefix) {
3339
+ return this.browsers.prefixes().indexOf(prefix) === -1;
3340
+ };
3341
+
3585
3342
  Prefixes.prototype.values = function(type, prop) {
3586
3343
  var data, global, values, _ref, _ref1;
3587
3344
  data = this[type];
@@ -3643,6 +3400,9 @@ require.register("autoprefixer/lib/autoprefixer/processor.js", function(exports,
3643
3400
  });
3644
3401
  }
3645
3402
  css.eachDeclaration(function(decl, vendor) {
3403
+ if (_this.prefixes.isCustom(vendor)) {
3404
+ vendor = null;
3405
+ }
3646
3406
  return _this.prefixes.each(decl.prop, function(prefix) {
3647
3407
  if (vendor && vendor !== utils.removeNote(prefix)) {
3648
3408
  return;
@@ -3655,6 +3415,9 @@ require.register("autoprefixer/lib/autoprefixer/processor.js", function(exports,
3655
3415
  });
3656
3416
  return css.eachDeclaration(function(decl, vendor) {
3657
3417
  var prefix, value, _j, _k, _len1, _len2, _ref1, _ref2;
3418
+ if (_this.prefixes.isCustom(vendor)) {
3419
+ vendor = null;
3420
+ }
3658
3421
  _ref1 = _this.prefixes.values('add', decl.unprefixed);
3659
3422
  for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
3660
3423
  value = _ref1[_j];
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoprefixer-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.20130911
4
+ version: 0.8.20130919
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-11 00:00:00.000000000 Z
12
+ date: 2013-09-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: execjs
@@ -84,7 +84,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
84
84
  version: '0'
85
85
  segments:
86
86
  - 0
87
- hash: 4221752281044002580
87
+ hash: -3979472916723928260
88
88
  required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  version: '0'
94
94
  segments:
95
95
  - 0
96
- hash: 4221752281044002580
96
+ hash: -3979472916723928260
97
97
  requirements: []
98
98
  rubyforge_project:
99
99
  rubygems_version: 1.8.23