pliny 0.27.1 → 0.28.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4f293533ee05722c6e85a425dd35414c8bf88e8055371a6b4208486334c6063
4
- data.tar.gz: 10c679736c876907897d054ef84053dd1b7fb48b75cf7b364557dfc7e0e644c1
3
+ metadata.gz: 4fdeb50812c8474db1b462be06a13943d901cc06c51044c39fffe9533c2d67d4
4
+ data.tar.gz: b70639846466fc0efa37a62fc55551ec4386ccfd0ac3141e041bef88744f4610
5
5
  SHA512:
6
- metadata.gz: bbe4f48bb7a51e5709684dc8a2261a7286a146b9a58d2326e87f6cf581d2850a1de1f09ad8f469537b1cc7ed19807521ee7e01e0d8244994b83f37a5095fc175
7
- data.tar.gz: 9c1360812d50eb5832de40ca3fe3c569e204794397157d985da0fa0c353a16ffece435b158a7073a01627dd263a8932d1be0ccf32961d24bf7574cacaa946b52
6
+ metadata.gz: f9e248f7961808f6d862d6b77c8065afc7716cf7861ecb0c508d470819ba012a0a0cd2454352b4854bbaad4cb23f18166ace07cca14035eb514ec71fdf908a96
7
+ data.tar.gz: 7b7120d718e286d1ecb7cead9ed19db8a823b4aefe66f1601d824cfc172b46c89c2cbbe2ebdccfaf0e113b8afb862bd2c85d76bf55438ca1dbd5ea89bfc3f28d
@@ -1,7 +1,7 @@
1
- require 'fileutils'
2
- require 'pathname'
3
- require 'pliny/version'
4
- require 'uri'
1
+ require "fileutils"
2
+ require "pathname"
3
+ require "pliny/version"
4
+ require "uri"
5
5
 
6
6
  module Pliny::Commands
7
7
  class Updater
@@ -37,7 +37,7 @@ module Pliny::Commands
37
37
 
38
38
  # we need a local copy of the pliny repo to produce a diff
39
39
  def ensure_repo_available
40
- if File.exists?(repo_dir)
40
+ if File.exist?(repo_dir)
41
41
  unless system("cd #{repo_dir} && git fetch --tags")
42
42
  abort("Could not update Pliny repo at #{repo_dir}")
43
43
  end
@@ -124,7 +124,6 @@ module Pliny
124
124
  end
125
125
 
126
126
  def quote_string(k, v)
127
- # try to find a quote style that fits
128
127
  if !v.include?('"')
129
128
  %{#{k}="#{v}"}
130
129
  elsif !v.include?("'")
@@ -140,19 +139,22 @@ module Pliny
140
139
 
141
140
  def unparse_pair(k, v)
142
141
  v = v.call if v.is_a?(Proc)
143
- # only quote strings if they include whitespace
142
+
144
143
  if v == nil
145
144
  nil
146
145
  elsif v == true
147
146
  k
148
147
  elsif v.is_a?(Float)
149
148
  "#{k}=#{format("%.3f", v)}"
150
- elsif v.is_a?(String) && v =~ /\s/
151
- quote_string(k, v)
152
149
  elsif v.is_a?(Time)
153
150
  "#{k}=#{v.iso8601}"
154
151
  else
155
- "#{k}=#{v}"
152
+ v = "#{v}"
153
+ if v =~ /\s/
154
+ quote_string(k, v)
155
+ else
156
+ "#{k}=#{v}"
157
+ end
156
158
  end
157
159
  end
158
160
  end
@@ -32,12 +32,12 @@ begin
32
32
 
33
33
  desc "Seed the database with data"
34
34
  task :seed do
35
- if File.exist?('./db/seeds.rb')
35
+ if File.exist?("./db/seeds.rb")
36
36
  database_urls.each do |database_url|
37
37
  # make a DB instance available to the seeds file
38
- self.class.send(:remove_const, 'DB') if self.class.const_defined?('DB')
39
- self.class.const_set('DB', Sequel.connect(database_url))
40
- load 'db/seeds.rb'
38
+ self.class.send(:remove_const, "DB") if self.class.const_defined?("DB")
39
+ self.class.const_set("DB", Sequel.connect(database_url))
40
+ load "db/seeds.rb"
41
41
  end
42
42
  disconnect
43
43
  end
@@ -66,7 +66,7 @@ begin
66
66
  admin_url = Pliny::DbSupport.admin_url(database_url)
67
67
  db = Sequel.connect(admin_url)
68
68
  name = name_from_uri(database_url)
69
- db.run(%{DROP DATABASE IF EXISTS "#{name}"})
69
+ db.run(%(DROP DATABASE IF EXISTS "#{name}"))
70
70
  puts "Dropped `#{name}`"
71
71
  end
72
72
  disconnect
@@ -75,7 +75,7 @@ begin
75
75
  namespace :schema do
76
76
  desc "Load the database schema"
77
77
  task :load do
78
- if File.exists?("./db/schema.sql")
78
+ if File.exist?("./db/schema.sql")
79
79
  schema = File.read("./db/schema.sql")
80
80
  database_urls.each do |database_url|
81
81
  db = Sequel.connect(database_url)
@@ -118,14 +118,14 @@ begin
118
118
  end
119
119
 
120
120
  desc "Merges migrations into schema and removes them"
121
- task :merge => ["db:setup", "db:schema:dump"] do
121
+ task merge: ["db:setup", "db:schema:dump"] do
122
122
  FileUtils.rm Dir["./db/migrate/*.rb"]
123
123
  puts "Removed migrations"
124
124
  end
125
125
  end
126
126
 
127
127
  desc "Setup the database"
128
- task :setup => [:drop, :create, "schema:load", :migrate, :seed]
128
+ task setup: [:drop, :create, "schema:load", :migrate, :seed]
129
129
 
130
130
  private
131
131
 
@@ -138,12 +138,10 @@ begin
138
138
  if ENV["DATABASE_URL"]
139
139
  [ENV["DATABASE_URL"]]
140
140
  else
141
- %w(.env .env.test).map { |env_file|
141
+ %w[.env .env.test].map { |env_file|
142
142
  env_path = "./#{env_file}"
143
- if File.exists?(env_path)
143
+ if File.exist?(env_path)
144
144
  Pliny::Utils.parse_env(env_path)["DATABASE_URL"]
145
- else
146
- nil
147
145
  end
148
146
  }.compact
149
147
  end
@@ -153,7 +151,6 @@ begin
153
151
  URI.parse(uri).path[1..-1]
154
152
  end
155
153
  end
156
-
157
154
  rescue LoadError
158
155
  puts "Couldn't load sequel. Skipping database tasks"
159
156
  end
@@ -1,3 +1,3 @@
1
1
  module Pliny
2
- VERSION = "0.27.1"
2
+ VERSION = "0.28.0"
3
3
  end
@@ -4,7 +4,7 @@ ruby "2.4.0"
4
4
  gem "multi_json"
5
5
  gem "oj"
6
6
  gem "pg"
7
- gem "pliny", "~> 0.27"
7
+ gem "pliny", "~> 0.28"
8
8
  gem "pry"
9
9
  gem "puma", "~> 3"
10
10
  gem "rack-ssl"
@@ -1,5 +1,5 @@
1
- require 'pliny/commands/creator'
2
- require 'spec_helper'
1
+ require "pliny/commands/creator"
2
+ require "spec_helper"
3
3
 
4
4
  describe Pliny::Commands::Creator do
5
5
  before do
@@ -7,21 +7,23 @@ describe Pliny::Commands::Creator do
7
7
  end
8
8
 
9
9
  describe "#run!" do
10
- before do
11
- FileUtils.rm_rf("/tmp/plinytest")
12
- FileUtils.mkdir_p("/tmp/plinytest")
13
- Dir.chdir("/tmp/plinytest")
10
+ around do |example|
11
+ Dir.mktmpdir("plinytest-") do |dir|
12
+ Dir.chdir(dir) do
13
+ example.run
14
+ end
15
+ end
14
16
  end
15
17
 
16
18
  it "copies the template app over" do
17
19
  @gen.run!
18
- assert File.exists?("./foobar")
19
- assert File.exists?("./foobar/Gemfile")
20
+ assert File.exist?("./foobar")
21
+ assert File.exist?("./foobar/Gemfile")
20
22
  end
21
23
 
22
24
  it "deletes the .git from it" do
23
25
  @gen.run!
24
- refute File.exists?("./foobar/.git")
26
+ refute File.exist?("./foobar/.git")
25
27
  end
26
28
 
27
29
  it "deletes the .erb files from it" do
@@ -31,25 +33,25 @@ describe Pliny::Commands::Creator do
31
33
 
32
34
  it "changes DATABASE_URL in .env.sample to use the app name" do
33
35
  @gen.run!
34
- db_url = File.read("./foobar/.env.sample").split("\n").detect do |line|
36
+ db_url = File.read("./foobar/.env.sample").split("\n").detect { |line|
35
37
  line.include?("DATABASE_URL=")
36
- end
38
+ }
37
39
  assert_equal "DATABASE_URL=postgres:///foobar-development", db_url
38
40
  end
39
41
 
40
42
  it "changes DATABASE_URL in .env.test to use the app name" do
41
43
  @gen.run!
42
- db_url = File.read("./foobar/.env.test").split("\n").detect do |line|
44
+ db_url = File.read("./foobar/.env.test").split("\n").detect { |line|
43
45
  line.include?("DATABASE_URL=")
44
- end
46
+ }
45
47
  assert_equal "DATABASE_URL=postgres:///foobar-test", db_url
46
48
  end
47
49
 
48
50
  it "changes APP_NAME in app.json to use the app name" do
49
51
  @gen.run!
50
- db_url = File.read("./foobar/app.json").split("\n").detect do |line|
52
+ db_url = File.read("./foobar/app.json").split("\n").detect { |line|
51
53
  line.include?("\"name\":")
52
- end
54
+ }
53
55
  assert_equal " \"name\": \"foobar\",", db_url
54
56
  end
55
57
  end
@@ -1,5 +1,5 @@
1
- require 'pliny/commands/updater'
2
- require 'spec_helper'
1
+ require "pliny/commands/updater"
2
+ require "spec_helper"
3
3
 
4
4
  describe Pliny::Commands::Updater do
5
5
  before do
@@ -10,19 +10,21 @@ describe Pliny::Commands::Updater do
10
10
  end
11
11
 
12
12
  describe "#run!" do
13
- before do
14
- FileUtils.rm_rf("/tmp/plinytest")
15
- FileUtils.mkdir_p("/tmp/plinytest")
16
- Dir.chdir("/tmp/plinytest")
17
- File.open("/tmp/plinytest/Gemfile.lock", "w") do |f|
18
- f.puts " pliny (0.6.3)"
13
+ around do |example|
14
+ Dir.mktmpdir("plinytest-") do |dir|
15
+ Dir.chdir(dir) do
16
+ File.open("./Gemfile.lock", "w") do |f|
17
+ f.puts " pliny (0.6.3)"
18
+ end
19
+ example.run
20
+ end
19
21
  end
20
22
  end
21
23
 
22
24
  it "creates a patch with Pliny diffs between the two versions" do
23
25
  @cmd.run!
24
26
  patch = File.read(@cmd.patch_file)
25
- assert patch.include?('--- a/Gemfile')
27
+ assert patch.include?("--- a/Gemfile")
26
28
  assert patch.include?('-gem "pliny", "~> 0.6"')
27
29
  end
28
30
  end
@@ -6,15 +6,18 @@ describe Pliny::DbSupport do
6
6
  let(:logger) { Logger.new(StringIO.new) }
7
7
  let(:support) { Pliny::DbSupport.new(url, logger) }
8
8
 
9
- before do
10
- @path = "/tmp/pliny-test"
9
+ around do |example|
10
+ Dir.mktmpdir("plinytest-") do |dir|
11
+ Dir.chdir(dir) do
12
+ FileUtils.mkdir_p("./db/migrate")
13
+
14
+ example.run
15
+ end
16
+ end
11
17
  end
12
18
 
13
- before(:each) do
19
+ before do
14
20
  DB.tables.each { |t| DB.drop_table(t) }
15
- FileUtils.rm_rf(@path)
16
- FileUtils.mkdir_p("#{@path}/db/migrate")
17
- Dir.chdir(@path)
18
21
  end
19
22
 
20
23
  describe ".admin_url" do
@@ -33,7 +36,7 @@ describe Pliny::DbSupport do
33
36
 
34
37
  describe "#migrate" do
35
38
  before do
36
- File.open("#{@path}/db/migrate/#{Time.now.to_i}_create_foo.rb", "w") do |f|
39
+ File.open("./db/migrate/#{Time.now.to_i}_create_foo.rb", "w") do |f|
37
40
  f.puts "
38
41
  Sequel.migration do
39
42
  change do
@@ -57,11 +60,11 @@ describe Pliny::DbSupport do
57
60
  describe "#rollback" do
58
61
  before do
59
62
  @t = Time.now
60
- File.open("#{@path}/db/migrate/#{(@t-2).to_i}_first.rb", "w") do |f|
63
+ File.open("./db/migrate/#{(@t - 2).to_i}_first.rb", "w") do |f|
61
64
  f.puts "Sequel.migration { change { create_table(:first) } }"
62
65
  end
63
66
 
64
- File.open("#{@path}/db/migrate/#{(@t-1).to_i}_second.rb", "w") do |f|
67
+ File.open("./db/migrate/#{(@t - 1).to_i}_second.rb", "w") do |f|
65
68
  f.puts "Sequel.migration { change { create_table(:second) } }"
66
69
  end
67
70
  end
@@ -80,7 +83,7 @@ describe Pliny::DbSupport do
80
83
  end
81
84
 
82
85
  it "handles databases not migrated (schema_migrations is empty)" do
83
- support.migrate (@t-2).to_i
86
+ support.migrate((@t - 2).to_i)
84
87
  support.rollback # destroy table, leave schema_migrations
85
88
  support.rollback # should noop
86
89
  end
@@ -2,19 +2,24 @@ require "spec_helper"
2
2
 
3
3
  describe "Pliny integration test" do
4
4
  before(:all) do
5
- FileUtils.rm_rf("/tmp/plinytest")
6
- FileUtils.mkdir_p("/tmp/plinytest")
7
- Dir.chdir("/tmp/plinytest")
5
+ @original_dir = Dir.pwd
6
+
7
+ test_dir = Dir.mktmpdir("plinytest-")
8
+ Dir.chdir(test_dir)
8
9
 
9
10
  bash "pliny-new myapp"
10
11
 
11
- Dir.chdir("/tmp/plinytest/myapp")
12
+ Dir.chdir("myapp")
12
13
  bash "bin/setup"
13
14
  end
14
15
 
16
+ after(:all) do
17
+ Dir.chdir(@original_dir)
18
+ end
19
+
15
20
  describe "bin/setup" do
16
21
  it "generates .env" do
17
- assert File.exists?("./.env")
22
+ assert File.exist?("./.env")
18
23
  end
19
24
  end
20
25
 
@@ -24,19 +29,19 @@ describe "Pliny integration test" do
24
29
  end
25
30
 
26
31
  it "creates the model file" do
27
- assert File.exists?("./lib/models/artist.rb")
32
+ assert File.exist?("./lib/models/artist.rb")
28
33
  end
29
34
 
30
35
  it "creates the endpoint file" do
31
- assert File.exists?("./lib/endpoints/artists.rb")
36
+ assert File.exist?("./lib/endpoints/artists.rb")
32
37
  end
33
38
 
34
39
  it "creates the serializer file" do
35
- assert File.exists?("./lib/serializers/artist.rb")
40
+ assert File.exist?("./lib/serializers/artist.rb")
36
41
  end
37
42
 
38
43
  it "creates the schema file" do
39
- assert File.exists?("./schema/schemata/artist.yaml")
44
+ assert File.exist?("./schema/schemata/artist.yaml")
40
45
  end
41
46
  end
42
47
 
@@ -5,7 +5,6 @@ describe Pliny::Log do
5
5
  @io = StringIO.new
6
6
  Pliny.stdout = @io
7
7
  Pliny.stderr = @io
8
- allow(@io).to receive(:print)
9
8
  end
10
9
 
11
10
  after do
@@ -130,4 +129,66 @@ describe Pliny::Log do
130
129
  end
131
130
  end
132
131
  end
132
+
133
+ describe "unparsing" do
134
+ it "removes nils from log" do
135
+ expect(@io).to receive(:print).with("\n")
136
+
137
+ Pliny.log(foo: nil)
138
+ end
139
+
140
+ it "leaves bare keys for true values" do
141
+ expect(@io).to receive(:print).with("foo\n")
142
+
143
+ Pliny.log(foo: true)
144
+ end
145
+
146
+ it "truncates floats" do
147
+ expect(@io).to receive(:print).with("foo=3.142\n")
148
+
149
+ Pliny.log(foo: Math::PI)
150
+ end
151
+
152
+ it "outputs times in ISO8601 format" do
153
+ expect(@io).to receive(:print).with("foo=2020-01-01T00:00:00Z\n")
154
+
155
+ Pliny.log(foo: Time.utc(2020))
156
+ end
157
+
158
+ it "quotes strings that contain spaces" do
159
+ expect(@io).to receive(:print).with("foo=\"string with spaces\"\n")
160
+
161
+ Pliny.log(foo: "string with spaces")
162
+ end
163
+
164
+ it "by default interpolates objects into strings" do
165
+ expect(@io).to receive(:print).with("foo=message\n")
166
+ expect(@io).to receive(:print).with("foo=42\n")
167
+ expect(@io).to receive(:print).with("foo=bar\n")
168
+
169
+ Pliny.log(foo: StandardError.new("message"))
170
+ Pliny.log(foo: 42)
171
+
172
+ klass = Class.new do
173
+ def to_s
174
+ "bar"
175
+ end
176
+ end
177
+ Pliny.log(foo: klass.new)
178
+ end
179
+
180
+ it "quotes strings that are generated from object interpolation" do
181
+ expect(@io).to receive(:print).with("foo=\"message with space\"\n")
182
+ expect(@io).to receive(:print).with("foo=\"bar with space\"\n")
183
+
184
+ Pliny.log(foo: StandardError.new("message with space"))
185
+
186
+ klass = Class.new do
187
+ def to_s
188
+ "bar with space"
189
+ end
190
+ end
191
+ Pliny.log(foo: klass.new)
192
+ end
193
+ end
133
194
  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.27.1
4
+ version: 0.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandur Leach
@@ -9,28 +9,28 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-01-15 00:00:00.000000000 Z
12
+ date: 2020-05-08 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
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '5.0'
21
18
  - - ">="
22
19
  - !ruby/object:Gem::Version
23
20
  version: 5.0.1
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '7.0'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - "~>"
29
- - !ruby/object:Gem::Version
30
- version: '5.0'
31
28
  - - ">="
32
29
  - !ruby/object:Gem::Version
33
30
  version: 5.0.1
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '7.0'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: multi_json
36
36
  requirement: !ruby/object:Gem::Requirement
@@ -157,40 +157,28 @@ dependencies:
157
157
  requirements:
158
158
  - - "~>"
159
159
  - !ruby/object:Gem::Version
160
- version: '0.8'
161
- - - ">="
162
- - !ruby/object:Gem::Version
163
- version: 0.8.7
160
+ version: '13.0'
164
161
  type: :development
165
162
  prerelease: false
166
163
  version_requirements: !ruby/object:Gem::Requirement
167
164
  requirements:
168
165
  - - "~>"
169
166
  - !ruby/object:Gem::Version
170
- version: '0.8'
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: 0.8.7
167
+ version: '13.0'
174
168
  - !ruby/object:Gem::Dependency
175
169
  name: rack-test
176
170
  requirement: !ruby/object:Gem::Requirement
177
171
  requirements:
178
172
  - - "~>"
179
173
  - !ruby/object:Gem::Version
180
- version: '0.6'
181
- - - ">="
182
- - !ruby/object:Gem::Version
183
- version: 0.6.2
174
+ version: 1.1.0
184
175
  type: :development
185
176
  prerelease: false
186
177
  version_requirements: !ruby/object:Gem::Requirement
187
178
  requirements:
188
179
  - - "~>"
189
180
  - !ruby/object:Gem::Version
190
- version: '0.6'
191
- - - ">="
192
- - !ruby/object:Gem::Version
193
- version: 0.6.2
181
+ version: 1.1.0
194
182
  - !ruby/object:Gem::Dependency
195
183
  name: rspec
196
184
  requirement: !ruby/object:Gem::Requirement
@@ -530,7 +518,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
530
518
  - !ruby/object:Gem::Version
531
519
  version: '0'
532
520
  requirements: []
533
- rubygems_version: 3.0.6
521
+ rubygems_version: 3.0.3
534
522
  signing_key:
535
523
  specification_version: 4
536
524
  summary: Basic tooling to support API apps in Sinatra