sql_query 0.4.0 → 0.7.1
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/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +12 -8
- data/Appraisals +14 -8
- data/CHANGELOG.md +19 -1
- data/Gemfile +2 -0
- data/README.md +21 -4
- data/Rakefile +4 -2
- data/gemfiles/3.2.gemfile +5 -3
- data/gemfiles/4.0.gemfile +5 -3
- data/gemfiles/4.1.gemfile +5 -3
- data/gemfiles/4.2.gemfile +5 -3
- data/gemfiles/5.0.gemfile +9 -0
- data/lib/sql_query.rb +30 -16
- data/spec/config_spec.rb +15 -0
- data/spec/spec_helper.rb +9 -12
- data/spec/sql_query_spec.rb +91 -12
- data/sql_query.gemspec +23 -22
- metadata +48 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af40c82f9dec121a1f1c9eafe7fe38dcefc6ef83
|
4
|
+
data.tar.gz: 246c7a3a2a21c02e4385d098f90d2e80383f50cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 748600bc36576a006cccc698dfda7f7796d12ba96ff005098fd130b1264f0435b924c6d1263b84c535c2c9407d5b6c1d130397ac953418ca06a6ce0e7f7debdf
|
7
|
+
data.tar.gz: 15857961b369f7acc40cd3bab7d155907b41973a3508fcae1d9c021db4ef24eb0a2d49d76376ecaa5aa2f8809918722d2e18cbe21b2086c5914ae91f79fe8605
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
sql_query
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.3
|
data/.travis.yml
CHANGED
@@ -1,24 +1,28 @@
|
|
1
1
|
language: ruby
|
2
|
+
cache: bundler
|
3
|
+
before_install:
|
4
|
+
- gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
|
5
|
+
- gem install bundler -v '< 2'
|
6
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
7
|
+
- chmod +x ./cc-test-reporter
|
2
8
|
|
3
9
|
gemfile:
|
4
10
|
- gemfiles/3.2.gemfile
|
5
11
|
- gemfiles/4.0.gemfile
|
6
12
|
- gemfiles/4.1.gemfile
|
7
13
|
- gemfiles/4.2.gemfile
|
14
|
+
- gemfiles/5.0.gemfile
|
8
15
|
|
9
16
|
rvm:
|
10
|
-
- '
|
11
|
-
- '2.0.0'
|
12
|
-
- '2.1.5'
|
13
|
-
- '2.2.3'
|
17
|
+
- '2.3.3'
|
14
18
|
|
15
19
|
addons:
|
16
|
-
postgresql: '9.
|
17
|
-
code_climate:
|
18
|
-
repo_token: 743bf63d7a422064551b35931628682c6cad81a30743edee7ff9ea8af061397d
|
20
|
+
postgresql: '9.4'
|
19
21
|
|
20
22
|
env:
|
21
23
|
- BUILDER=travis
|
22
|
-
|
23
24
|
before_script:
|
24
25
|
- psql -c 'create database travis_ci_test;' -U postgres
|
26
|
+
- ./cc-test-reporter before-build
|
27
|
+
after_script:
|
28
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT -r 743bf63d7a422064551b35931628682c6cad81a30743edee7ff9ea8af061397d
|
data/Appraisals
CHANGED
@@ -1,15 +1,21 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
appraise '3.2' do
|
4
|
+
gem 'activerecord', '~> 3.2.21'
|
5
|
+
end
|
6
|
+
|
7
|
+
appraise '4.0' do
|
8
|
+
gem 'activerecord', '~> 4.0.0'
|
3
9
|
end
|
4
10
|
|
5
|
-
appraise
|
6
|
-
gem
|
11
|
+
appraise '4.1' do
|
12
|
+
gem 'activerecord', '~> 4.1.0'
|
7
13
|
end
|
8
14
|
|
9
|
-
appraise
|
10
|
-
gem
|
15
|
+
appraise '4.2' do
|
16
|
+
gem 'activerecord', '~> 4.2.0'
|
11
17
|
end
|
12
18
|
|
13
|
-
appraise
|
14
|
-
gem
|
19
|
+
appraise '5.0' do
|
20
|
+
gem 'activerecord', '~> 5.0.0'
|
15
21
|
end
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# SqlQuery change log
|
2
2
|
|
3
|
-
## 0.
|
3
|
+
## 0.7.2 / Unreleased
|
4
4
|
|
5
5
|
* [Added]
|
6
6
|
|
@@ -10,6 +10,24 @@
|
|
10
10
|
|
11
11
|
* [Fixed]
|
12
12
|
|
13
|
+
## 0.7.1 / 2021-12-14
|
14
|
+
|
15
|
+
* [Added] rails 6.1 as supported version https://github.com/sufleR/sql_query/pull/10
|
16
|
+
|
17
|
+
|
18
|
+
## 0.7.0 / 2020-08-04
|
19
|
+
|
20
|
+
* [Added] support for exec_query from ActiveRecord https://github.com/sufleR/sql_query/pull/7
|
21
|
+
|
22
|
+
|
23
|
+
## 0.6.0 / 2017-03-30
|
24
|
+
|
25
|
+
* [Added] possibility to override path where gem will look for sql file.
|
26
|
+
|
27
|
+
## 0.5.0 / 2016-04-26
|
28
|
+
|
29
|
+
* [Added] possibility to overwrite default connection class and connection directly using db_connection option.
|
30
|
+
|
13
31
|
## 0.4.0 / 2016-01-20
|
14
32
|
|
15
33
|
* [Added] execute will accept boolean attribute.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
[](http://badge.fury.io/rb/sql_query)
|
2
|
-
[](https://gemnasium.com/sufleR/sql_query)
|
3
2
|
[](https://codeclimate.com/github/sufleR/sql_query)
|
4
3
|
[](https://codeclimate.com/github/sufleR/sql_query)
|
5
4
|
[](https://travis-ci.org/sufleR/sql_query)
|
@@ -79,9 +78,15 @@ Example:
|
|
79
78
|
SqlQuery.new('player/get_by_email', email: 'e@mail.dev')
|
80
79
|
```
|
81
80
|
|
81
|
+
#### Special options
|
82
|
+
|
83
|
+
* db_connection - If you want to change default connection to database you may do it for every query execution using this option.
|
84
|
+
* sql_file_path - it will override default path where gem will look for sql file.
|
85
|
+
|
82
86
|
### Methods
|
83
87
|
|
84
|
-
- **execute** - executes query and returns result data. It accepts boolean argument. When argument is false it will raw sql query instead of prepared_for_logs.
|
88
|
+
- **execute** - executes query and returns result data. It accepts boolean argument. When argument is false it will run raw sql query instead of prepared_for_logs.
|
89
|
+
- **exec_query** - similar to `#execute` but with data returned via `ActiveRecord::Result`.
|
85
90
|
- **explain** - runs explain for SQL from template
|
86
91
|
- **sql** - returns SQL string
|
87
92
|
- **pretty_sql** - returns SQL string prettier to read in console
|
@@ -89,14 +94,19 @@ SqlQuery.new('player/get_by_email', email: 'e@mail.dev')
|
|
89
94
|
|
90
95
|
### Configuration
|
91
96
|
|
92
|
-
If you don't like default path to your queries you can configure it in initializer.
|
93
|
-
|
94
97
|
```ruby
|
95
98
|
# config/initializers/sql_query.rb
|
96
99
|
SqlQuery.configure do |config|
|
97
100
|
config.path = '/app/sql_templates'
|
101
|
+
config.adapter = ActiveRecord::Base
|
98
102
|
end
|
99
103
|
```
|
104
|
+
|
105
|
+
#### Configuration options
|
106
|
+
* path - If you don't like default path to your queries you can change it here.
|
107
|
+
|
108
|
+
* adapter - class which implements connection method.
|
109
|
+
|
100
110
|
### Partials
|
101
111
|
|
102
112
|
You can prepare part of sql query in partial file and reuse it in multiple queries.
|
@@ -131,3 +141,10 @@ If you have some examples to share please make pull request.
|
|
131
141
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
132
142
|
4. Push to the branch (`git push origin my-new-feature`)
|
133
143
|
5. Create a new Pull Request
|
144
|
+
|
145
|
+
To run specs, setup Postgres with the following:
|
146
|
+
|
147
|
+
```sql
|
148
|
+
CREATE DATABASE sqlquery;
|
149
|
+
CREATE ROLE sqlquery WITH LOGIN;
|
150
|
+
```
|
data/Rakefile
CHANGED
data/gemfiles/3.2.gemfile
CHANGED
data/gemfiles/4.0.gemfile
CHANGED
data/gemfiles/4.1.gemfile
CHANGED
data/gemfiles/4.2.gemfile
CHANGED
data/lib/sql_query.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'erb'
|
2
4
|
|
3
5
|
class SqlQuery
|
@@ -5,16 +7,18 @@ class SqlQuery
|
|
5
7
|
|
6
8
|
def initialize(file_name, options = {})
|
7
9
|
unless file_name.is_a?(String) || file_name.is_a?(Symbol)
|
8
|
-
|
10
|
+
raise ArgumentError, 'SQL file name should be String or Symbol'
|
9
11
|
end
|
12
|
+
|
10
13
|
@sql_filename = file_name
|
11
14
|
@options = options
|
15
|
+
@connection = options.try(:delete, :db_connection) ||
|
16
|
+
self.class.config.adapter.connection
|
12
17
|
prepare_variables
|
13
|
-
@connection = ActiveRecord::Base.connection
|
14
18
|
end
|
15
19
|
|
16
20
|
def explain
|
17
|
-
msg = "EXPLAIN for: \n#{
|
21
|
+
msg = "EXPLAIN for: \n#{sql}\n"
|
18
22
|
msg += connection.explain(sql)
|
19
23
|
pretty(msg)
|
20
24
|
end
|
@@ -24,6 +28,11 @@ class SqlQuery
|
|
24
28
|
connection.execute(to_execute).entries
|
25
29
|
end
|
26
30
|
|
31
|
+
def exec_query(prepare = true)
|
32
|
+
to_execute = prepare ? prepared_for_logs : sql
|
33
|
+
connection.exec_query(to_execute).to_a
|
34
|
+
end
|
35
|
+
|
27
36
|
def sql
|
28
37
|
@sql ||= ERB.new(File.read(file_path)).result(binding)
|
29
38
|
end
|
@@ -37,20 +46,16 @@ class SqlQuery
|
|
37
46
|
end
|
38
47
|
|
39
48
|
def prepared_for_logs
|
40
|
-
sql.gsub(/(\n|\s)+/,' ')
|
49
|
+
sql.gsub(/(\n|\s)+/, ' ')
|
41
50
|
end
|
42
51
|
|
43
52
|
def partial(partial_name, partial_options = {})
|
44
53
|
path, file_name = split_to_path_and_name(partial_name)
|
45
54
|
self.class.new("#{path}/_#{file_name}",
|
46
|
-
@options.merge(partial_options)
|
47
|
-
).sql
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.config=(value)
|
51
|
-
@config = value
|
55
|
+
@options.merge(partial_options)).sql
|
52
56
|
end
|
53
57
|
|
58
|
+
attr_writer :config
|
54
59
|
def self.config
|
55
60
|
@config ||= Config.new
|
56
61
|
end
|
@@ -60,10 +65,11 @@ class SqlQuery
|
|
60
65
|
end
|
61
66
|
|
62
67
|
class Config
|
63
|
-
attr_accessor :path
|
68
|
+
attr_accessor :path, :adapter
|
64
69
|
|
65
70
|
def initialize
|
66
71
|
@path = '/app/sql_queries'
|
72
|
+
@adapter = ActiveRecord::Base
|
67
73
|
end
|
68
74
|
end
|
69
75
|
|
@@ -82,11 +88,15 @@ class SqlQuery
|
|
82
88
|
# override inspect to be more human readable from console
|
83
89
|
# code copy from ActiveRecord
|
84
90
|
# https://github.com/rails/rails/blob/master/activerecord/lib/active_record/explain.rb#L30
|
85
|
-
def value.inspect
|
91
|
+
def value.inspect
|
92
|
+
self
|
93
|
+
end
|
86
94
|
value
|
87
95
|
end
|
88
96
|
|
89
97
|
def prepare_variables
|
98
|
+
return if @options.blank?
|
99
|
+
|
90
100
|
@options.each do |k, v|
|
91
101
|
instance_variable_set("@#{k}", v)
|
92
102
|
end
|
@@ -94,18 +104,22 @@ class SqlQuery
|
|
94
104
|
|
95
105
|
def file_path
|
96
106
|
files = Dir.glob(path)
|
97
|
-
if files.
|
107
|
+
if files.empty?
|
98
108
|
raise "File not found: #{@sql_filename}"
|
99
109
|
elsif files.size > 1
|
100
|
-
raise "More than one file found: #{
|
110
|
+
raise "More than one file found: #{files.join(', ')}"
|
101
111
|
else
|
102
112
|
files.first
|
103
113
|
end
|
104
114
|
end
|
105
115
|
|
106
116
|
def path
|
107
|
-
|
108
|
-
|
117
|
+
if @sql_file_path.present?
|
118
|
+
tmp_path = @sql_file_path
|
119
|
+
else
|
120
|
+
root = defined?(Rails) ? Rails.root.to_s : Dir.pwd
|
121
|
+
tmp_path = "#{root}#{self.class.config.path}"
|
122
|
+
end
|
109
123
|
tmp_path += "/#{@sql_filename}.{sql.erb,erb.sql}"
|
110
124
|
tmp_path
|
111
125
|
end
|
data/spec/config_spec.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe SqlQuery::Config do
|
6
|
+
describe 'initialize' do
|
7
|
+
it 'sets path to default' do
|
8
|
+
expect(described_class.new.path).to eq('/app/sql_queries')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'sets adapter to ActiveRecord::Base' do
|
12
|
+
expect(described_class.new.adapter).to eq(ActiveRecord::Base)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,16 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
SimpleCov.start do
|
7
|
-
add_filter '/spec/'
|
8
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'simplecov'
|
4
|
+
SimpleCov.start do
|
5
|
+
add_filter '/spec/'
|
9
6
|
end
|
10
7
|
|
11
8
|
require 'active_record'
|
12
9
|
require 'sql_query'
|
13
|
-
require 'pry'
|
10
|
+
#require 'pry'
|
14
11
|
|
15
12
|
SqlQuery.configure do |config|
|
16
13
|
config.path = '/spec/sql_queries'
|
@@ -26,15 +23,15 @@ RSpec.configure do |config|
|
|
26
23
|
end
|
27
24
|
|
28
25
|
connection = if ENV['BUILDER'] == 'travis'
|
29
|
-
|
26
|
+
'postgres://postgres@localhost/travis_ci_test'
|
30
27
|
else
|
31
|
-
|
28
|
+
'postgres://sqlquery:sqlquery@localhost/sqlquery'
|
32
29
|
end
|
33
30
|
|
34
31
|
ActiveRecord::Base.establish_connection(connection)
|
35
32
|
|
36
33
|
ActiveRecord::Base.connection.execute(
|
37
|
-
|
34
|
+
'CREATE TABLE IF NOT EXISTS players (email text);'
|
38
35
|
)
|
39
36
|
|
40
37
|
config.order = :random
|
data/spec/sql_query_spec.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe SqlQuery do
|
4
|
-
|
5
6
|
let(:options) { { email: 'e@mail.dev' } }
|
6
7
|
let(:file_name) { :get_player_by_email }
|
7
8
|
let(:query) { described_class.new(file_name, options) }
|
8
9
|
|
9
|
-
|
10
|
+
class Model < ActiveRecord::Base
|
11
|
+
self.abstract_class = true
|
12
|
+
end
|
10
13
|
|
14
|
+
describe '#initialize' do
|
11
15
|
it 'sets instance variables for all options' do
|
12
16
|
expect(query.instance_variable_get(:@email)).to eq 'e@mail.dev'
|
13
17
|
end
|
@@ -20,11 +24,21 @@ describe SqlQuery do
|
|
20
24
|
end
|
21
25
|
end
|
22
26
|
|
23
|
-
context 'file_name argument is not Symbol or String' do
|
27
|
+
context 'when file_name argument is not Symbol or String' do
|
24
28
|
let(:file_name) { { do: 'something' } }
|
25
29
|
|
26
30
|
it 'raises ArgumentError' do
|
27
|
-
expect{ query }
|
31
|
+
expect { query }
|
32
|
+
.to raise_error(ArgumentError,
|
33
|
+
'SQL file name should be String or Symbol')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'with db_connection option' do
|
38
|
+
let(:options) { { db_connection: Model.connection } }
|
39
|
+
|
40
|
+
it 'sets connection to requested' do
|
41
|
+
expect(query.connection).to eq(Model.connection)
|
28
42
|
end
|
29
43
|
end
|
30
44
|
end
|
@@ -39,7 +53,8 @@ describe SqlQuery do
|
|
39
53
|
let(:file_name) { :not_exists }
|
40
54
|
|
41
55
|
it 'raises error' do
|
42
|
-
expect{ query.send(:file_path) }
|
56
|
+
expect { query.send(:file_path) }
|
57
|
+
.to raise_error('File not found: not_exists')
|
43
58
|
end
|
44
59
|
end
|
45
60
|
|
@@ -47,14 +62,27 @@ describe SqlQuery do
|
|
47
62
|
let(:file_name) { :duplicated }
|
48
63
|
|
49
64
|
it 'raises error' do
|
50
|
-
expect{ query.send(:file_path) }
|
65
|
+
expect { query.send(:file_path) }
|
66
|
+
.to raise_error.with_message(/More than one file found:/)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#path' do
|
72
|
+
context 'when there is sql_file_path option' do
|
73
|
+
let(:options) { { sql_file_path: '/path_to_file' } }
|
74
|
+
let(:file_name) { 'fname' }
|
75
|
+
|
76
|
+
it 'sets it as dir for file' do
|
77
|
+
expect(query.send(:path)).to eq('/path_to_file/fname.{sql.erb,erb.sql}')
|
51
78
|
end
|
52
79
|
end
|
53
80
|
end
|
54
81
|
|
55
82
|
describe '#sql' do
|
56
83
|
it 'returns query string' do
|
57
|
-
expect(query.sql)
|
84
|
+
expect(query.sql)
|
85
|
+
.to eq("SELECT *\nFROM players\nWHERE email = 'e@mail.dev'\n")
|
58
86
|
end
|
59
87
|
|
60
88
|
context 'when file is .erb.sql' do
|
@@ -69,7 +97,8 @@ describe SqlQuery do
|
|
69
97
|
|
70
98
|
describe '#pretty_sql' do
|
71
99
|
it 'returns query string' do
|
72
|
-
expect(query.pretty_sql)
|
100
|
+
expect(query.pretty_sql)
|
101
|
+
.to eq("SELECT *\nFROM players\nWHERE email = 'e@mail.dev'\n")
|
73
102
|
end
|
74
103
|
end
|
75
104
|
|
@@ -77,7 +106,7 @@ describe SqlQuery do
|
|
77
106
|
let(:explain) { query.explain }
|
78
107
|
it 'returns explain string' do
|
79
108
|
expect(explain).to include 'EXPLAIN for:'
|
80
|
-
expect(explain).to include
|
109
|
+
expect(explain).to include 'FROM players'
|
81
110
|
expect(explain).to include "WHERE email = 'e@mail.dev'"
|
82
111
|
expect(explain).to include 'QUERY PLAN'
|
83
112
|
expect(explain).to include 'Seq Scan on players'
|
@@ -93,12 +122,12 @@ describe SqlQuery do
|
|
93
122
|
|
94
123
|
after do
|
95
124
|
ActiveRecord::Base.connection.execute(
|
96
|
-
|
125
|
+
'DELETE FROM players'
|
97
126
|
)
|
98
127
|
end
|
99
128
|
|
100
129
|
it 'returns data from database' do
|
101
|
-
expect(query.execute).to eq [{ 'email' => 'e@mail.dev'}]
|
130
|
+
expect(query.execute).to eq [{ 'email' => 'e@mail.dev' }]
|
102
131
|
end
|
103
132
|
|
104
133
|
context 'when prepare argument is true' do
|
@@ -116,10 +145,54 @@ describe SqlQuery do
|
|
116
145
|
end
|
117
146
|
end
|
118
147
|
|
148
|
+
describe '#exec_query' do
|
149
|
+
before do
|
150
|
+
ActiveRecord::Base.connection.execute(
|
151
|
+
"INSERT INTO players (email) VALUES ('e@mail.dev')"
|
152
|
+
)
|
153
|
+
end
|
154
|
+
|
155
|
+
after do
|
156
|
+
ActiveRecord::Base.connection.execute(
|
157
|
+
'DELETE FROM players'
|
158
|
+
)
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'returns data from database' do
|
162
|
+
expect(query.exec_query).to eq [{ 'email' => 'e@mail.dev' }]
|
163
|
+
end
|
164
|
+
|
165
|
+
context 'when prepare argument is true' do
|
166
|
+
it 'executes prepared query for logs' do
|
167
|
+
expect(query).to receive(:prepared_for_logs) { '' }
|
168
|
+
query.exec_query
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
context 'when prepare argument is false' do
|
173
|
+
it 'executes unchanged sql query' do
|
174
|
+
expect(query).not_to receive(:prepared_for_logs)
|
175
|
+
query.exec_query(false)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
119
180
|
describe '#partial' do
|
120
181
|
let(:file_name) { :get_player_by_email_with_template }
|
121
182
|
it 'resolves partials as parts of sql queries' do
|
122
|
-
expect(query.sql)
|
183
|
+
expect(query.sql)
|
184
|
+
.to eq("SELECT *\nFROM players\nWHERE players.email = 'e@mail.dev'\n\n")
|
185
|
+
end
|
186
|
+
|
187
|
+
context 'when partial name is string with file path' do
|
188
|
+
let(:file_name) { :get_player_by_email }
|
189
|
+
|
190
|
+
it 'should find file by whole path and _name' do
|
191
|
+
query
|
192
|
+
expect(described_class)
|
193
|
+
.to receive(:new).with('some/path/to/_file.sql', options) { query }
|
194
|
+
query.partial('some/path/to/file.sql', {})
|
195
|
+
end
|
123
196
|
end
|
124
197
|
end
|
125
198
|
|
@@ -129,4 +202,10 @@ describe SqlQuery do
|
|
129
202
|
.to eq("SELECT * FROM players WHERE email = 'e@mail.dev' ")
|
130
203
|
end
|
131
204
|
end
|
205
|
+
|
206
|
+
describe '.config' do
|
207
|
+
it 'returns configuration instance' do
|
208
|
+
expect(described_class.config).to be_kind_of(SqlQuery::Config)
|
209
|
+
end
|
210
|
+
end
|
132
211
|
end
|
data/sql_query.gemspec
CHANGED
@@ -1,34 +1,35 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
|
5
6
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name =
|
7
|
-
spec.version =
|
8
|
-
spec.authors = [
|
9
|
-
spec.email = [
|
10
|
-
spec.summary =
|
11
|
-
spec.description =
|
7
|
+
spec.name = 'sql_query'
|
8
|
+
spec.version = '0.7.1'
|
9
|
+
spec.authors = ['sufleR']
|
10
|
+
spec.email = ['szymon.fracczak@gmail.com']
|
11
|
+
spec.summary = 'Ruby gem to load and execute SQL queries from `.sql.erb` templates'
|
12
|
+
spec.description = "
|
12
13
|
It makes working with pure SQL easier with syntax highlighting.
|
13
14
|
Let's you clean your Ruby code from SQL strings.
|
14
|
-
|
15
|
-
spec.homepage =
|
16
|
-
spec.license =
|
15
|
+
"
|
16
|
+
spec.homepage = 'https://github.com/sufleR/sql_query'
|
17
|
+
spec.license = 'MIT'
|
17
18
|
|
18
19
|
spec.files = `git ls-files -z`.split("\x0")
|
19
20
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
21
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
|
-
spec.require_paths = [
|
22
|
+
spec.require_paths = ['lib']
|
22
23
|
|
23
|
-
spec.required_ruby_version =
|
24
|
+
spec.required_ruby_version = '>= 1.9.3'
|
24
25
|
|
25
|
-
spec.add_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
30
|
-
spec.add_development_dependency
|
31
|
-
spec.add_development_dependency
|
32
|
-
spec.add_development_dependency
|
33
|
-
spec.add_development_dependency
|
26
|
+
spec.add_dependency 'activerecord', '>= 3.2', '< 6.2'
|
27
|
+
spec.add_development_dependency 'appraisal'
|
28
|
+
spec.add_development_dependency 'bundler'
|
29
|
+
spec.add_development_dependency 'pg', '~> 0.18'
|
30
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
31
|
+
spec.add_development_dependency 'rspec', '~> 3.4'
|
32
|
+
spec.add_development_dependency 'rubocop', '<= 0.81'
|
33
|
+
spec.add_development_dependency 'simplecov'
|
34
|
+
spec.add_development_dependency 'with_model', '~> 1.2'
|
34
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sql_query
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sufleR
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -17,6 +17,9 @@ dependencies:
|
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.2'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '6.2'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -24,118 +27,121 @@ dependencies:
|
|
24
27
|
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '3.2'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '6.2'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
34
|
+
name: appraisal
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- - "
|
37
|
+
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
39
|
+
version: '0'
|
34
40
|
type: :development
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
|
-
- - "
|
44
|
+
- - ">="
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
46
|
+
version: '0'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
48
|
+
name: bundler
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
|
-
- - "
|
51
|
+
- - ">="
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
53
|
+
version: '0'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
|
-
- - "
|
58
|
+
- - ">="
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
60
|
+
version: '0'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
62
|
+
name: pg
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
67
|
+
version: '0.18'
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
74
|
+
version: '0.18'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
76
|
+
name: rake
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0
|
81
|
+
version: '13.0'
|
76
82
|
type: :development
|
77
83
|
prerelease: false
|
78
84
|
version_requirements: !ruby/object:Gem::Requirement
|
79
85
|
requirements:
|
80
86
|
- - "~>"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0
|
88
|
+
version: '13.0'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
90
|
+
name: rspec
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
93
|
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
95
|
+
version: '3.4'
|
90
96
|
type: :development
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
100
|
- - "~>"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
102
|
+
version: '3.4'
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
104
|
+
name: rubocop
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
|
-
- - "
|
107
|
+
- - "<="
|
102
108
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
109
|
+
version: '0.81'
|
104
110
|
type: :development
|
105
111
|
prerelease: false
|
106
112
|
version_requirements: !ruby/object:Gem::Requirement
|
107
113
|
requirements:
|
108
|
-
- - "
|
114
|
+
- - "<="
|
109
115
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
116
|
+
version: '0.81'
|
111
117
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
118
|
+
name: simplecov
|
113
119
|
requirement: !ruby/object:Gem::Requirement
|
114
120
|
requirements:
|
115
|
-
- - "
|
121
|
+
- - ">="
|
116
122
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0
|
123
|
+
version: '0'
|
118
124
|
type: :development
|
119
125
|
prerelease: false
|
120
126
|
version_requirements: !ruby/object:Gem::Requirement
|
121
127
|
requirements:
|
122
|
-
- - "
|
128
|
+
- - ">="
|
123
129
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0
|
130
|
+
version: '0'
|
125
131
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
132
|
+
name: with_model
|
127
133
|
requirement: !ruby/object:Gem::Requirement
|
128
134
|
requirements:
|
129
|
-
- - "
|
135
|
+
- - "~>"
|
130
136
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
137
|
+
version: '1.2'
|
132
138
|
type: :development
|
133
139
|
prerelease: false
|
134
140
|
version_requirements: !ruby/object:Gem::Requirement
|
135
141
|
requirements:
|
136
|
-
- - "
|
142
|
+
- - "~>"
|
137
143
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
144
|
+
version: '1.2'
|
139
145
|
description: "\n It makes working with pure SQL easier with syntax highlighting.\n
|
140
146
|
\ Let's you clean your Ruby code from SQL strings.\n "
|
141
147
|
email:
|
@@ -145,6 +151,8 @@ extensions: []
|
|
145
151
|
extra_rdoc_files: []
|
146
152
|
files:
|
147
153
|
- ".gitignore"
|
154
|
+
- ".ruby-gemset"
|
155
|
+
- ".ruby-version"
|
148
156
|
- ".travis.yml"
|
149
157
|
- Appraisals
|
150
158
|
- CHANGELOG.md
|
@@ -158,7 +166,9 @@ files:
|
|
158
166
|
- gemfiles/4.0.gemfile
|
159
167
|
- gemfiles/4.1.gemfile
|
160
168
|
- gemfiles/4.2.gemfile
|
169
|
+
- gemfiles/5.0.gemfile
|
161
170
|
- lib/sql_query.rb
|
171
|
+
- spec/config_spec.rb
|
162
172
|
- spec/spec_helper.rb
|
163
173
|
- spec/sql_queries/_email_partial.sql.erb
|
164
174
|
- spec/sql_queries/duplicated.erb.sql
|
@@ -188,11 +198,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
198
|
version: '0'
|
189
199
|
requirements: []
|
190
200
|
rubyforge_project:
|
191
|
-
rubygems_version: 2.
|
201
|
+
rubygems_version: 2.6.12
|
192
202
|
signing_key:
|
193
203
|
specification_version: 4
|
194
204
|
summary: Ruby gem to load and execute SQL queries from `.sql.erb` templates
|
195
205
|
test_files:
|
206
|
+
- spec/config_spec.rb
|
196
207
|
- spec/spec_helper.rb
|
197
208
|
- spec/sql_queries/_email_partial.sql.erb
|
198
209
|
- spec/sql_queries/duplicated.erb.sql
|