sequelize-rails 0.2.1 → 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 +4 -4
- data/.DS_Store +0 -0
- data/Gemfile.lock +105 -103
- data/README.md +161 -17
- data/lib/sequel/rails/generators/application_record/application_record_generator.rb +26 -0
- data/lib/sequel/rails/generators/migration/migration_generator.rb +23 -0
- data/lib/sequel/rails/generators/model/model_generator.rb +11 -0
- data/lib/sequel/rails/minitest.rb +24 -0
- data/lib/sequel/rails/railtie.rb +68 -0
- data/lib/sequel/rails/railties/controller_runtime.rb +48 -0
- data/lib/sequel/rails/railties/log_subscriber.rb +155 -0
- data/lib/sequel/rails/translation_support.rb +15 -0
- data/lib/sequel/rails/version.rb +7 -0
- data/lib/sequel/rails.rb +38 -0
- data/lib/{tasks.rake → sequel/tasks.rake} +6 -6
- data/lib/sequelize-rails.rb +1 -1
- data/lib/sequelize_rails.rb +1 -29
- data/sequelize-rails.gemspec +2 -2
- data/sig/sequelize_rails.rbs +5 -3
- metadata +18 -15
- data/lib/sequelize_rails/generators/application_record/application_record_generator.rb +0 -24
- data/lib/sequelize_rails/generators/migration/migration_generator.rb +0 -21
- data/lib/sequelize_rails/generators/model/model_generator.rb +0 -9
- data/lib/sequelize_rails/railtie.rb +0 -66
- data/lib/sequelize_rails/railties/controller_runtime.rb +0 -46
- data/lib/sequelize_rails/railties/log_subscriber.rb +0 -153
- data/lib/sequelize_rails/translation_support.rb +0 -13
- data/lib/sequelize_rails/version.rb +0 -5
- /data/lib/{sequelize_rails → sequel/rails}/db_console.rb +0 -0
- /data/lib/{sequelize_rails → sequel/rails}/generators/application_record/templates/application_record.rb.tt +0 -0
- /data/lib/{sequelize_rails → sequel/rails}/generators/migration/templates/migration.rb.erb +0 -0
@@ -1,153 +0,0 @@
|
|
1
|
-
module SequelizeRails
|
2
|
-
module Railties
|
3
|
-
class LogSubscriber < ActiveSupport::LogSubscriber
|
4
|
-
IGNORE_PAYLOAD_NAMES = ["SCHEMA", "EXPLAIN"]
|
5
|
-
|
6
|
-
class_attribute :backtrace_cleaner, default: ActiveSupport::BacktraceCleaner.new
|
7
|
-
|
8
|
-
def self.runtime=(value)
|
9
|
-
Thread.current["sequel_sql_runtime"] = value
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.runtime
|
13
|
-
Thread.current["sequel_sql_runtime"] ||= 0
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.count=(value)
|
17
|
-
Thread.current["sequel_sql_count"] = value
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.count
|
21
|
-
Thread.current["sequel_sql_count"] ||= 0
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.reset_runtime
|
25
|
-
previous = runtime
|
26
|
-
self.runtime = 0
|
27
|
-
previous
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.reset_count
|
31
|
-
previous = count
|
32
|
-
self.count = 0
|
33
|
-
previous
|
34
|
-
end
|
35
|
-
|
36
|
-
def sql(event)
|
37
|
-
self.class.runtime += event.duration
|
38
|
-
self.class.count += 1
|
39
|
-
return unless logger.debug?
|
40
|
-
|
41
|
-
payload = event.payload
|
42
|
-
|
43
|
-
return if IGNORE_PAYLOAD_NAMES.include?(payload[:name])
|
44
|
-
|
45
|
-
name = format("%s (%.1fms)", payload[:name], event.duration)
|
46
|
-
sql = payload[:sql].squeeze(" ")
|
47
|
-
binds = nil
|
48
|
-
|
49
|
-
if payload[:binds]&.any?
|
50
|
-
casted_params = type_casted_binds(payload[:type_casted_binds])
|
51
|
-
|
52
|
-
binds = []
|
53
|
-
payload[:binds].each_with_index do |attr, i|
|
54
|
-
attribute_name = if attr.respond_to?(:name)
|
55
|
-
attr.name
|
56
|
-
elsif attr.respond_to?(:[]) && attr[i].respond_to?(:name)
|
57
|
-
attr[i].name
|
58
|
-
end
|
59
|
-
|
60
|
-
filtered_params = filter(attribute_name, casted_params[i])
|
61
|
-
|
62
|
-
binds << render_bind(attr, filtered_params)
|
63
|
-
end
|
64
|
-
binds = binds.inspect
|
65
|
-
binds.prepend(" ")
|
66
|
-
end
|
67
|
-
|
68
|
-
name = colorize_payload_name(name, payload[:name])
|
69
|
-
sql = color(sql, sql_color(sql), true) if colorize_logging
|
70
|
-
|
71
|
-
debug " #{name} #{sql}#{binds}"
|
72
|
-
end
|
73
|
-
|
74
|
-
private
|
75
|
-
|
76
|
-
def type_casted_binds(casted_binds)
|
77
|
-
casted_binds.respond_to?(:call) ? casted_binds.call : casted_binds
|
78
|
-
end
|
79
|
-
|
80
|
-
def render_bind(attr, value)
|
81
|
-
case attr
|
82
|
-
when ActiveModel::Attribute
|
83
|
-
if attr.type.binary? && attr.value
|
84
|
-
value = "<#{attr.value_for_database.to_s.bytesize} bytes of binary data>"
|
85
|
-
end
|
86
|
-
when Array
|
87
|
-
attr = attr.first
|
88
|
-
else
|
89
|
-
attr = nil
|
90
|
-
end
|
91
|
-
|
92
|
-
[attr&.name, value]
|
93
|
-
end
|
94
|
-
|
95
|
-
def colorize_payload_name(name, payload_name)
|
96
|
-
if payload_name.blank? || payload_name == "SQL" # SQL vs Model Load/Exists
|
97
|
-
color(name, WHITE, true)
|
98
|
-
else
|
99
|
-
color(name, CYAN, true)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
def sql_color(sql)
|
104
|
-
case sql
|
105
|
-
when /\A\s*rollback/mi
|
106
|
-
RED
|
107
|
-
when /select .*for update/mi, /\A\s*lock/mi
|
108
|
-
CYAN
|
109
|
-
when /\A\s*select/i
|
110
|
-
CYAN
|
111
|
-
when /\A\s*insert/i
|
112
|
-
GREEN
|
113
|
-
when /\A\s*update/i
|
114
|
-
YELLOW
|
115
|
-
when /\A\s*delete/i
|
116
|
-
RED
|
117
|
-
when /transaction\s*\Z/i, /\A\s*begin/i, /\A\s*commit/i
|
118
|
-
BLUE
|
119
|
-
else
|
120
|
-
MAGENTA
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def logger
|
125
|
-
::Rails.application.config.sequel.logger
|
126
|
-
end
|
127
|
-
|
128
|
-
def debug(progname = nil, &block)
|
129
|
-
return unless super
|
130
|
-
|
131
|
-
if Rails.application.config.sequel.verbose_query_logs
|
132
|
-
log_query_source
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
def log_query_source
|
137
|
-
source = extract_query_source_location(caller)
|
138
|
-
|
139
|
-
if source
|
140
|
-
logger.debug(" ↳ #{source}")
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
def extract_query_source_location(locations)
|
145
|
-
backtrace_cleaner.clean(locations.lazy).first
|
146
|
-
end
|
147
|
-
|
148
|
-
def filter(name, value)
|
149
|
-
ActiveRecord::Base.inspection_filter.filter_param(name, value)
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module SequelizeRails
|
2
|
-
module TranslationSupport
|
3
|
-
def i18n_scope
|
4
|
-
:sequel
|
5
|
-
end
|
6
|
-
|
7
|
-
def lookup_ancestors
|
8
|
-
# ActiveModel uses the name of ancestors. Exclude unnamed classes, like
|
9
|
-
# those returned by Sequel::Model(...).
|
10
|
-
super.reject { |x| x.name.nil? }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
File without changes
|
File without changes
|
File without changes
|