active_record-comments 0.1.0 → 0.2.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
- SHA1:
3
- metadata.gz: 3479f24b30ad73efbf9937f33c94c3f722e8dac7
4
- data.tar.gz: 4f399eabfb49d657ffb82dcd702eb66ee20a54bb
2
+ SHA256:
3
+ metadata.gz: 8059c748ce80a85b6afe8229401296ec82288357acd47119b289d3b5a31d50f9
4
+ data.tar.gz: 742ab1f77aa2ff09e4bdb96994549db0690781c070ae1b202a2478331614e5e9
5
5
  SHA512:
6
- metadata.gz: 19a92d96e8c9faebeb5b9a0d34287e9abd150f3fd98f9296fd01e286178f8c4f95687cca52db24976a33b8dde38dd291c10c980f8fae7b71d7eec46c574a492e
7
- data.tar.gz: bd39c3c075ec5a66b1a2db8566abd48675fd3a64af43c6bd12d1e1b62a088c70f04da3f64fdac96f5104b40c83f951cab192f1e14c25bd7cf4e599027bc0f96b
6
+ metadata.gz: c0012f4cb152f560e43135435ae1c7be7c2d4b05d6540780fd983aa8fa236518ecbe6d0b81c90157977c1decda1ce17da0e49c1abaae8c3aa2241d08e8037206
7
+ data.tar.gz: 6ca97bd722121bf43fea68b98b58d215ed3af35d2c75ce8dc03a427d3158c3d3a9049b5746e391cdd463e8eed66dd507a4d6d74a2382c31ee4e4c8dc4c49d03f
@@ -1,14 +1,15 @@
1
+ require "active_record/comments/execute_with_comments"
2
+ require "active_record/comments/version"
1
3
  require "active_record"
2
4
 
3
5
  module ActiveRecord
4
6
  module Comments
5
7
  class << self
6
8
  def comment(comment)
7
- @comment ||= []
8
- @comment << comment
9
+ current_comments << comment
9
10
  yield
10
11
  ensure
11
- @comment.pop
12
+ current_comments.pop
12
13
  end
13
14
 
14
15
  def with_comment_sql(sql)
@@ -17,19 +18,15 @@ module ActiveRecord
17
18
  end
18
19
 
19
20
  private
21
+ def current_comments
22
+ Thread.current[:ar_comments] ||= []
23
+ end
20
24
 
21
25
  def current_comment
22
- @comment.join(" ") if @comment.present?
26
+ current_comments.join(" ") if current_comments.present?
23
27
  end
24
28
  end
25
29
  end
26
30
  end
27
31
 
28
- # log is called by execute in all db adapters
29
- ActiveRecord::ConnectionAdapters::AbstractAdapter.class_eval do
30
- def log_with_comment_injection(query, *args, &block)
31
- query = ActiveRecord::Comments.with_comment_sql(query)
32
- log_without_comment_injection(query, *args, &block)
33
- end
34
- alias_method_chain :log, :comment_injection
35
- end
32
+ ActiveRecord::Comments::ExecuteWithComments.install!
@@ -0,0 +1,52 @@
1
+ module ActiveRecord
2
+ module Comments
3
+ module ExecuteWithComments
4
+ class << self
5
+ def included(base)
6
+ base.class_eval do
7
+ # ActiveRecord 3.2 vs sqlite, maybe others ...
8
+ if base.method_defined?(:exec_query)
9
+ alias_method :exec_query_without_comment, :exec_query
10
+ def exec_query(query, *args, &block)
11
+ query = ActiveRecord::Comments.with_comment_sql(query)
12
+ exec_query_without_comment(query, *args, &block)
13
+ end
14
+
15
+ # 99% case
16
+ elsif base.method_defined?(:execute)
17
+ alias_method :execute_without_comment, :execute
18
+ def execute(query, *args, &block)
19
+ query = ActiveRecord::Comments.with_comment_sql(query)
20
+ execute_without_comment(query, *args, &block)
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ def install!
27
+ if defined? ActiveRecord::ConnectionAdapters::SQLite3Adapter
28
+ install ActiveRecord::ConnectionAdapters::SQLite3Adapter
29
+ end
30
+
31
+ if defined? ActiveRecord::ConnectionAdapters::MysqlAdapter
32
+ install ActiveRecord::ConnectionAdapters::MysqlAdapter
33
+ end
34
+
35
+ if defined? ActiveRecord::ConnectionAdapters::Mysql2Adapter
36
+ install ActiveRecord::ConnectionAdapters::Mysql2Adapter
37
+ end
38
+
39
+ if defined? ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
40
+ install ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def install(adapter)
47
+ adapter.send(:include, ::ActiveRecord::Comments::ExecuteWithComments)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,5 @@
1
+ module ActiveRecord
2
+ module Comments
3
+ VERSION = "0.2.0"
4
+ end
5
+ end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record-comments
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-02 00:00:00.000000000 Z
11
+ date: 2021-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '4'
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
23
26
  requirements:
24
- - - '>='
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '4'
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '0'
32
+ version: '6.2'
27
33
  description:
28
34
  email: michael@grosser.it
29
35
  executables: []
@@ -32,6 +38,8 @@ extra_rdoc_files: []
32
38
  files:
33
39
  - MIT-LICENSE
34
40
  - lib/active_record/comments.rb
41
+ - lib/active_record/comments/execute_with_comments.rb
42
+ - lib/active_record/comments/version.rb
35
43
  homepage: https://github.com/grosser/active_record-comments
36
44
  licenses:
37
45
  - MIT
@@ -42,17 +50,16 @@ require_paths:
42
50
  - lib
43
51
  required_ruby_version: !ruby/object:Gem::Requirement
44
52
  requirements:
45
- - - '>='
53
+ - - ">="
46
54
  - !ruby/object:Gem::Version
47
- version: '0'
55
+ version: '2.5'
48
56
  required_rubygems_version: !ruby/object:Gem::Requirement
49
57
  requirements:
50
- - - '>='
58
+ - - ">="
51
59
  - !ruby/object:Gem::Version
52
60
  version: '0'
53
61
  requirements: []
54
- rubyforge_project:
55
- rubygems_version: 2.0.3
62
+ rubygems_version: 3.1.3
56
63
  signing_key:
57
64
  specification_version: 4
58
65
  summary: Comments for activerecord