pliny 0.0.1.pre2 → 0.0.1.pre3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: aa54dbd33376e27df178725c05baa908730d6888
4
- data.tar.gz: b6ba451d723ac5aad1014582631a45deecd892d6
5
- SHA512:
6
- metadata.gz: 6f52fc0bc37d165d3900e165dd0747491abe689a1133d941efedd6d7084d15ae28da9e6fe562fbbd302a6034026254f2909904aabc4cab28b8bcdd2b50cc85eb
7
- data.tar.gz: 284fcd33dc86aaf0c0b0176d6725668d9a8932f64c30f9c60c26e29a4e44840f0244f7c78d5f7efd1f4092bacf0211e37360ad6fb689dbf975d5e1d5716d9e27
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NTE1OTRlNTVkZmNmNWE3OTQ0MDM0ZTg4NjliMzk3ZTA0MmY2N2Q3Ng==
5
+ data.tar.gz: !binary |-
6
+ NTcyMDExYTgyMjIzMDlhYzQwYzczNTVhMDFlNTNlNjUyNjI4YzA1Mg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MTVkYTVlNTZlMjY0NDgxYjU2NGVmMDFmMzQ4MzhhZjU5ZDQ5MzUxNzc1MzJl
10
+ YTk0YjAzNGJlMDZjN2E5MmU4NWIxNDNiZGE0NDkyODcwMTYwMDMxMDExODli
11
+ YmRkY2NkZjY2MjFlNzZiYjZiNjljODE3YzU5N2Q3ODJkYjViMzU=
12
+ data.tar.gz: !binary |-
13
+ ZWU3ZjQxY2ExZGI1MTVjZmMwMDUzY2IxMzVjMGI4NzcyNWE2MzE0MDk3YmVk
14
+ MGY3ZTNlMmQxMWQ2ZTM2OWEyYjc0M2ZiYTQxYTg4YTdjYzJiMzRjN2EwMGFm
15
+ NmUzNjFkYzUyZWI2ODMwOGEwMzVmODI1NGVmYTkyYzEyNTgxZjk=
data/README.md CHANGED
@@ -1,5 +1,92 @@
1
- # Pliny Gem
1
+ # Pliny
2
2
 
3
- [![Build Status](https://travis-ci.org/12-oz/pliny-gem.svg?branch=master)](https://travis-ci.org/12-oz/pliny-gem)
3
+ Opinionated template Sinatra app for writing excellent APIs in Ruby.
4
4
 
5
- Please refer to the [Pliny template](https://github.com/12-oz/pliny) for now.
5
+ [![Build Status](https://travis-ci.org/12-oz/pliny.svg?branch=master)](https://travis-ci.org/12-oz/pliny)
6
+
7
+ It bundles some of the patterns we like to develop these apps:
8
+
9
+ - Config: `ENV` wrapper for explicit defining what config vars are mandatory and optional
10
+ - Endpoints: the Sinatra equivalent of a Rails Controller
11
+ - Initializers: tiny files to configure libraries/etc (equivalent of Rails)
12
+ - Mediators: plain ruby classes to manipulate models
13
+ - Models: very thin wrappers around the database
14
+
15
+ And gems/helpers to tie these together and support operations:
16
+
17
+ - [CORS middleware](lib/pliny/middleware/cors.rb) to allow JS developers to consume your API
18
+ - [Honeybadger](https://www.honeybadger.io/) for tracking exceptions
19
+ - [Log helper](test/log_test.rb) that logs in [data format](https://www.youtube.com/watch?v=rpmc-wHFUBs) [to stdout](https://adam.heroku.com/past/2011/4/1/logs_are_streams_not_files)
20
+ - [Rspec](https://github.com/rspec/rspec) for lean and fast testing
21
+ - [Puma](http://puma.io/) as the web server, [configured for optimal performance on Heroku](config/puma.rb)
22
+ - [Rack-test](https://github.com/brynary/rack-test) to test the API endpoints
23
+ - [Request IDs](lib/pliny/middleware/request_id.rb)
24
+ - [RequestStore](http://brandur.org/antipatterns), thread safe option to store data with the current request
25
+ - [RR](https://github.com/rr/rr/blob/master/doc/03_api_overview.md) for amazing mocks and stubs
26
+ - [Sequel](http://sequel.jeremyevans.net/) for ORM
27
+ - [Sequel-PG](https://github.com/jeremyevans/sequel_pg) because we don't like mysql
28
+ - [Versioning](lib/pliny/middleware/versioning.rb) to allow versioning your API in the HTTP Accept header
29
+
30
+ ## Getting started
31
+
32
+ First make sure the following is installed:
33
+
34
+ * [Postgres](http://www.postgresql.org/)
35
+ * The [uuid-ossp](http://www.postgresql.org/docs/9.3/static/uuid-ossp.html) module for Postgres
36
+
37
+ Then install the gem:
38
+
39
+ ```bash
40
+ $ gem install pliny
41
+ ```
42
+
43
+ And initialize a new app:
44
+
45
+ ```bash
46
+ $ pliny-new myapp
47
+ $ cd myapp && bin/setup
48
+ ```
49
+
50
+ Pliny also bundles some generators to help you get started:
51
+
52
+ ```bash
53
+ $ bundle exec pliny-generate model artist
54
+ created model file ./lib/models/artist.rb
55
+ created migration ./db/migrate/1395873224_create_artist.rb
56
+ created test ./test/models/artist_test.rb
57
+
58
+ $ bundle exec pliny-generate mediator artists/creator
59
+ created base mediator ./lib/mediators/base.rb
60
+ created mediator file ./lib/mediators/artists/creator.rb
61
+ created test ./test/mediators/artists/creator_test.rb
62
+
63
+ $ bundle exec pliny-generate endpoint artists
64
+ created endpoint file ./lib/endpoints/artists.rb
65
+ add the following to lib/routes.rb:
66
+ mount Endpoints::Artists
67
+ created test ./spec/endpoints/artists_spec.rb
68
+ created test ./spec/acceptance/artists_spec.rb
69
+
70
+ $ bundle exec pliny-generate migration fix_something
71
+ created migration ./db/migrate/1395873228_fix_something.rb
72
+
73
+ $ bundle exec pliny-generate schema artists
74
+ created schema file ./docs/schema/schemata/artist.yaml
75
+ rebuilt ./docs/schema.json
76
+ ```
77
+
78
+ To test your application:
79
+
80
+ ```bash
81
+ bundle exec rake
82
+ ```
83
+
84
+ Or to run a single test suite:
85
+
86
+ ```bash
87
+ bundle exec rspec spec/acceptance/artists_spec.rb
88
+ ```
89
+
90
+ ## Meta
91
+
92
+ Created by Brandur Leach and Pedro Belo.
data/bin/pliny-new ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler"
4
+ Bundler.require
5
+
6
+ Pliny::Commands::Creator.run(ARGV.dup)
data/lib/pliny.rb CHANGED
@@ -2,6 +2,7 @@ require "multi_json"
2
2
  require "sinatra/base"
3
3
 
4
4
  require "pliny/version"
5
+ require "pliny/commands/creator"
5
6
  require "pliny/commands/generator"
6
7
  require "pliny/errors"
7
8
  require "pliny/extensions/instruments"
@@ -0,0 +1,45 @@
1
+ require "fileutils"
2
+
3
+ module Pliny::Commands
4
+ class Creator
5
+ attr_accessor :args, :stream
6
+
7
+ def self.run(args, stream=$stdout)
8
+ new(args, stream).run!
9
+ end
10
+
11
+ def initialize(args={}, stream=$stdout)
12
+ @args = args
13
+ @stream = stream
14
+ end
15
+
16
+ def run!
17
+ if File.exists?(app_dir)
18
+ abort("#{name} already exists")
19
+ end
20
+
21
+ FileUtils.copy_entry template_dir, app_dir
22
+ FileUtils.rm_rf("#{app_dir}/.git")
23
+ display "Pliny app created. To start, run:"
24
+ display "cd #{app_dir} && bin/setup"
25
+ end
26
+
27
+ protected
28
+
29
+ def display(msg)
30
+ stream.puts msg
31
+ end
32
+
33
+ def name
34
+ args.first
35
+ end
36
+
37
+ def template_dir
38
+ File.expand_path('../../../template', File.dirname(__FILE__))
39
+ end
40
+
41
+ def app_dir
42
+ "./#{name}"
43
+ end
44
+ end
45
+ end
@@ -39,6 +39,8 @@ module Pliny::Commands
39
39
  create_model
40
40
  create_model_migration
41
41
  create_model_test
42
+ create_serializer
43
+ create_serializer_test
42
44
  when "scaffold"
43
45
  create_endpoint(scaffold: true)
44
46
  create_endpoint_test
@@ -48,9 +50,14 @@ module Pliny::Commands
48
50
  create_model_test
49
51
  create_schema
50
52
  rebuild_schema
53
+ create_serializer
54
+ create_serializer_test
51
55
  when "schema"
52
56
  create_schema
53
57
  rebuild_schema
58
+ when "serializer"
59
+ create_serializer
60
+ create_serializer_test
54
61
  else
55
62
  abort("Don't know how to generate '#{type}'.")
56
63
  end
@@ -65,11 +72,11 @@ module Pliny::Commands
65
72
  end
66
73
 
67
74
  def singular_class_name
68
- name.singularize.camelize
75
+ name.gsub(/-/, '_').singularize.camelize
69
76
  end
70
77
 
71
78
  def plural_class_name
72
- name.pluralize.camelize
79
+ name.gsub(/-/, '_').pluralize.camelize
73
80
  end
74
81
 
75
82
  def field_name
@@ -174,6 +181,18 @@ module Pliny::Commands
174
181
  display "rebuilt #{schemata}"
175
182
  end
176
183
 
184
+ def create_serializer
185
+ serializer = "./lib/serializers/#{name}_serializer.rb"
186
+ render_template("serializer.erb", serializer, singular_class_name: singular_class_name)
187
+ display "created serializer file #{serializer}"
188
+ end
189
+
190
+ def create_serializer_test
191
+ test = "./spec/serializers/#{name}_serializer_spec.rb"
192
+ render_template("serializer_test.erb", test, singular_class_name: singular_class_name)
193
+ display "created test #{test}"
194
+ end
195
+
177
196
  def render_template(template_file, destination_path, vars={})
178
197
  template_path = File.dirname(__FILE__) + "/../templates/#{template_file}"
179
198
  template = ERB.new(File.read(template_path), 0, ">")
@@ -0,0 +1,19 @@
1
+ <%
2
+ modules = singular_class_name.split("::")
3
+ modules[0] = "Serializers::#{modules[0]}"
4
+ ident = ""
5
+ %>
6
+ <% modules[0..-2].each do |m| %>
7
+ <%= "#{ident}module #{m}\n" %>
8
+ <% ident << " " %>
9
+ <% end %>
10
+ <%= ident %>class <%= modules.last %> < Serializers::Base
11
+ <%= ident %> def structure(args) do |arg|
12
+ <%= ident %> {
13
+ <%= ident %> }
14
+ <%= ident %> end
15
+ <%= ident %>end
16
+ <% while ident.size > 0 do %>
17
+ <% ident.chop!.chop! %>
18
+ <%= "#{ident}end\n" %>
19
+ <% end %>
@@ -0,0 +1,5 @@
1
+ require "spec_helper"
2
+
3
+ describe Serializers::<%= singular_class_name %> do
4
+
5
+ end
data/lib/pliny/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pliny
2
- VERSION = "0.0.1.pre2"
2
+ VERSION = "0.0.1.pre3"
3
3
  end
@@ -0,0 +1,26 @@
1
+ require "test_helper"
2
+
3
+ describe Pliny::Commands::Creator do
4
+ before do
5
+ @gen = Pliny::Commands::Creator.new(["foobar"], StringIO.new)
6
+ end
7
+
8
+ describe "#run!" do
9
+ before do
10
+ FileUtils.rm_rf("/tmp/plinytest")
11
+ FileUtils.mkdir_p("/tmp/plinytest")
12
+ Dir.chdir("/tmp/plinytest")
13
+ end
14
+
15
+ it "copies the template app over" do
16
+ @gen.run!
17
+ assert File.exists?("./foobar")
18
+ assert File.exists?("./foobar/Gemfile")
19
+ end
20
+
21
+ it "deletes the .git from it" do
22
+ @gen.run!
23
+ refute File.exists?("./foobar/.git")
24
+ end
25
+ end
26
+ end
@@ -10,6 +10,11 @@ describe Pliny::Commands::Generator do
10
10
  @gen.args = ["model", "resource_histories"]
11
11
  assert_equal "ResourceHistories", @gen.plural_class_name
12
12
  end
13
+
14
+ it "handles hyphens as underscores" do
15
+ @gen.args = ["model", "resource-histories"]
16
+ assert_equal "ResourceHistories", @gen.plural_class_name
17
+ end
13
18
  end
14
19
 
15
20
  describe "#singular_class_name" do
@@ -17,6 +22,11 @@ describe Pliny::Commands::Generator do
17
22
  @gen.args = ["model", "resource_histories"]
18
23
  assert_equal "ResourceHistory", @gen.singular_class_name
19
24
  end
25
+
26
+ it "handles hyphens as underscores" do
27
+ @gen.args = ["model", "resource-histories"]
28
+ assert_equal "ResourceHistory", @gen.singular_class_name
29
+ end
20
30
  end
21
31
 
22
32
  describe "#table_name" do
@@ -24,6 +34,11 @@ describe Pliny::Commands::Generator do
24
34
  @gen.args = ["model", "resource_history"]
25
35
  assert_equal "resource_histories", @gen.table_name
26
36
  end
37
+
38
+ it "handles hyphens as underscores" do
39
+ @gen.args = ["model", "resource-history"]
40
+ assert_equal "resource_histories", @gen.table_name
41
+ end
27
42
  end
28
43
 
29
44
  describe "#run!" do
@@ -63,7 +78,7 @@ describe Pliny::Commands::Generator do
63
78
  @gen.run!
64
79
  end
65
80
 
66
- it "creates a new endpoint module" do
81
+ it "creates a new mediator module" do
67
82
  assert File.exists?("lib/mediators/artists/creator.rb")
68
83
  end
69
84
 
@@ -89,6 +104,14 @@ describe Pliny::Commands::Generator do
89
104
  it "creates a test" do
90
105
  assert File.exists?("spec/models/artist_spec.rb")
91
106
  end
107
+
108
+ it "creates a serializer" do
109
+ assert File.exists?("lib/serializers/artist_serializer.rb")
110
+ end
111
+
112
+ it "creates a serializer test" do
113
+ assert File.exists?("spec/serializers/artist_serializer_spec.rb")
114
+ end
92
115
  end
93
116
 
94
117
  describe "generating scaffolds" do
@@ -124,6 +147,14 @@ describe Pliny::Commands::Generator do
124
147
  it "creates a schema" do
125
148
  assert File.exists?("docs/schema/schemata/artist.yaml")
126
149
  end
150
+
151
+ it "creates a new serializer module" do
152
+ assert File.exists?("lib/serializers/artist_serializer.rb")
153
+ end
154
+
155
+ it "creates a test" do
156
+ assert File.exists?("spec/serializers/artist_serializer_spec.rb")
157
+ end
127
158
  end
128
159
 
129
160
  describe "generating schemas" do
@@ -136,6 +167,21 @@ describe Pliny::Commands::Generator do
136
167
  assert File.exists?("docs/schema/schemata/artist.yaml")
137
168
  end
138
169
  end
170
+
171
+ describe "generating serializers" do
172
+ before do
173
+ @gen.args = ["serializer", "artist"]
174
+ @gen.run!
175
+ end
176
+
177
+ it "creates a new serializer module" do
178
+ assert File.exists?("lib/serializers/artist_serializer.rb")
179
+ end
180
+
181
+ it "creates a test" do
182
+ assert File.exists?("spec/serializers/artist_serializer_spec.rb")
183
+ end
184
+ end
139
185
  end
140
186
 
141
187
  describe "#url_path" do
@@ -0,0 +1,31 @@
1
+ require "test_helper"
2
+
3
+ describe "Pliny integration test" do
4
+ before do
5
+ FileUtils.rm_rf("/tmp/plinytest")
6
+ FileUtils.mkdir_p("/tmp/plinytest")
7
+ Dir.chdir("/tmp/plinytest")
8
+ end
9
+
10
+ it "works" do
11
+ bash "pliny-new myapp"
12
+ bash_app "bin/setup"
13
+ assert File.exists?("./myapp/Gemfile.lock")
14
+ bash_app "pliny-generate model artist"
15
+ assert File.exists?("./myapp/lib/models/artist.rb")
16
+ # could use something like bin/run in the template app to facilitate testing this
17
+ end
18
+
19
+ def bash(cmd)
20
+ bin = File.expand_path('../bin', File.dirname(__FILE__))
21
+ path = "#{bin}:#{ENV["PATH"]}"
22
+ env = { "PATH" => path }
23
+ unless system(env, "#{cmd} > /dev/null")
24
+ raise "Failed to run #{cmd}"
25
+ end
26
+ end
27
+
28
+ def bash_app(cmd)
29
+ bash "cd myapp && #{cmd}"
30
+ end
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pliny
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.pre2
4
+ version: 0.0.1.pre3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandur Leach
@@ -9,180 +9,180 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-09 00:00:00.000000000 Z
12
+ date: 2014-05-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
20
  version: '4.1'
21
- - - ">="
21
+ - - ! '>='
22
22
  - !ruby/object:Gem::Version
23
23
  version: 4.1.0
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - "~>"
28
+ - - ~>
29
29
  - !ruby/object:Gem::Version
30
30
  version: '4.1'
31
- - - ">="
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: 4.1.0
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: multi_json
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.9'
41
- - - ">="
41
+ - - ! '>='
42
42
  - !ruby/object:Gem::Version
43
43
  version: 1.9.3
44
44
  type: :runtime
45
45
  prerelease: false
46
46
  version_requirements: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - "~>"
48
+ - - ~>
49
49
  - !ruby/object:Gem::Version
50
50
  version: '1.9'
51
- - - ">="
51
+ - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
53
  version: 1.9.3
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: pg
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - "~>"
58
+ - - ~>
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0.17'
61
- - - ">="
61
+ - - ! '>='
62
62
  - !ruby/object:Gem::Version
63
63
  version: 0.17.1
64
64
  type: :runtime
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.17'
71
- - - ">="
71
+ - - ! '>='
72
72
  - !ruby/object:Gem::Version
73
73
  version: 0.17.1
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: prmd
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - "~>"
78
+ - - ~>
79
79
  - !ruby/object:Gem::Version
80
80
  version: '0.1'
81
- - - ">="
81
+ - - ! '>='
82
82
  - !ruby/object:Gem::Version
83
83
  version: 0.1.1
84
84
  type: :runtime
85
85
  prerelease: false
86
86
  version_requirements: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - "~>"
88
+ - - ~>
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0.1'
91
- - - ">="
91
+ - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: 0.1.1
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: sequel
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  requirements:
98
- - - "~>"
98
+ - - ~>
99
99
  - !ruby/object:Gem::Version
100
100
  version: '4.9'
101
- - - ">="
101
+ - - ! '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: 4.9.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ~>
109
109
  - !ruby/object:Gem::Version
110
110
  version: '4.9'
111
- - - ">="
111
+ - - ! '>='
112
112
  - !ruby/object:Gem::Version
113
113
  version: 4.9.0
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: sinatra
116
116
  requirement: !ruby/object:Gem::Requirement
117
117
  requirements:
118
- - - "~>"
118
+ - - ~>
119
119
  - !ruby/object:Gem::Version
120
120
  version: '1.4'
121
- - - ">="
121
+ - - ! '>='
122
122
  - !ruby/object:Gem::Version
123
123
  version: 1.4.5
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - "~>"
128
+ - - ~>
129
129
  - !ruby/object:Gem::Version
130
130
  version: '1.4'
131
- - - ">="
131
+ - - ! '>='
132
132
  - !ruby/object:Gem::Version
133
133
  version: 1.4.5
134
134
  - !ruby/object:Gem::Dependency
135
135
  name: http_accept
136
136
  requirement: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - "~>"
138
+ - - ~>
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0.1'
141
- - - ">="
141
+ - - ! '>='
142
142
  - !ruby/object:Gem::Version
143
143
  version: 0.1.5
144
144
  type: :runtime
145
145
  prerelease: false
146
146
  version_requirements: !ruby/object:Gem::Requirement
147
147
  requirements:
148
- - - "~>"
148
+ - - ~>
149
149
  - !ruby/object:Gem::Version
150
150
  version: '0.1'
151
- - - ">="
151
+ - - ! '>='
152
152
  - !ruby/object:Gem::Version
153
153
  version: 0.1.5
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: sinatra-router
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - "~>"
158
+ - - ~>
159
159
  - !ruby/object:Gem::Version
160
160
  version: '0.2'
161
- - - ">="
161
+ - - ! '>='
162
162
  - !ruby/object:Gem::Version
163
163
  version: 0.2.3
164
164
  type: :runtime
165
165
  prerelease: false
166
166
  version_requirements: !ruby/object:Gem::Requirement
167
167
  requirements:
168
- - - "~>"
168
+ - - ~>
169
169
  - !ruby/object:Gem::Version
170
170
  version: '0.2'
171
- - - ">="
171
+ - - ! '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: 0.2.3
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: rake
176
176
  requirement: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">="
178
+ - - ! '>='
179
179
  - !ruby/object:Gem::Version
180
180
  version: 0.8.7
181
181
  type: :development
182
182
  prerelease: false
183
183
  version_requirements: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - ! '>='
186
186
  - !ruby/object:Gem::Version
187
187
  version: 0.8.7
188
188
  description: Pliny is a set of base classes and helpers to help developers write excellent
@@ -192,12 +192,15 @@ email:
192
192
  - pedrobelo@gmail.com
193
193
  executables:
194
194
  - pliny-generate
195
+ - pliny-new
195
196
  extensions: []
196
197
  extra_rdoc_files: []
197
198
  files:
198
199
  - README.md
199
200
  - bin/pliny-generate
201
+ - bin/pliny-new
200
202
  - lib/pliny.rb
203
+ - lib/pliny/commands/creator.rb
201
204
  - lib/pliny/commands/generator.rb
202
205
  - lib/pliny/config_helpers.rb
203
206
  - lib/pliny/errors.rb
@@ -225,11 +228,15 @@ files:
225
228
  - lib/pliny/templates/model.erb
226
229
  - lib/pliny/templates/model_migration.erb
227
230
  - lib/pliny/templates/model_test.erb
231
+ - lib/pliny/templates/serializer.erb
232
+ - lib/pliny/templates/serializer_test.erb
228
233
  - lib/pliny/utils.rb
229
234
  - lib/pliny/version.rb
235
+ - test/commands/creator_test.rb
230
236
  - test/commands/generator_test.rb
231
237
  - test/errors_test.rb
232
238
  - test/extensions/instruments_test.rb
239
+ - test/integration_test.rb
233
240
  - test/log_test.rb
234
241
  - test/middleware/cors_test.rb
235
242
  - test/middleware/request_id_test.rb
@@ -240,7 +247,7 @@ files:
240
247
  - test/request_store_test.rb
241
248
  - test/router_test.rb
242
249
  - test/test_helper.rb
243
- homepage: https://github.com/heroku/pliny
250
+ homepage: https://github.com/12-oz/pliny
244
251
  licenses:
245
252
  - MIT
246
253
  metadata: {}
@@ -250,17 +257,17 @@ require_paths:
250
257
  - lib
251
258
  required_ruby_version: !ruby/object:Gem::Requirement
252
259
  requirements:
253
- - - ">="
260
+ - - ! '>='
254
261
  - !ruby/object:Gem::Version
255
262
  version: '0'
256
263
  required_rubygems_version: !ruby/object:Gem::Requirement
257
264
  requirements:
258
- - - ">"
265
+ - - ! '>'
259
266
  - !ruby/object:Gem::Version
260
267
  version: 1.3.1
261
268
  requirements: []
262
269
  rubyforge_project:
263
- rubygems_version: 2.2.2
270
+ rubygems_version: 2.0.7
264
271
  signing_key:
265
272
  specification_version: 4
266
273
  summary: Basic tooling to support API apps in Sinatra