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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/Gemfile.lock +105 -103
  4. data/README.md +161 -17
  5. data/lib/sequel/rails/generators/application_record/application_record_generator.rb +26 -0
  6. data/lib/sequel/rails/generators/migration/migration_generator.rb +23 -0
  7. data/lib/sequel/rails/generators/model/model_generator.rb +11 -0
  8. data/lib/sequel/rails/minitest.rb +24 -0
  9. data/lib/sequel/rails/railtie.rb +68 -0
  10. data/lib/sequel/rails/railties/controller_runtime.rb +48 -0
  11. data/lib/sequel/rails/railties/log_subscriber.rb +155 -0
  12. data/lib/sequel/rails/translation_support.rb +15 -0
  13. data/lib/sequel/rails/version.rb +7 -0
  14. data/lib/sequel/rails.rb +38 -0
  15. data/lib/{tasks.rake → sequel/tasks.rake} +6 -6
  16. data/lib/sequelize-rails.rb +1 -1
  17. data/lib/sequelize_rails.rb +1 -29
  18. data/sequelize-rails.gemspec +2 -2
  19. data/sig/sequelize_rails.rbs +5 -3
  20. metadata +18 -15
  21. data/lib/sequelize_rails/generators/application_record/application_record_generator.rb +0 -24
  22. data/lib/sequelize_rails/generators/migration/migration_generator.rb +0 -21
  23. data/lib/sequelize_rails/generators/model/model_generator.rb +0 -9
  24. data/lib/sequelize_rails/railtie.rb +0 -66
  25. data/lib/sequelize_rails/railties/controller_runtime.rb +0 -46
  26. data/lib/sequelize_rails/railties/log_subscriber.rb +0 -153
  27. data/lib/sequelize_rails/translation_support.rb +0 -13
  28. data/lib/sequelize_rails/version.rb +0 -5
  29. /data/lib/{sequelize_rails → sequel/rails}/db_console.rb +0 -0
  30. /data/lib/{sequelize_rails → sequel/rails}/generators/application_record/templates/application_record.rb.tt +0 -0
  31. /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
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SequelizeRails
4
- VERSION = "0.2.1"
5
- end