active_record-mod_sql_log_subscriber 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0648c508f024c36ebcf01f441df91f3f461795953a97e3f7892dcf07b2715f0f'
4
- data.tar.gz: f23f1bf4c75985215de6d910c366b6558f8e646ae359b0d1be2010ebfe1e9718
3
+ metadata.gz: c54b21fd7a68cb5810c3133e11c170252c498c50ac5ca27636d12ed22a5dd66c
4
+ data.tar.gz: 3d1dd5f24f747bd4ec8e16275ceb50f50250113b858b42c958bd993d338166fe
5
5
  SHA512:
6
- metadata.gz: 72afcc5fa49b5a60ed787b03b761216bfcdd25ed2232cea615a9804871f7868159582118bf9bd6d69111ec75f91c5fde323520f699bdd710955efe516aba51d6
7
- data.tar.gz: 409be80d64af9a3d9f0558364063bf1ebd6ef95d3147bda62407c6e55c46548d791ce06232949746d63d431fbef1714f3af69b5c8cfb1b40729e760fda6e7df9
6
+ metadata.gz: 679d7aba887b8640ae1fdce95d63ea51b3e2c3c2c0f70695666c9f493f9e0dc4e15a7518fc5666def3511ace0b259e75f99e33cacf04b13547293a23336bf063
7
+ data.tar.gz: 587fb2221a219be48a20216faa56c1d3c4ba7afeb43dba7abe485502d715c93671c494bd038daa5c4351a885eb37e39755a86b0d48da6d30643e86eb06efefa7
data/.gitignore CHANGED
@@ -10,3 +10,4 @@
10
10
  Gemfile.lock
11
11
  .ruby-version
12
12
  .rspec
13
+ /db/*.sqlite3
data/README.md CHANGED
@@ -71,6 +71,39 @@ $ rails c
71
71
  # => "UPDATE users SET name = 'New name' WHERE id = $1 {:id=>1}"
72
72
  ```
73
73
 
74
+ ### Try console
75
+
76
+ You can try this gem by cloning this repo and run `bin/setup` and `bin/console`.
77
+
78
+ ```
79
+ $ git clone https://github.com/ryu39/active_record-mod_sql_log_subscriber.git
80
+ $ cd active_record-mod_sql_log_subscriber
81
+
82
+ # Run bundle install and create sqlite3 database.
83
+ $ bin/setup
84
+
85
+ # Connect sqlite3 database and start IRB.
86
+ $ bin/console
87
+
88
+ > User.count # => no log
89
+
90
+ > User.create!(name: 'name', age: 20, birth_date: Date.new(2000, 1, 1))
91
+ # => I, [2019-02-05T11:04:07.489057 #42019] INFO -- : begin transaction
92
+ # I, [2019-02-05T11:04:07.490495 #42019] INFO -- : INSERT INTO "users" ("name", "age", "birth_date", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?) [["name", "name"], ["age", 20], ["birth_date", "2000-01-01"], ["created_at", "2019-02-05 02:04:07.489226"], ["updated_at", "2019-02-05 02:04:07.489226"]]
93
+ # I, [2019-02-05T11:04:07.492610 #42019] INFO -- : commit transaction
94
+
95
+ > user = User.last # => no log
96
+ > user.update_attributes(name: 'new name')
97
+ # => I, [2019-02-05T11:04:52.971503 #42019] INFO -- : begin transaction
98
+ # I, [2019-02-05T11:04:52.973071 #42019] INFO -- : UPDATE "users" SET "name" = ?, "updated_at" = ? WHERE "users"."id" = ? [["name", "new name"], ["updated_at", "2019-02-05 02:04:52.971865"], ["id", 2]]
99
+ # I, [2019-02-05T11:04:52.974081 #42019] INFO -- : commit transaction
100
+
101
+ > user.destroy
102
+ # => I, [2019-02-05T11:05:13.765564 #42019] INFO -- : begin transaction
103
+ # I, [2019-02-05T11:05:13.775460 #42019] INFO -- : DELETE FROM "users" WHERE "users"."id" = ? [["id", 2]]
104
+ # I, [2019-02-05T11:05:13.776722 #42019] INFO -- : commit transaction
105
+ ```
106
+
74
107
  ## Configuration
75
108
 
76
109
  You can configure this subscriber before attaching to :active_record namespace
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  # Specify which files should be added to the gem when it is released.
21
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
22
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
23
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(config|db|test|spec|features)/}) }
24
24
  end
25
25
  spec.bindir = "exe"
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "bundler", "~> 1.17"
33
33
  spec.add_development_dependency "rake", "~> 10.0"
34
34
  spec.add_development_dependency "rspec"
35
+ spec.add_development_dependency "sqlite3", "~> 1.3.6"
35
36
  end
data/bin/connect_db.rb ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'erb'
4
+ require 'yaml'
5
+ require 'active_record'
6
+
7
+ config_file = File.expand_path('../../config/database.yml', __FILE__)
8
+ config = YAML.load(ERB.new(IO.read(config_file)).result)['db']
9
+
10
+ ActiveRecord::Base.establish_connection(config)
data/bin/console CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "bundler/setup"
4
- require "active_record/mod_sql_log_subscriber"
5
4
 
6
5
  # You can add fixtures and/or initialization code here to make experimenting
7
6
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +9,15 @@ require "active_record/mod_sql_log_subscriber"
10
9
  # require "pry"
11
10
  # Pry.start
12
11
 
12
+ require 'logger'
13
+ require 'active_record'
14
+ load File.expand_path('../connect_db.rb', __FILE__)
15
+
16
+ require "active_record/mod_sql_log_subscriber"
17
+ require File.expand_path('../../db/user.rb', __FILE__)
18
+
19
+ ::ActiveRecord::Base.logger = ::Logger.new(STDOUT, level: :info)
20
+ ::ActiveRecord::ModSqlLogSubscriber.attach_to(:active_record)
21
+
13
22
  require "irb"
14
23
  IRB.start(__FILE__)
data/bin/setup CHANGED
@@ -6,3 +6,5 @@ set -vx
6
6
  bundle install
7
7
 
8
8
  # Do any other automated setup that you need to do here
9
+ dir=$(dirname $0)
10
+ ruby $dir/setup_db.rb
data/bin/setup_db.rb ADDED
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'erb'
4
+ require 'yaml'
5
+ require 'active_record'
6
+ require 'fileutils'
7
+
8
+ config_file = File.expand_path('../../config/database.yml', __FILE__)
9
+ config = YAML.load(ERB.new(IO.read(config_file)).result)['db']
10
+
11
+ if ::File.exist?(config['database'])
12
+ ::FileUtils.rm_f(config['database'])
13
+ end
14
+
15
+ ActiveRecord::Base.establish_connection(config)
16
+
17
+ ActiveRecord::Base.connection.create_table :users do |t|
18
+ t.string :type
19
+ t.string :name, null: false
20
+ t.integer :age, null: false
21
+ t.date :birth_date, null: false
22
+ t.boolean :disabled, null: false, default: false
23
+
24
+ t.timestamps
25
+ end
@@ -10,7 +10,7 @@ module ActiveRecord
10
10
  class ModSqlLogSubscriber < ::ActiveRecord::LogSubscriber
11
11
  include ActiveSupport::Configurable
12
12
 
13
- VERSION = "0.1.0"
13
+ VERSION = "0.1.1"
14
14
 
15
15
  config_accessor :disable, :log_level, :log_format, :target_statements
16
16
 
@@ -42,12 +42,12 @@ module ActiveRecord
42
42
  end
43
43
 
44
44
  def extract_binds(payload)
45
- binds = {}
45
+ binds = []
46
46
  unless (payload[:binds] || []).empty?
47
47
  casted_params = type_casted_binds(payload[:type_casted_binds])
48
48
  payload[:binds].zip(casted_params).map do |attr, value|
49
49
  key, val = render_bind(attr, value)
50
- binds[key] = val
50
+ binds << [key, val]
51
51
  end
52
52
  end
53
53
  binds
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record-mod_sql_log_subscriber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ryu39
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-03 00:00:00.000000000 Z
11
+ date: 2019-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sqlite3
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.3.6
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.3.6
83
97
  description: An ActiveRecord::LogSubscriber which records only mod sql.
84
98
  email:
85
99
  - dev.ryu39@gmail.com
@@ -94,8 +108,10 @@ files:
94
108
  - README.md
95
109
  - Rakefile
96
110
  - active_record-mod_sql_log_subscriber.gemspec
111
+ - bin/connect_db.rb
97
112
  - bin/console
98
113
  - bin/setup
114
+ - bin/setup_db.rb
99
115
  - lib/active_record/mod_sql_log_subscriber.rb
100
116
  homepage: https://github.com/ryu39/active_record-mod_sql_log_subscriber
101
117
  licenses: