sql_runner 0.2.0 → 0.3.0

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,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a50f9a5b18f7be9951324422fdeaeccc9c730bd4d65fcb4d35549ef1ce74fee
4
- data.tar.gz: a4f6d679838c59c469cf456965d8e76bddc96b0a5747c3c9b7ce1a40ce6747c3
3
+ metadata.gz: 89e2f8d25ad8e55c06aae24d62af47733867213d933cfcf7649f17c917d6e019
4
+ data.tar.gz: 51ec63734cb7665e87e5a31c3c2ec02c943d6773d5ecfdd1a2d2762a761ac207
5
5
  SHA512:
6
- metadata.gz: 98aacdc458f23e6a47c462e5665c7c20dd9fc966af5d597e20aa1e572bf33b589407b415fe2e326c224c641103b3f4aba60ef5f720a2902dda1c5ab74249e5ef
7
- data.tar.gz: 3972eba432a3cb7aa5f67796b80db01206e82f56770350054bb6c544f1ed5af93c198486f6bf520765ccf8b26e166b9a5fea82140da72c7f93064b922d6877a5
6
+ metadata.gz: 5e3f6c4efa3b0ebaa7fb53016fe35f4a1948d228491b52e0b7648e31298d29bb96fc267416d93f11973da6c2008ef80d199c07ea62ba2861649a002a110d0f33
7
+ data.tar.gz: c62db307f7c62a358fd2c0113ace57b221cb800987290034d2b7c7c09aaef20454efdae92411c164a78ed2ab2560020a4cbf059a8b74fb9db945f454abfd196a
@@ -0,0 +1,3 @@
1
+ ---
2
+ github: [fnando]
3
+ custom: ["https://www.paypal.me/nandovieira/🍕"]
data/.rubocop.yml CHANGED
@@ -4,3 +4,13 @@ inherit_gem:
4
4
 
5
5
  AllCops:
6
6
  TargetRubyVersion: 2.6
7
+
8
+ Metrics/MethodLength:
9
+ Enabled: false
10
+
11
+ Metrics/AbcSize:
12
+ Enabled: false
13
+
14
+ Style/OpenStructUse:
15
+ Exclude:
16
+ - test/**/*.rb
data/README.md CHANGED
@@ -6,7 +6,8 @@
6
6
  [![Gem](https://img.shields.io/gem/v/sql_runner.svg)](https://rubygems.org/gems/sql_runner)
7
7
  [![Gem](https://img.shields.io/gem/dt/sql_runner.svg)](https://rubygems.org/gems/sql_runner)
8
8
 
9
- SQLRunner allows you to load your queries out of SQL files, without using ORMs. Available for PostgreSQL and MySQL.
9
+ SQLRunner allows you to load your queries out of SQL files, without using ORMs.
10
+ Available for PostgreSQL and MySQL.
10
11
 
11
12
  ## Installation
12
13
 
@@ -76,6 +77,22 @@ class GetMembers < SQLRunner::Query
76
77
  end
77
78
  ```
78
79
 
80
+ You can use this with ActiveRecord as well. To make it work, all you need to do
81
+ is establishing the connection using `activerecord:///`:
82
+
83
+ ```ruby
84
+ require "active_record"
85
+
86
+ # You probably won't need this if you're using Rails.
87
+ ActiveRecord::Base.establish_connection("postgresql:///database")
88
+
89
+ # Set the adapter to be based on ActiveRecord.
90
+ SQLRunner.connect "activerecord:///"
91
+
92
+ SQLRunner.execute "SELECT 1"
93
+ #=> <PG:Result:0x008adf4d5495b0>
94
+ ```
95
+
79
96
  ### Plugins
80
97
 
81
98
  #### Load just one record
@@ -133,7 +150,9 @@ FindUsers.call
133
150
 
134
151
  ### Adding new plugins
135
152
 
136
- First you have to create a class/module that implements the `.activate(target, options)` class method. The following example overrides the `call(**bind_vars)` method by using `Module.prepend`.
153
+ First you have to create a class/module that implements the
154
+ `.activate(target, options)` class method. The following example overrides the
155
+ `call(**bind_vars)` method by using `Module.prepend`.
137
156
 
138
157
  ```ruby
139
158
  module ReverseRecords
@@ -147,7 +166,7 @@ module ReverseRecords
147
166
  end
148
167
  ```
149
168
 
150
- # Register the plugin.
169
+ #### Register the plugin.
151
170
 
152
171
  ```ruby
153
172
  SQLRunner::Query.register_plugin :reverse, ReverseRecords
@@ -160,11 +179,17 @@ end
160
179
  Users.call
161
180
  ```
162
181
 
163
- If your plugin can receive options, you can call it as `plugin reverse: options`, where `options` can be anything (e.g. `Hash`, `Array`, `Object`, etc).
182
+ If your plugin can receive options, you can call it as
183
+ `plugin reverse: options`, where `options` can be anything (e.g. `Hash`,
184
+ `Array`, `Object`, etc).
164
185
 
165
186
  ## Benchmarks
166
187
 
167
- You won't gain too much performance by using this gem. These are the results against ActiveRecord using different wrapping libraries like [virtus](https://rubygems.org/gems/virtus) and [dry-types](https://rubygems.org/gems/dry-types).
188
+ You won't gain too much performance by using this gem. The idea is making SQL
189
+ easier to read by extracting complex stuff to their own files. These are the
190
+ results against ActiveRecord using different wrapping libraries like
191
+ [virtus](https://rubygems.org/gems/virtus) and
192
+ [dry-types](https://rubygems.org/gems/dry-types).
168
193
 
169
194
  Loading just one record:
170
195
 
@@ -186,14 +211,24 @@ activerecord - find many : 2731.5 i/s - 2.49x slower
186
211
 
187
212
  ## Development
188
213
 
189
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
214
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
215
+ `rake test` to run the tests. You can also run `bin/console` for an interactive
216
+ prompt that will allow you to experiment.
190
217
 
191
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
218
+ To install this gem onto your local machine, run `bundle exec rake install`. To
219
+ release a new version, update the version number in `version.rb`, and then run
220
+ `bundle exec rake release`, which will create a git tag for the version, push
221
+ git commits and tags, and push the `.gem` file to
222
+ [rubygems.org](https://rubygems.org).
192
223
 
193
224
  ## Contributing
194
225
 
195
- Bug reports and pull requests are welcome on GitHub at https://github.com/fnando/sql_runner. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
226
+ Bug reports and pull requests are welcome on GitHub at
227
+ https://github.com/fnando/sql_runner. This project is intended to be a safe,
228
+ welcoming space for collaboration, and contributors are expected to adhere to
229
+ the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
196
230
 
197
231
  ## License
198
232
 
199
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
233
+ The gem is available as open source under the terms of the
234
+ [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "bundler/gem_tasks"
4
4
  require "rake/testtask"
5
+ require "rubocop/rake_task"
5
6
 
6
7
  Rake::TestTask.new(:test) do |t|
7
8
  t.libs << "test"
@@ -10,4 +11,6 @@ Rake::TestTask.new(:test) do |t|
10
11
  t.warning = false
11
12
  end
12
13
 
13
- task default: :test
14
+ RuboCop::RakeTask.new
15
+
16
+ task default: %i[test rubocop]
data/examples/base.rb ADDED
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ SQLRunner.execute <<~SQL
4
+ create table if not exists users (
5
+ id serial primary key not null,
6
+ name text not null,
7
+ email text not null
8
+ )
9
+ SQL
10
+
11
+ class Users < SQLRunner::Query
12
+ end
13
+
14
+ module NumericModel
15
+ def self.new(attrs)
16
+ attrs.values.first.to_i
17
+ end
18
+ end
19
+
20
+ class Numbers < SQLRunner::Query
21
+ plugin model: NumericModel
22
+ plugin :many
23
+
24
+ query <<-SQL
25
+ SELECT n FROM generate_series(1, 10) n
26
+ SQL
27
+ end
28
+
29
+ class User
30
+ include Virtus.model
31
+
32
+ attribute :id, String
33
+ attribute :name, String
34
+ attribute :email, Integer
35
+ end
36
+
37
+ class Customer < User
38
+ end
39
+
40
+ class FindUser < SQLRunner::Query
41
+ plugins :one
42
+ plugin model: User
43
+ end
44
+
45
+ class FindAllUsers < SQLRunner::Query
46
+ plugins :many
47
+ plugin model: User
48
+ end
49
+
50
+ class CreateUser < SQLRunner::Query
51
+ plugin :one
52
+ plugin model: User
53
+ end
54
+
55
+ class DeleteAllUsers < SQLRunner::Query
56
+ plugin :many
57
+ plugin model: User
58
+ end
59
+
60
+ class FindCustomer < SQLRunner::Query
61
+ query_name "find_user"
62
+ plugin :one
63
+ plugin model: Customer
64
+ end
65
+
66
+ result = SQLRunner.execute(
67
+ "select application_name from pg_stat_activity where pid = pg_backend_pid();"
68
+ )
69
+ p [:application_name, result.to_a]
70
+
71
+ result = SQLRunner.execute <<~SQL, name: "john", age: 18
72
+ select
73
+ 'hello'::text as message,
74
+ :name::text as name,
75
+ :age::integer as age,
76
+ :name::text as name2
77
+ SQL
78
+ p [:select, result.to_a]
79
+
80
+ p [:delete_all_users, DeleteAllUsers.call]
81
+ p [:create_user, CreateUser.call(name: "Nando Vieira", email: "me@fnando.com")]
82
+ p [:create_user, CreateUser.call(name: "John Doe", email: "john@example.com")]
83
+ p [:numbers, Numbers.call]
84
+ p [:users, Users.call.to_a]
85
+ p [:find_user, FindUser.call(email: "me@fnando.com")]
86
+ p [:find_user, FindUser.call(email: "' OR 1=1 --me@fnando.com")]
87
+ p [:find_user, FindUser.call!(email: "me@fnando.com")]
88
+ p [:find_customer, FindCustomer.call!(email: "me@fnando.com")]
89
+
90
+ begin
91
+ FindUser.call!(email: "invalid@email")
92
+ rescue SQLRunner::RecordNotFound => error
93
+ p [:find_user, error]
94
+ end
95
+
96
+ SQLRunner.disconnect
data/examples/test.rb CHANGED
@@ -9,89 +9,4 @@ SQLRunner.pool = 25
9
9
  SQLRunner.timeout = 10
10
10
  SQLRunner.root_dir = "#{__dir__}/sql"
11
11
 
12
- result = SQLRunner.execute(
13
- "select application_name from pg_stat_activity where pid = pg_backend_pid();"
14
- )
15
- p result.to_a
16
-
17
- result = SQLRunner.execute <<~SQL, name: "john", age: 18
18
- select
19
- 'hello'::text as message,
20
- :name::text as name,
21
- :age::integer as age,
22
- :name::text as name2
23
- SQL
24
- p result.to_a
25
-
26
- class Users < SQLRunner::Query
27
- end
28
-
29
- module NumericModel
30
- def self.new(attrs)
31
- attrs.values.first.to_i
32
- end
33
- end
34
-
35
- class Numbers < SQLRunner::Query
36
- plugin model: NumericModel
37
- plugin :many
38
-
39
- query <<-SQL
40
- SELECT n FROM generate_series(1, 10) n
41
- SQL
42
- end
43
-
44
- class User
45
- include Virtus.model
46
-
47
- attribute :id, String
48
- attribute :name, String
49
- attribute :email, Integer
50
- end
51
-
52
- class Customer < User
53
- end
54
-
55
- class FindUser < SQLRunner::Query
56
- plugins :one
57
- plugin model: User
58
- end
59
-
60
- class FindAllUsers < SQLRunner::Query
61
- plugins :many
62
- plugin model: User
63
- end
64
-
65
- class CreateUser < SQLRunner::Query
66
- plugin :one
67
- plugin model: User
68
- end
69
-
70
- class DeleteAllUsers < SQLRunner::Query
71
- plugin :many
72
- plugin model: User
73
- end
74
-
75
- class FindCustomer < SQLRunner::Query
76
- query_name "find_user"
77
- plugin model: Customer
78
- plugins :one
79
- end
80
-
81
- p DeleteAllUsers.call
82
- p CreateUser.call(name: "Nando Vieira", email: "me@fnando.com")
83
- p CreateUser.call(name: "John Doe", email: "john@example.com")
84
- p Numbers.call
85
- p Users.call.to_a
86
- p FindUser.call(email: "me@fnando.com")
87
- p FindUser.call(email: "' OR 1=1 --me@fnando.com")
88
- p FindUser.call!(email: "me@fnando.com")
89
- p FindCustomer.call!(email: "me@fnando.com")
90
-
91
- begin
92
- FindUser.call!(email: "me@fnando.coms")
93
- rescue SQLRunner::RecordNotFound => e
94
- p e
95
- end
96
-
97
- SQLRunner.disconnect
12
+ require_relative "base"
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path("#{__dir__}/../lib")
4
+ require "sql_runner"
5
+ require "virtus"
6
+ require "active_record"
7
+
8
+ ActiveRecord::Base.establish_connection(
9
+ "postgres:///test?connect_timeout=2&application_name=myapp"
10
+ )
11
+
12
+ SQLRunner.connect "activerecord:///"
13
+ SQLRunner.pool = 25
14
+ SQLRunner.timeout = 10
15
+ SQLRunner.root_dir = "#{__dir__}/sql"
16
+
17
+ require_relative "base"
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SQLRunner
4
+ module Adapters
5
+ class ActiveRecord
6
+ class PostgreSQL < SQLRunner::Adapters::PostgreSQL
7
+ def initialize(connection) # rubocop:disable Lint/MissingSuper
8
+ @connection = connection
9
+ end
10
+
11
+ def connect(*)
12
+ end
13
+
14
+ def disconnect(*)
15
+ end
16
+ end
17
+
18
+ class MySQL < SQLRunner::Adapters::MySQL
19
+ def initialize(connection) # rubocop:disable Lint/MissingSuper
20
+ @connection = connection
21
+ end
22
+
23
+ def connect(*)
24
+ end
25
+
26
+ def disconnect(*)
27
+ end
28
+ end
29
+
30
+ class ConnectionPool
31
+ def with
32
+ ::ActiveRecord::Base.connection_pool.with_connection do |connection|
33
+ connection = connection.instance_variable_get(:@connection)
34
+
35
+ adapter = case connection.class.name
36
+ when "PG::Connection"
37
+ PostgreSQL.new(connection)
38
+ when "Mysql2::Client"
39
+ MySQL.new(connection)
40
+ else
41
+ raise UnsupportedDatabase
42
+ end
43
+
44
+ yield(adapter)
45
+ end
46
+ end
47
+
48
+ def shutdown
49
+ end
50
+ end
51
+
52
+ def self.load
53
+ require "active_record"
54
+ rescue LoadError
55
+ raise MissingDependency, "make sure the `activerecord` gem is available"
56
+ end
57
+
58
+ def self.create_connection_pool(*)
59
+ ConnectionPool.new
60
+ end
61
+ end
62
+ end
63
+ end
@@ -11,6 +11,12 @@ module SQLRunner
11
11
  raise MissingDependency, "make sure the `mysql2` gem is available"
12
12
  end
13
13
 
14
+ def self.create_connection_pool(timeout:, size:, connection_string:)
15
+ ConnectionPool.new(timeout: timeout, size: size) do
16
+ new(connection_string)
17
+ end
18
+ end
19
+
14
20
  def initialize(connection_string)
15
21
  @connection_string = connection_string
16
22
  @uri = URI.parse(@connection_string)
@@ -48,10 +54,12 @@ module SQLRunner
48
54
  validate_bindings(query, bind_vars, names)
49
55
 
50
56
  statement = @connection.prepare(bound_query)
51
- statement.execute(*bindings, cast: true)
52
- rescue Mysql2::Error
53
- reconnect
54
- execute(query, **bind_vars)
57
+ statement.execute(
58
+ *bindings,
59
+ cast: true,
60
+ as: :hash,
61
+ cast_booleans: true
62
+ )
55
63
  end
56
64
 
57
65
  def active?
@@ -11,6 +11,12 @@ module SQLRunner
11
11
  raise MissingDependency, "make sure the `pg` gem is available"
12
12
  end
13
13
 
14
+ def self.create_connection_pool(timeout:, size:, connection_string:)
15
+ ConnectionPool.new(timeout: timeout, size: size) do
16
+ new(connection_string)
17
+ end
18
+ end
19
+
14
20
  def initialize(connection_string)
15
21
  @connection_string = connection_string
16
22
  connect
@@ -59,12 +65,13 @@ module SQLRunner
59
65
  to_s
60
66
  end
61
67
 
62
- def parse(query) # rubocop:disable Metrics/MethodLength
68
+ def parse(query)
63
69
  bindings = {}
64
70
  count = 0
65
71
 
66
72
  parsed_query = query.gsub(/(:?):([a-zA-Z]\w*)/) do |match|
67
- next match if Regexp.last_match(1) == ":" # skip type casting
73
+ # skip type casting
74
+ next match if Regexp.last_match(1) == ":"
68
75
 
69
76
  name = match[1..-1]
70
77
  sym_name = name.to_sym
@@ -11,6 +11,7 @@ module SQLRunner
11
11
  module Adapters
12
12
  require "sql_runner/adapters/postgresql"
13
13
  require "sql_runner/adapters/mysql"
14
+ require "sql_runner/adapters/active_record"
14
15
 
15
16
  def self.register(name, adapter)
16
17
  SQLRunner.adapter_registry[name] = adapter
@@ -2,8 +2,6 @@
2
2
 
3
3
  module SQLRunner
4
4
  module Configuration
5
- attr_accessor :root_dir
6
- attr_accessor :timeout
7
- attr_accessor :pool
5
+ attr_accessor :root_dir, :timeout, :pool
8
6
  end
9
7
  end
@@ -6,9 +6,11 @@ module SQLRunner
6
6
  uri = URI.parse(connection_string)
7
7
  adapter = Adapters.find(uri.scheme)
8
8
 
9
- ConnectionPool.new(timeout: SQLRunner.timeout, size: SQLRunner.pool) do
10
- adapter.new(connection_string)
11
- end
9
+ adapter.create_connection_pool(
10
+ timeout: SQLRunner.timeout,
11
+ size: SQLRunner.pool,
12
+ connection_string: connection_string
13
+ )
12
14
  end
13
15
 
14
16
  def with_connection(&block)
@@ -15,7 +15,7 @@ module SQLRunner
15
15
  def call!(**bind_vars)
16
16
  result = call(**bind_vars)
17
17
 
18
- return if result
18
+ return result if result
19
19
 
20
20
  raise(
21
21
  SQLRunner::RecordNotFound,
@@ -14,6 +14,7 @@ module SQLRunner
14
14
  extend Runner
15
15
 
16
16
  def self.inherited(subclass)
17
+ super
17
18
  subclass.instance_variable_set(:@connection_pool, @connection_pool)
18
19
  subclass.instance_variable_set(:@root_dir, @root_dir)
19
20
  end
@@ -5,8 +5,8 @@ module SQLRunner
5
5
  include Connection
6
6
 
7
7
  def execute(query, **bind_vars)
8
- with_connection do |conn|
9
- conn.execute(query, **bind_vars)
8
+ with_connection do |connection|
9
+ connection.execute(query, **bind_vars)
10
10
  end
11
11
  end
12
12
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SQLRunner
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/sql_runner.rb CHANGED
@@ -17,6 +17,7 @@ module SQLRunner
17
17
  extend Configuration
18
18
  extend Runner
19
19
 
20
+ Adapters.register("activerecord", Adapters::ActiveRecord)
20
21
  Adapters.register("postgres", Adapters::PostgreSQL)
21
22
  Adapters.register("postgresql", Adapters::PostgreSQL)
22
23
  Adapters.register("mysql", Adapters::MySQL)
data/sql_runner.gemspec CHANGED
@@ -7,8 +7,10 @@ Gem::Specification.new do |spec|
7
7
  spec.version = SQLRunner::VERSION
8
8
  spec.authors = ["Nando Vieira"]
9
9
  spec.email = ["me@fnando.com"]
10
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
11
+ spec.metadata = {"rubygems_mfa_required" => "true"}
10
12
 
11
- spec.summary = <<~TEXT.gsub(/\n/, " ")
13
+ spec.summary = <<~TEXT.tr("\n", " ")
12
14
  SQLRunner allows you to load your queries out of SQL files, without using
13
15
  ORMs.
14
16
  TEXT
@@ -26,6 +28,7 @@ Gem::Specification.new do |spec|
26
28
 
27
29
  spec.add_dependency "connection_pool"
28
30
 
31
+ spec.add_development_dependency "activerecord"
29
32
  spec.add_development_dependency "bundler"
30
33
  spec.add_development_dependency "minitest-utils"
31
34
  spec.add_development_dependency "mocha"
@@ -33,5 +36,7 @@ Gem::Specification.new do |spec|
33
36
  spec.add_development_dependency "pg"
34
37
  spec.add_development_dependency "pry-meta"
35
38
  spec.add_development_dependency "rake"
39
+ spec.add_development_dependency "rubocop"
40
+ spec.add_development_dependency "rubocop-fnando"
36
41
  spec.add_development_dependency "simplecov"
37
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sql_runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-18 00:00:00.000000000 Z
11
+ date: 2022-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,34 @@ dependencies:
122
136
  - - ">="
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-fnando
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
125
167
  - !ruby/object:Gem::Dependency
126
168
  name: simplecov
127
169
  requirement: !ruby/object:Gem::Requirement
@@ -144,17 +186,18 @@ executables: []
144
186
  extensions: []
145
187
  extra_rdoc_files: []
146
188
  files:
189
+ - ".github/FUNDING.yml"
147
190
  - ".gitignore"
148
191
  - ".rubocop.yml"
149
192
  - ".travis.yml"
150
193
  - CODE_OF_CONDUCT.md
151
194
  - Gemfile
152
- - Gemfile.lock
153
195
  - LICENSE.txt
154
196
  - README.md
155
197
  - Rakefile
156
198
  - bin/console
157
199
  - bin/setup
200
+ - examples/base.rb
158
201
  - examples/bench.rb
159
202
  - examples/profiling.rb
160
203
  - examples/sql/create_user.sql
@@ -162,8 +205,10 @@ files:
162
205
  - examples/sql/find_user.sql
163
206
  - examples/sql/users.sql
164
207
  - examples/test.rb
208
+ - examples/test_active_record.rb
165
209
  - lib/sql_runner.rb
166
210
  - lib/sql_runner/adapters.rb
211
+ - lib/sql_runner/adapters/active_record.rb
167
212
  - lib/sql_runner/adapters/mysql.rb
168
213
  - lib/sql_runner/adapters/postgresql.rb
169
214
  - lib/sql_runner/configuration.rb
@@ -178,8 +223,9 @@ files:
178
223
  homepage: https://github.com/fnando/sql_runner
179
224
  licenses:
180
225
  - MIT
181
- metadata: {}
182
- post_install_message:
226
+ metadata:
227
+ rubygems_mfa_required: 'true'
228
+ post_install_message:
183
229
  rdoc_options: []
184
230
  require_paths:
185
231
  - lib
@@ -187,15 +233,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
233
  requirements:
188
234
  - - ">="
189
235
  - !ruby/object:Gem::Version
190
- version: '0'
236
+ version: 2.6.0
191
237
  required_rubygems_version: !ruby/object:Gem::Requirement
192
238
  requirements:
193
239
  - - ">="
194
240
  - !ruby/object:Gem::Version
195
241
  version: '0'
196
242
  requirements: []
197
- rubygems_version: 3.1.2
198
- signing_key:
243
+ rubygems_version: 3.3.7
244
+ signing_key:
199
245
  specification_version: 4
200
246
  summary: SQLRunner allows you to load your queries out of SQL files, without using
201
247
  ORMs.
data/Gemfile.lock DELETED
@@ -1,60 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- sql_runner (0.2.0)
5
- connection_pool
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- awesome_print (1.8.0)
11
- byebug (11.0.1)
12
- coderay (1.1.2)
13
- connection_pool (2.2.2)
14
- docile (1.3.2)
15
- json (2.3.0)
16
- method_source (0.9.2)
17
- minitest (5.14.0)
18
- minitest-utils (0.4.6)
19
- minitest
20
- mocha (1.11.2)
21
- mysql2 (0.5.3)
22
- pg (1.2.2)
23
- pry (0.12.2)
24
- coderay (~> 1.1.0)
25
- method_source (~> 0.9.0)
26
- pry-byebug (3.7.0)
27
- byebug (~> 11.0)
28
- pry (~> 0.10)
29
- pry-meta (0.0.10)
30
- awesome_print
31
- pry
32
- pry-byebug
33
- pry-remote
34
- pry-remote (0.1.8)
35
- pry (~> 0.9)
36
- slop (~> 3.0)
37
- rake (13.0.1)
38
- simplecov (0.17.1)
39
- docile (~> 1.1)
40
- json (>= 1.8, < 3)
41
- simplecov-html (~> 0.10.0)
42
- simplecov-html (0.10.2)
43
- slop (3.6.0)
44
-
45
- PLATFORMS
46
- ruby
47
-
48
- DEPENDENCIES
49
- bundler
50
- minitest-utils
51
- mocha
52
- mysql2
53
- pg
54
- pry-meta
55
- rake
56
- simplecov
57
- sql_runner!
58
-
59
- BUNDLED WITH
60
- 2.1.2