simple-sql 0.5.23 → 0.5.24
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 +4 -4
- data/Makefile +14 -0
- data/Rakefile +10 -0
- data/VERSION +1 -0
- data/lib/simple/sql/connection_manager.rb +10 -1
- data/lib/simple/sql/helpers/decoder.rb +1 -1
- data/lib/simple/sql/result.rb +2 -1
- data/lib/simple/sql/version.rb +20 -2
- data/scripts/release +3 -0
- data/scripts/release.rb +94 -0
- data/simple-sql.gemspec +9 -9
- data/spec/simple/sql/each_spec.rb +0 -81
- data/spec/support/001_database.rb +3 -2
- data/spec/support/004_simplecov.rb +1 -0
- metadata +20 -20
- data/tasks/release.rake +0 -107
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 064d2319d350d4a8c56aa6cdf697ccd06d7c01426000396041e1a8bd1c74a5be
|
4
|
+
data.tar.gz: a55aaa2a188f306723911f457383c4536510d010149beaefbf001c025bd46e19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 872cf1147c72f1ae4c3030e71077a78ef5f33a7fc19e0779387de15aac18c314263439174e8efb19b3c85cffd43f926fd5c4964f63ead8f566aebaf7df61d873
|
7
|
+
data.tar.gz: d20549394c237fa154c0f1cb372b0286806242295a761f3a996e3b9170b0c0b05f81c70bc13bc285296388358cb9d4723322fc90a539fad87e223973a5c145bf
|
data/Makefile
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
tests: test4 test5 test6
|
2
|
+
|
3
|
+
test4:
|
4
|
+
SIMPLE_SQL_ACTIVERECORD_SPECS="< 5" bundle
|
5
|
+
rspec
|
6
|
+
|
7
|
+
test5:
|
8
|
+
SIMPLE_SQL_ACTIVERECORD_SPECS="< 6" bundle
|
9
|
+
rspec
|
10
|
+
|
11
|
+
test6:
|
12
|
+
SIMPLE_SQL_ACTIVERECORD_SPECS="< 7" bundle
|
13
|
+
rspec
|
14
|
+
|
1
15
|
stats:
|
2
16
|
@scripts/stats lib/simple/sql
|
3
17
|
@scripts/stats spec/simple/sql
|
data/Rakefile
CHANGED
@@ -22,3 +22,13 @@ task default: "test:prepare_db" do
|
|
22
22
|
sh "rspec"
|
23
23
|
sh "rubocop -D"
|
24
24
|
end
|
25
|
+
|
26
|
+
desc 'release a new development gem version'
|
27
|
+
task :release do
|
28
|
+
sh 'scripts/release.rb'
|
29
|
+
end
|
30
|
+
|
31
|
+
desc 'release a new stable gem version'
|
32
|
+
task 'release:stable' do
|
33
|
+
sh 'BRANCH=stable scripts/release.rb'
|
34
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.5.24
|
@@ -45,8 +45,17 @@ module Simple::SQL
|
|
45
45
|
automatic_reconnect: connection_pool.automatic_reconnect,
|
46
46
|
checkout_timeout: connection_pool.checkout_timeout
|
47
47
|
}
|
48
|
-
::Simple::SQL.logger.info "#{url}: connected to connection pool w/#{connection_pool_stats.inspect}"
|
48
|
+
::Simple::SQL.logger.info "#{URI.without_password url}: connected to connection pool w/#{connection_pool_stats.inspect}"
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
53
|
+
|
54
|
+
module URI
|
55
|
+
def self.without_password(uri)
|
56
|
+
uri = URI.parse(uri) unless uri.is_a?(URI)
|
57
|
+
uri = uri.dup
|
58
|
+
uri.password = "*" * uri.password.length if uri.password
|
59
|
+
uri
|
60
|
+
end
|
61
|
+
end
|
@@ -23,7 +23,7 @@ module Simple::SQL::Helpers::Decoder
|
|
23
23
|
when :hstore then HStore.parse(s)
|
24
24
|
when :json then ::JSON.parse(s)
|
25
25
|
when :jsonb then ::JSON.parse(s)
|
26
|
-
when :boolean then s == "t"
|
26
|
+
when :boolean then s == "t" || s == true
|
27
27
|
else
|
28
28
|
# unknown value, we just return the string here.
|
29
29
|
# STDERR.puts "unknown type: #{type.inspect}"
|
data/lib/simple/sql/result.rb
CHANGED
@@ -46,6 +46,7 @@ class ::Simple::SQL::Result < Array
|
|
46
46
|
#
|
47
47
|
# This is only available for paginated scopes
|
48
48
|
def total_count
|
49
|
+
# TODO: Implement total_count for non-paginated scopes!
|
49
50
|
@total_count ||= pagination_scope.count
|
50
51
|
end
|
51
52
|
|
@@ -61,7 +62,7 @@ class ::Simple::SQL::Result < Array
|
|
61
62
|
end
|
62
63
|
|
63
64
|
def pagination_scope
|
64
|
-
raise "
|
65
|
+
raise "Available only on paginated scopes" unless paginated?
|
65
66
|
|
66
67
|
@pagination_scope
|
67
68
|
end
|
data/lib/simple/sql/version.rb
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
module Simple
|
2
|
-
module
|
3
|
-
|
2
|
+
module GemHelper
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def version(name)
|
6
|
+
spec = Gem.loaded_specs[name]
|
7
|
+
version = spec.version.to_s
|
8
|
+
version += "+unreleased" if unreleased?(spec)
|
9
|
+
version
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def unreleased?(spec)
|
15
|
+
return false unless defined?(Bundler::Source::Gemspec)
|
16
|
+
return true if spec.source.is_a?(::Bundler::Source::Gemspec)
|
17
|
+
return true if spec.source.is_a?(::Bundler::Source::Path)
|
18
|
+
false
|
19
|
+
end
|
4
20
|
end
|
21
|
+
|
22
|
+
VERSION = GemHelper.version "simple-sql"
|
5
23
|
end
|
data/scripts/release
ADDED
data/scripts/release.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# -- helpers ------------------------------------------------------------------
|
4
|
+
|
5
|
+
def sys(cmd)
|
6
|
+
STDERR.puts "> #{cmd}"
|
7
|
+
system cmd
|
8
|
+
return true if $?.success?
|
9
|
+
|
10
|
+
STDERR.puts "> #{cmd} returned with exitstatus #{$?.exitstatus}"
|
11
|
+
$?.success?
|
12
|
+
end
|
13
|
+
|
14
|
+
def sys!(cmd, error: nil)
|
15
|
+
return true if sys(cmd)
|
16
|
+
STDERR.puts error if error
|
17
|
+
exit 1
|
18
|
+
end
|
19
|
+
|
20
|
+
def die!(msg)
|
21
|
+
STDERR.puts msg
|
22
|
+
exit 1
|
23
|
+
end
|
24
|
+
|
25
|
+
ROOT = File.expand_path("#{File.dirname(__FILE__)}/..")
|
26
|
+
|
27
|
+
GEMSPEC = Dir.glob("*.gemspec").first || die!("Missing gemspec file.")
|
28
|
+
|
29
|
+
# -- Version reading and bumping ----------------------------------------------
|
30
|
+
|
31
|
+
module Version
|
32
|
+
extend self
|
33
|
+
|
34
|
+
VERSION_FILE = "#{Dir.getwd}/VERSION"
|
35
|
+
|
36
|
+
def read_version
|
37
|
+
version = File.exist?(VERSION_FILE) ? File.read(VERSION_FILE) : "0.0.1"
|
38
|
+
version.chomp!
|
39
|
+
raise "Invalid version number in #{VERSION_FILE}" unless version =~ /^\d+\.\d+\.\d+$/
|
40
|
+
version
|
41
|
+
end
|
42
|
+
|
43
|
+
def auto_version_bump
|
44
|
+
old_version_number = read_version
|
45
|
+
old = old_version_number.split('.')
|
46
|
+
|
47
|
+
current = old[0..-2] << old[-1].next
|
48
|
+
current.join('.')
|
49
|
+
end
|
50
|
+
|
51
|
+
def bump_version
|
52
|
+
next_version = ENV["VERSION"] || auto_version_bump
|
53
|
+
File.open(VERSION_FILE, "w") { |io| io.write next_version }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# -- check, bump, release a new gem version -----------------------------------
|
58
|
+
|
59
|
+
Dir.chdir ROOT
|
60
|
+
$BASE_BRANCH = ENV['BRANCH'] || 'master'
|
61
|
+
|
62
|
+
# ENV["BUNDLE_GEMFILE"] = "#{Dir.getwd}/Gemfile"
|
63
|
+
# sys! "bundle install"
|
64
|
+
|
65
|
+
sys! "git diff --exit-code > /dev/null", error: 'There are unstaged changes in your working directory'
|
66
|
+
sys! "git diff --cached --exit-code > /dev/null", error: 'There are staged but uncommitted changes'
|
67
|
+
|
68
|
+
sys! "git checkout #{$BASE_BRANCH}"
|
69
|
+
sys! "git pull"
|
70
|
+
|
71
|
+
Version.bump_version
|
72
|
+
version = Version.read_version
|
73
|
+
|
74
|
+
sys! "git add VERSION"
|
75
|
+
sys! "git commit -m \"bump gem to v#{version}\""
|
76
|
+
sys! "git tag -a v#{version} -m \"Tag #{version}\""
|
77
|
+
|
78
|
+
sys! "git push origin #{$BASE_BRANCH}"
|
79
|
+
sys! 'git push --tags --force'
|
80
|
+
|
81
|
+
sys! "gem build #{GEMSPEC}"
|
82
|
+
sys! "mkdir -p pkg"
|
83
|
+
sys! "mv *.gem pkg"
|
84
|
+
|
85
|
+
gem_file = Dir.glob('pkg/*.gem').sort.last
|
86
|
+
|
87
|
+
sys! "gem install #{gem_file}"
|
88
|
+
sys! "gem push #{gem_file}"
|
89
|
+
|
90
|
+
STDERR.puts <<-MSG
|
91
|
+
================================================================================
|
92
|
+
Thank you for releasing a new gem version. You made my day.
|
93
|
+
================================================================================
|
94
|
+
MSG
|
data/simple-sql.gemspec
CHANGED
@@ -3,13 +3,9 @@
|
|
3
3
|
# Copyright (c) 2016, 2017 @radiospiel, mediapeers Gem
|
4
4
|
# Distributed under the terms of the modified BSD license, see LICENSE.BSD
|
5
5
|
|
6
|
-
lib = File.expand_path('../lib', __FILE__)
|
7
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
8
|
-
require 'simple/sql/version'
|
9
|
-
|
10
6
|
Gem::Specification.new do |gem|
|
11
7
|
gem.name = "simple-sql"
|
12
|
-
gem.version =
|
8
|
+
gem.version = File.read "VERSION"
|
13
9
|
|
14
10
|
gem.authors = [ "radiospiel", "mediapeers GmbH" ]
|
15
11
|
gem.email = "eno@radiospiel.org"
|
@@ -27,13 +23,19 @@ Gem::Specification.new do |gem|
|
|
27
23
|
|
28
24
|
gem.required_ruby_version = '~> 2.3'
|
29
25
|
|
30
|
-
gem.add_dependency 'pg_array_parser', '~> 0'
|
26
|
+
gem.add_dependency 'pg_array_parser', '~> 0', '>= 0.0.9'
|
31
27
|
gem.add_dependency 'pg', '~> 0.20'
|
32
28
|
gem.add_dependency 'expectation', '~> 1'
|
33
29
|
|
34
30
|
gem.add_dependency 'digest-crc', '~> 0'
|
35
31
|
|
36
|
-
|
32
|
+
# during tests we check the SIMPLE_SQL_ACTIVERECORD_SPECS environment setting.
|
33
|
+
# Run make tests to run all tests
|
34
|
+
if ENV["SIMPLE_SQL_ACTIVERECORD_SPECS"]
|
35
|
+
gem.add_dependency 'activerecord', '> 4.2', *(ENV["SIMPLE_SQL_ACTIVERECORD_SPECS"].split(","))
|
36
|
+
else
|
37
|
+
gem.add_dependency 'activerecord', '> 4.2', '< 7'
|
38
|
+
end
|
37
39
|
|
38
40
|
# optional gems (required by some of the parts)
|
39
41
|
|
@@ -43,6 +45,4 @@ Gem::Specification.new do |gem|
|
|
43
45
|
gem.add_development_dependency 'rspec', '~> 3.7'
|
44
46
|
gem.add_development_dependency 'rubocop', '~> 0.61.1'
|
45
47
|
gem.add_development_dependency 'simplecov', '~> 0'
|
46
|
-
|
47
|
-
gem.add_development_dependency 'memory_profiler', '~> 0.9.12'
|
48
48
|
end
|
@@ -64,85 +64,4 @@ describe "Simple::SQL.each" do
|
|
64
64
|
expect(received.map(&:class).uniq).to eq([Simple::SQL::Helpers::Immutable])
|
65
65
|
end
|
66
66
|
end
|
67
|
-
|
68
|
-
xdescribe "memory usage: pending due to inconclusive results" do
|
69
|
-
it "generates a series" do
|
70
|
-
each! "SELECT a.n from generate_series(1, 100) as a(n)"
|
71
|
-
expect(received).to eq((1..100).to_a)
|
72
|
-
end
|
73
|
-
|
74
|
-
require 'memory_profiler'
|
75
|
-
|
76
|
-
def measure_retained_objects(msg, &block)
|
77
|
-
r = nil
|
78
|
-
report = MemoryProfiler.report do
|
79
|
-
r = yield
|
80
|
-
end
|
81
|
-
|
82
|
-
STDERR.puts "#{msg} Total allocated: #{report.total_allocated_memsize} bytes (#{report.total_allocated} objects)"
|
83
|
-
STDERR.puts "#{msg} Total retained: #{report.total_retained_memsize} bytes (#{report.total_retained} objects)"
|
84
|
-
|
85
|
-
report.total_retained_memsize
|
86
|
-
end
|
87
|
-
|
88
|
-
it "is using less memory than .all" do
|
89
|
-
sql_warmup = "SELECT a.n from generate_series(10000, 100) as a(n)"
|
90
|
-
|
91
|
-
SQL.all(sql_warmup, into: Hash)
|
92
|
-
|
93
|
-
SQL.each(sql_warmup) do |id|
|
94
|
-
:nop
|
95
|
-
end
|
96
|
-
|
97
|
-
cnt = 1000000
|
98
|
-
sql = "SELECT a.n from generate_series(#{cnt}, #{cnt}) as a(n)"
|
99
|
-
|
100
|
-
r = nil
|
101
|
-
retained_objects_all = measure_retained_objects "all" do
|
102
|
-
r = SQL.all(sql, into: Hash)
|
103
|
-
end
|
104
|
-
|
105
|
-
retained_objects_each = measure_retained_objects "each" do
|
106
|
-
r = SQL.each(sql) do |id|
|
107
|
-
:nop
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
expect(0).to eq "one"
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
__END__
|
117
|
-
|
118
|
-
describe "each into: X" do
|
119
|
-
it "calls the database" do
|
120
|
-
r = SQL.all("SELECT id FROM users", into: Hash)
|
121
|
-
expect(r).to be_a(Array)
|
122
|
-
expect(r.length).to eq(USER_COUNT)
|
123
|
-
expect(r.map(&:class).uniq).to eq([Hash])
|
124
|
-
end
|
125
|
-
|
126
|
-
it "returns an empty array when there is no match" do
|
127
|
-
r = SQL.all("SELECT * FROM users WHERE FALSE", into: Hash)
|
128
|
-
expect(r).to eq([])
|
129
|
-
end
|
130
|
-
|
131
|
-
it "yields the results into a block" do
|
132
|
-
received = []
|
133
|
-
SQL.all("SELECT id FROM users", into: Hash) do |hsh|
|
134
|
-
received << hsh
|
135
|
-
end
|
136
|
-
expect(received.length).to eq(USER_COUNT)
|
137
|
-
expect(received.map(&:class).uniq).to eq([Hash])
|
138
|
-
end
|
139
|
-
|
140
|
-
it "does not yield if there is no match" do
|
141
|
-
received = []
|
142
|
-
SQL.all("SELECT id FROM users WHERE FALSE", into: Hash) do |hsh|
|
143
|
-
received << hsh
|
144
|
-
end
|
145
|
-
expect(received.length).to eq(0)
|
146
|
-
end
|
147
|
-
end
|
148
67
|
end
|
@@ -4,8 +4,9 @@ require "yaml"
|
|
4
4
|
abc = YAML.load_file("config/database.yml")
|
5
5
|
ActiveRecord::Base.establish_connection(abc["test"])
|
6
6
|
|
7
|
-
|
8
|
-
ActiveRecord::Base.raise_in_transactional_callbacks = true
|
7
|
+
if ActiveRecord::Base.respond_to?(:raise_in_transactional_callbacks=)
|
8
|
+
ActiveRecord::Base.raise_in_transactional_callbacks = true
|
9
|
+
end
|
9
10
|
|
10
11
|
ActiveRecord::Base.logger = Logger.new("log/test.log")
|
11
12
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple-sql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- radiospiel
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-12-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pg_array_parser
|
@@ -18,6 +18,9 @@ dependencies:
|
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '0'
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.9
|
21
24
|
type: :runtime
|
22
25
|
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -25,6 +28,9 @@ dependencies:
|
|
25
28
|
- - "~>"
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: '0'
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.9
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
35
|
name: pg
|
30
36
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,14 +79,20 @@ dependencies:
|
|
73
79
|
requirements:
|
74
80
|
- - ">"
|
75
81
|
- !ruby/object:Gem::Version
|
76
|
-
version: '4'
|
82
|
+
version: '4.2'
|
83
|
+
- - "<"
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '7'
|
77
86
|
type: :runtime
|
78
87
|
prerelease: false
|
79
88
|
version_requirements: !ruby/object:Gem::Requirement
|
80
89
|
requirements:
|
81
90
|
- - ">"
|
82
91
|
- !ruby/object:Gem::Version
|
83
|
-
version: '4'
|
92
|
+
version: '4.2'
|
93
|
+
- - "<"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '7'
|
84
96
|
- !ruby/object:Gem::Dependency
|
85
97
|
name: pg
|
86
98
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,20 +163,6 @@ dependencies:
|
|
151
163
|
- - "~>"
|
152
164
|
- !ruby/object:Gem::Version
|
153
165
|
version: '0'
|
154
|
-
- !ruby/object:Gem::Dependency
|
155
|
-
name: memory_profiler
|
156
|
-
requirement: !ruby/object:Gem::Requirement
|
157
|
-
requirements:
|
158
|
-
- - "~>"
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: 0.9.12
|
161
|
-
type: :development
|
162
|
-
prerelease: false
|
163
|
-
version_requirements: !ruby/object:Gem::Requirement
|
164
|
-
requirements:
|
165
|
-
- - "~>"
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
version: 0.9.12
|
168
166
|
description: SQL with a simple interface. Postgres only.
|
169
167
|
email: eno@radiospiel.org
|
170
168
|
executables: []
|
@@ -178,6 +176,7 @@ files:
|
|
178
176
|
- Makefile
|
179
177
|
- README.md
|
180
178
|
- Rakefile
|
179
|
+
- VERSION
|
181
180
|
- bin/console
|
182
181
|
- bin/db_restore
|
183
182
|
- bin/pg
|
@@ -219,6 +218,8 @@ files:
|
|
219
218
|
- lib/simple/sql/table_print.rb
|
220
219
|
- lib/simple/sql/version.rb
|
221
220
|
- log/.gitkeep
|
221
|
+
- scripts/release
|
222
|
+
- scripts/release.rb
|
222
223
|
- scripts/stats
|
223
224
|
- scripts/watch
|
224
225
|
- simple-sql.gemspec
|
@@ -248,7 +249,6 @@ files:
|
|
248
249
|
- spec/support/003_factories.rb
|
249
250
|
- spec/support/004_simplecov.rb
|
250
251
|
- spec/support/model/user.rb
|
251
|
-
- tasks/release.rake
|
252
252
|
- vendor/.gitignore
|
253
253
|
- vendor/Makefile
|
254
254
|
homepage: http://github.com/radiospiel/simple-sql
|
@@ -269,7 +269,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
269
269
|
- !ruby/object:Gem::Version
|
270
270
|
version: '0'
|
271
271
|
requirements: []
|
272
|
-
rubygems_version: 3.0.
|
272
|
+
rubygems_version: 3.0.6
|
273
273
|
signing_key:
|
274
274
|
specification_version: 4
|
275
275
|
summary: SQL with a simple interface
|
data/tasks/release.rake
DELETED
@@ -1,107 +0,0 @@
|
|
1
|
-
require 'bundler'
|
2
|
-
Bundler.setup
|
3
|
-
|
4
|
-
GEM_ROOT = File.expand_path('../../', __FILE__)
|
5
|
-
GEM_SPEC = "simple-sql.gemspec"
|
6
|
-
|
7
|
-
require 'simple/sql/version'
|
8
|
-
VERSION_FILE_PATH = 'lib/simple/sql/version.rb'
|
9
|
-
|
10
|
-
class VersionNumberTracker
|
11
|
-
class << self
|
12
|
-
def update_version_file(old_version_number, new_version_number)
|
13
|
-
old_line = "VERSION = \"#{old_version_number}\""
|
14
|
-
new_line = "VERSION = \"#{new_version_number}\""
|
15
|
-
update = File.read(VERSION_FILE_PATH).gsub(old_line, new_line)
|
16
|
-
File.open(VERSION_FILE_PATH, 'w') { |file| file.puts update }
|
17
|
-
new_version_number
|
18
|
-
end
|
19
|
-
|
20
|
-
def auto_version_bump
|
21
|
-
old_version_number = Simple::SQL::VERSION
|
22
|
-
old = old_version_number.split('.')
|
23
|
-
current = old[0..-2] << old[-1].next
|
24
|
-
new_version_number = current.join('.')
|
25
|
-
|
26
|
-
update_version_file(old_version_number, new_version_number)
|
27
|
-
end
|
28
|
-
|
29
|
-
def manual_version_bump
|
30
|
-
update_version_file(Simple::SQL::VERSION, ENV['VERSION'])
|
31
|
-
end
|
32
|
-
|
33
|
-
def update_version_number
|
34
|
-
@version = ENV['VERSION'] ? manual_version_bump : auto_version_bump
|
35
|
-
end
|
36
|
-
|
37
|
-
attr_reader :version
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
namespace :release do
|
42
|
-
task :version do
|
43
|
-
VersionNumberTracker.update_version_number
|
44
|
-
end
|
45
|
-
|
46
|
-
task :build do
|
47
|
-
Dir.chdir(GEM_ROOT) do
|
48
|
-
sh("gem build #{GEM_SPEC}")
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
desc "Commit changes"
|
53
|
-
task :commit do
|
54
|
-
Dir.chdir(GEM_ROOT) do
|
55
|
-
version = VersionNumberTracker.version
|
56
|
-
sh("git add #{VERSION_FILE_PATH}")
|
57
|
-
sh("git commit -m \"bump to v#{version}\"")
|
58
|
-
sh("git tag -a v#{version} -m \"Tag\"")
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
desc "Push code and tags"
|
63
|
-
task :push do
|
64
|
-
sh("git push origin #{$TARGET_BRANCH}")
|
65
|
-
sh('git push --tags')
|
66
|
-
end
|
67
|
-
|
68
|
-
desc "Cleanup"
|
69
|
-
task :clean do
|
70
|
-
Dir.glob(File.join(GEM_ROOT, '*.gem')).each { |f| FileUtils.rm_rf(f) }
|
71
|
-
end
|
72
|
-
|
73
|
-
desc "Push Gem to gemfury"
|
74
|
-
task :publish do
|
75
|
-
Dir.chdir(GEM_ROOT) { sh("gem push #{Dir.glob('*.gem').first}") }
|
76
|
-
end
|
77
|
-
|
78
|
-
task :target_master do
|
79
|
-
$TARGET_BRANCH = 'master'
|
80
|
-
end
|
81
|
-
|
82
|
-
task :target_stable do
|
83
|
-
$TARGET_BRANCH = 'stable'
|
84
|
-
end
|
85
|
-
|
86
|
-
task :checkout do
|
87
|
-
sh "git status --untracked-files=no --porcelain > /dev/null || (echo '*** working dir not clean' && false)"
|
88
|
-
sh "git checkout #{$TARGET_BRANCH}"
|
89
|
-
sh "git pull"
|
90
|
-
end
|
91
|
-
|
92
|
-
task default: [
|
93
|
-
'checkout',
|
94
|
-
'version',
|
95
|
-
'clean',
|
96
|
-
'build',
|
97
|
-
'commit',
|
98
|
-
'push',
|
99
|
-
'publish'
|
100
|
-
]
|
101
|
-
|
102
|
-
task master: %w(target_master default)
|
103
|
-
task stable: %w(target_stable default)
|
104
|
-
end
|
105
|
-
|
106
|
-
desc "Clean, build, commit and push"
|
107
|
-
task release: 'release:master'
|