prototyper 1.1.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 +7 -0
- data/.gitignore +1 -0
- data/Gemfile +3 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +9 -0
- data/bin/prototyper +45 -0
- data/lib/prototyper/version.rb +3 -0
- data/lib/prototyper.rb +14 -0
- data/lib/templates/html/.DS_Store +0 -0
- data/lib/templates/html/assets/javascripts/application.js +1 -0
- data/lib/templates/html/assets/stylesheets/application.css +48 -0
- data/lib/templates/html/index.html +15 -0
- data/lib/templates/sinatra/Gemfile +4 -0
- data/lib/templates/sinatra/Procfile +1 -0
- data/lib/templates/sinatra/app.rb +14 -0
- data/lib/templates/sinatra/assets/javascripts/application.js +12 -0
- data/lib/templates/sinatra/assets/javascripts/html5shiv.js +8 -0
- data/lib/templates/sinatra/assets/stylesheets/application.css +4 -0
- data/lib/templates/sinatra/config.ru +2 -0
- data/lib/templates/sinatra/views/index.erb +15 -0
- data/prototyper.gemspec +18 -0
- data/readme.md +69 -0
- data/test/unit/prototyper.rb +76 -0
- metadata +67 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5b1deb281f928797789b695db7512912ee670cc1
|
4
|
+
data.tar.gz: 8799ca3906b6f338724f8bd3351ecf83cc83a418
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 17ef46d46e124245a8508305b004cde5571554afb8125d7fc553b2068694a2a6b3ebb98f3d7e16460b5c52c6e5e621de2fdfb90449a3fcbd9cd3ff7645cfa775
|
7
|
+
data.tar.gz: adc583180ef55e165130344255a5916193a14f1f333af0a6cf92d025856647668c2518b8c0ef5b1f7cbbe4ca6ec544995405c6c4b63537f2dcd2b7cc09e281ad
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.gem
|
data/Gemfile
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2013 Jonathan Vingiano
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
data/bin/prototyper
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
require 'optparse'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
bin_file = Pathname.new(__FILE__).realpath
|
8
|
+
|
9
|
+
$:.unshift File.expand_path("../../lib", bin_file)
|
10
|
+
|
11
|
+
require 'prototyper'
|
12
|
+
|
13
|
+
options = {}
|
14
|
+
options[:type] = :html # set default
|
15
|
+
|
16
|
+
OptionParser.new do |opts|
|
17
|
+
|
18
|
+
opts.banner = "Usage: prototyper [project_title] [options]"
|
19
|
+
|
20
|
+
opts.on("--type [TYPE]", [:sinatra, :html],
|
21
|
+
"Select scaffolding type (sinatra, html). Default is HTML.") do |t|
|
22
|
+
options[:type] = t
|
23
|
+
end
|
24
|
+
|
25
|
+
opts.on("--html",
|
26
|
+
"Generate HTML scaffolding. Shortcut for --type html") do |t|
|
27
|
+
options[:type] = :html
|
28
|
+
end
|
29
|
+
|
30
|
+
opts.on("--sinatra",
|
31
|
+
"Generate Sinatra scaffolding. Shortcut for --type sinatra.") do |t|
|
32
|
+
options[:type] = :sinatra
|
33
|
+
end
|
34
|
+
|
35
|
+
end.parse!
|
36
|
+
|
37
|
+
if ARGV.empty?
|
38
|
+
puts "Usage: prototyper [project_title] [options]"
|
39
|
+
puts ""
|
40
|
+
puts "Type prototyper --help for more instruction."
|
41
|
+
elsif Dir.exists?(Dir.pwd + "/" + ARGV.first)
|
42
|
+
puts "That directory already exists."
|
43
|
+
else
|
44
|
+
Prototyper.generate(ARGV.first, options)
|
45
|
+
end
|
data/lib/prototyper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Prototyper
|
4
|
+
class << self
|
5
|
+
|
6
|
+
def generate(name, opts={ :type => "html" })
|
7
|
+
dir = FileUtils.mkdir(name)
|
8
|
+
new_dir = "#{Dir.pwd}/#{name}"
|
9
|
+
FileUtils.cp_r Dir["#{Dir.pwd}/lib/templates/#{opts[:type].to_s}/*"], new_dir, :preserve => true, :verbose => true
|
10
|
+
puts "done!"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
window.onload = {}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
@-webkit-viewport { width: device-width; }
|
2
|
+
@-moz-viewport { width: device-width; }
|
3
|
+
@-ms-viewport { width: device-width; }
|
4
|
+
@-o-viewport { width: device-width; }
|
5
|
+
@viewport { width: device-width; }
|
6
|
+
|
7
|
+
/*! normalize.css v2.1.2 | MIT License | git.io/normalize */
|
8
|
+
|
9
|
+
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
|
10
|
+
audio,canvas,video{display:inline-block}
|
11
|
+
audio:not([controls]){display:none;height:0}
|
12
|
+
[hidden],template{display:none}
|
13
|
+
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
|
14
|
+
body{margin:0}
|
15
|
+
a{background:transparent}
|
16
|
+
a:focus{outline:thin dotted}
|
17
|
+
a:active,a:hover{outline:0}
|
18
|
+
h1{font-size:2em;margin:.67em 0}
|
19
|
+
abbr[title]{border-bottom:1px dotted}
|
20
|
+
b,strong{font-weight:bold}
|
21
|
+
dfn{font-style:italic}
|
22
|
+
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
|
23
|
+
mark{background:#ff0;color:#000}
|
24
|
+
code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}
|
25
|
+
pre{white-space:pre-wrap}
|
26
|
+
q{quotes:"\201C" "\201D" "\2018" "\2019"}
|
27
|
+
small{font-size:80%}
|
28
|
+
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
|
29
|
+
sup{top:-0.5em}
|
30
|
+
sub{bottom:-0.25em}
|
31
|
+
img{border:0}
|
32
|
+
svg:not(:root){overflow:hidden}
|
33
|
+
figure{margin:0}
|
34
|
+
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
|
35
|
+
legend{border:0;padding:0}
|
36
|
+
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
|
37
|
+
button,input{line-height:normal}
|
38
|
+
button,select{text-transform:none}
|
39
|
+
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
|
40
|
+
button[disabled],html input[disabled]{cursor:default}
|
41
|
+
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
|
42
|
+
input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
|
43
|
+
input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
|
44
|
+
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
|
45
|
+
textarea{overflow:auto;vertical-align:top}
|
46
|
+
table{border-collapse:collapse;border-spacing:0}
|
47
|
+
|
48
|
+
/* Site Style */
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
6
|
+
<title>❤</title>
|
7
|
+
<link href="/assets/stylesheets/applicaiton.css" media="all" rel="stylesheet" type="text/css" />
|
8
|
+
<script src="/assets/javascripts/application.js"></script>
|
9
|
+
<!--[if lt IE 9]>
|
10
|
+
<script src="//ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
|
11
|
+
<![endif]-->
|
12
|
+
</head>
|
13
|
+
<body>
|
14
|
+
</body>
|
15
|
+
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
web: bundle exec rackup config.ru -p $PORT
|
@@ -0,0 +1,12 @@
|
|
1
|
+
window.requestAnimationFrame = (function(){
|
2
|
+
return window.requestAnimationFrame ||
|
3
|
+
window.webkitRequestAnimationFrame ||
|
4
|
+
window.mozRequestAnimationFrame ||
|
5
|
+
function( callback ){
|
6
|
+
window.setTimeout(callback, 1000 / 60);
|
7
|
+
};
|
8
|
+
})();
|
9
|
+
|
10
|
+
window.onload = function() {
|
11
|
+
|
12
|
+
};
|
@@ -0,0 +1,8 @@
|
|
1
|
+
/*
|
2
|
+
HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
3
|
+
*/
|
4
|
+
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
|
5
|
+
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
|
6
|
+
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
|
7
|
+
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
|
8
|
+
for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>❤</title>
|
6
|
+
<link href="/stylesheets/application.css" media="all" rel="stylesheet" type="text/css" />
|
7
|
+
<script src="/javascripts/html5shiv.js"></script>
|
8
|
+
<script src="/javascripts/application.js"></script>
|
9
|
+
<!--[if lt IE 9]>
|
10
|
+
<script src="//ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
|
11
|
+
<![endif]-->
|
12
|
+
</head>
|
13
|
+
<body>
|
14
|
+
</body>
|
15
|
+
</html>
|
data/prototyper.gemspec
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.expand_path('../lib/prototyper/version', __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
|
5
|
+
s.name = 'prototyper'
|
6
|
+
s.version = Prototyper::VERSION
|
7
|
+
s.author = 'Jonathan Vingiano'
|
8
|
+
s.email = 'jgv@jonathanvingiano.com'
|
9
|
+
s.homepage = 'https://github.com/jgv/prototyper'
|
10
|
+
s.rubyforge_project = 'prototyper'
|
11
|
+
s.summary = 'Set up some boilerplate'
|
12
|
+
s.description = 'Scaffold simple projects from the command line.'
|
13
|
+
s.files = `git ls-files`.split("\n")
|
14
|
+
s.test_file = 'test/unit/prototyper.rb'
|
15
|
+
s.require_paths = ['lib', 'bin']
|
16
|
+
s.executables = ['prototyper']
|
17
|
+
|
18
|
+
end
|
data/readme.md
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
# Prototyper
|
2
|
+
|
3
|
+
Prototyper is a simple commandline tool that sets up a basic web application. This gem is designed to get scaffolding a project out of the way. Currently it provides two different project types: HTML and Sinatra. The Sintara installtion provided is good to go on Heroku.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
``` bash
|
8
|
+
$ gem install prototyper
|
9
|
+
```
|
10
|
+
or in your Gemfile: `gem 'prototyper'`
|
11
|
+
|
12
|
+
## Usage
|
13
|
+
|
14
|
+
``` bash
|
15
|
+
$ prototyper coolproject
|
16
|
+
```
|
17
|
+
|
18
|
+
This will create a new HTML project relative to your working directory. It will look something like this:
|
19
|
+
|
20
|
+
```
|
21
|
+
.
|
22
|
+
├── assets
|
23
|
+
│ ├── javascripts
|
24
|
+
│ │ └── application.js
|
25
|
+
│ └── stylesheets
|
26
|
+
│ └── application.css
|
27
|
+
└── index.html
|
28
|
+
```
|
29
|
+
|
30
|
+
Instead of HTML, you may choose to scaffold a Sinatra app by passing the option `--type sinatra`. This will generate an app that looks like so:
|
31
|
+
|
32
|
+
|
33
|
+
```
|
34
|
+
.
|
35
|
+
├── Gemfile
|
36
|
+
├── Procfile
|
37
|
+
├── app.rb
|
38
|
+
├── assets
|
39
|
+
│ ├── javascripts
|
40
|
+
│ │ ├── application.js
|
41
|
+
│ │ └── html5shiv.js
|
42
|
+
│ └── stylesheets
|
43
|
+
│ └── application.css
|
44
|
+
├── config.ru
|
45
|
+
├── generator.rb
|
46
|
+
└── views
|
47
|
+
└── index.erb
|
48
|
+
```
|
49
|
+
|
50
|
+
## Options
|
51
|
+
|
52
|
+
```
|
53
|
+
$ protoyper --help
|
54
|
+
|
55
|
+
Usage: prototyper [projectname] [options]
|
56
|
+
--type [TYPE] Select scaffolding type (sinatra, html)
|
57
|
+
--html Generate HTML scaffolding
|
58
|
+
--sinatra Generate Sinatra scaffolding
|
59
|
+
```
|
60
|
+
|
61
|
+
## Tests
|
62
|
+
|
63
|
+
Run tests with minitest.
|
64
|
+
|
65
|
+
``` bash
|
66
|
+
$ rake test
|
67
|
+
```
|
68
|
+
|
69
|
+
**License: MIT**
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest/unit'
|
3
|
+
require 'minitest/pride'
|
4
|
+
require 'pathname'
|
5
|
+
|
6
|
+
$:.unshift File.dirname(__FILE__) + '/../../lib'
|
7
|
+
require 'prototyper'
|
8
|
+
class TestSinatraApp < MiniTest::Test
|
9
|
+
|
10
|
+
def setup
|
11
|
+
Prototyper.generate("test_sinatra", { :type => :sinatra })
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
FileUtils.rm_rf("test_sinatra")
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_that_it_creates_a_project
|
19
|
+
assert Dir.exists?("test_sinatra")
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_that_it_creates_subdirs
|
23
|
+
assert Dir.exists?("test_sinatra/assets")
|
24
|
+
assert Dir.exists?("test_sinatra/views")
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_that_it_creates_a_sinatra_app
|
28
|
+
all_files = `find test_sinatra`.split("\n").map { |f| File.basename(f, ".*") }
|
29
|
+
%w(app
|
30
|
+
assets
|
31
|
+
javascripts
|
32
|
+
application
|
33
|
+
html5shiv
|
34
|
+
stylesheets
|
35
|
+
application
|
36
|
+
config
|
37
|
+
Gemfile
|
38
|
+
Procfile
|
39
|
+
views
|
40
|
+
index).each do |file|
|
41
|
+
assert all_files.include?(file)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
class TestHTMLApp < MiniTest::Test
|
48
|
+
|
49
|
+
def setup
|
50
|
+
Prototyper.generate("test_html")
|
51
|
+
end
|
52
|
+
|
53
|
+
def teardown
|
54
|
+
# FileUtils.rm_rf("test_html")
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_that_it_creates_a_project
|
58
|
+
assert Dir.exists?("test_html")
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_that_it_creates_subdirs
|
62
|
+
assert Dir.exists?("test_html/assets")
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_that_it_creates_necessary_files
|
66
|
+
all_files = `find test_html`.split("\n").map { |f| File.basename(f, ".*") }
|
67
|
+
%w(index
|
68
|
+
assets
|
69
|
+
javascripts
|
70
|
+
stylesheets
|
71
|
+
application).each do |file|
|
72
|
+
assert all_files.include?(file)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: prototyper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jonathan Vingiano
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-10-23 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Scaffold simple projects from the command line.
|
14
|
+
email: jgv@jonathanvingiano.com
|
15
|
+
executables:
|
16
|
+
- prototyper
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- .gitignore
|
21
|
+
- Gemfile
|
22
|
+
- MIT-LICENSE
|
23
|
+
- Rakefile
|
24
|
+
- bin/prototyper
|
25
|
+
- lib/prototyper.rb
|
26
|
+
- lib/prototyper/version.rb
|
27
|
+
- lib/templates/html/.DS_Store
|
28
|
+
- lib/templates/html/assets/javascripts/application.js
|
29
|
+
- lib/templates/html/assets/stylesheets/application.css
|
30
|
+
- lib/templates/html/index.html
|
31
|
+
- lib/templates/sinatra/Gemfile
|
32
|
+
- lib/templates/sinatra/Procfile
|
33
|
+
- lib/templates/sinatra/app.rb
|
34
|
+
- lib/templates/sinatra/assets/javascripts/application.js
|
35
|
+
- lib/templates/sinatra/assets/javascripts/html5shiv.js
|
36
|
+
- lib/templates/sinatra/assets/stylesheets/application.css
|
37
|
+
- lib/templates/sinatra/config.ru
|
38
|
+
- lib/templates/sinatra/views/index.erb
|
39
|
+
- prototyper.gemspec
|
40
|
+
- readme.md
|
41
|
+
- test/unit/prototyper.rb
|
42
|
+
homepage: https://github.com/jgv/prototyper
|
43
|
+
licenses: []
|
44
|
+
metadata: {}
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
- bin
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
requirements: []
|
61
|
+
rubyforge_project: prototyper
|
62
|
+
rubygems_version: 2.0.0
|
63
|
+
signing_key:
|
64
|
+
specification_version: 4
|
65
|
+
summary: Set up some boilerplate
|
66
|
+
test_files:
|
67
|
+
- test/unit/prototyper.rb
|