pliny 0.0.1.pre2 → 0.0.1.pre3

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,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