sequelize-rails 0.2.1 → 0.4.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/CHANGELOG.md +3 -2
- data/Gemfile.lock +105 -103
- data/README.md +203 -26
- 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 +69 -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
@@ -0,0 +1,69 @@
|
|
1
|
+
require "sequel"
|
2
|
+
require "rails"
|
3
|
+
|
4
|
+
# Database configuration
|
5
|
+
require "active_record/connection_handling"
|
6
|
+
require "active_record/database_configurations"
|
7
|
+
|
8
|
+
# Railties
|
9
|
+
require "action_controller/railtie"
|
10
|
+
require "sequel/rails/railties/log_subscriber"
|
11
|
+
require "sequel/rails/railties/controller_runtime"
|
12
|
+
|
13
|
+
# Load instrumentation (before any database connections are established)
|
14
|
+
Sequel.extension :sequel_instrumentation
|
15
|
+
|
16
|
+
# Monkey patches
|
17
|
+
require "sequel/rails/db_console"
|
18
|
+
|
19
|
+
module Sequel
|
20
|
+
module Rails
|
21
|
+
class Railtie < ::Rails::Railtie
|
22
|
+
# Log subscriber
|
23
|
+
::Sequel::Rails::Railties::LogSubscriber.attach_to :sequel
|
24
|
+
::Sequel::Rails::Railties::LogSubscriber.backtrace_cleaner.add_filter { |line| line.gsub(::Rails.root.to_s + File::SEPARATOR, "") }
|
25
|
+
|
26
|
+
# Config initialization
|
27
|
+
config.app_generators.orm :sequelize_rails, migration: :sequel_migration
|
28
|
+
config.sequel = ActiveSupport::OrderedOptions.new
|
29
|
+
|
30
|
+
initializer "sequel.plugins" do
|
31
|
+
::Sequel::Model.plugin :active_model
|
32
|
+
end
|
33
|
+
|
34
|
+
initializer "sequel.logger" do |app|
|
35
|
+
app.config.sequel.logger ||= ::Rails.logger
|
36
|
+
app.config.sequel.verbose_query_logs = ::Rails.env.development? if app.config.sequel.verbose_query_logs.nil?
|
37
|
+
end
|
38
|
+
|
39
|
+
# https://api.rubyonrails.org/classes/ActiveModel/Translation.html
|
40
|
+
initializer "sequel.i18n_support" do
|
41
|
+
::Sequel::Model.send :extend, ::ActiveModel::Translation
|
42
|
+
::Sequel::Model.send :extend, ::Sequel::Rails::TranslationSupport
|
43
|
+
end
|
44
|
+
|
45
|
+
initializer "sequel.pretty_print" do
|
46
|
+
::Sequel::Model.plugin :pretty_print
|
47
|
+
end
|
48
|
+
|
49
|
+
initializer "sequel.configuration" do
|
50
|
+
::Sequel::Rails.configurations = ActiveRecord::DatabaseConfigurations.new ::Rails.application.config.database_configuration
|
51
|
+
end
|
52
|
+
|
53
|
+
initializer "sequel.connection" do
|
54
|
+
in_rake = Rails.const_defined?("Rake") && Rake.application.top_level_tasks.length > 0
|
55
|
+
::Sequel::Rails.connect_to :primary unless in_rake
|
56
|
+
end
|
57
|
+
|
58
|
+
# Expose database runtime to controller for logging.
|
59
|
+
initializer "sequel.log_runtime" do |_app|
|
60
|
+
require "sequel/rails/railties/controller_runtime"
|
61
|
+
ActionController::Base.send :include, ::Sequel::Rails::Railties::ControllerRuntime
|
62
|
+
end
|
63
|
+
|
64
|
+
rake_tasks do
|
65
|
+
load File.expand_path("../tasks.rake", __dir__)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "active_support/core_ext/module/attr_internal"
|
2
|
+
|
3
|
+
module Sequel
|
4
|
+
module Rails
|
5
|
+
module Railties
|
6
|
+
module ControllerRuntime
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
protected
|
10
|
+
|
11
|
+
attr_internal :db_runtime
|
12
|
+
|
13
|
+
def process_action(action, *)
|
14
|
+
# We also need to reset the runtime before each action
|
15
|
+
# because of queries in middleware or in cases we are streaming
|
16
|
+
# and it won't be cleaned up by the method below.
|
17
|
+
::Sequel::Rails::Railties::LogSubscriber.reset_runtime
|
18
|
+
::Sequel::Rails::Railties::LogSubscriber.reset_count
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def cleanup_view_runtime
|
23
|
+
db_rt_before_render = ::Sequel::Rails::Railties::LogSubscriber.reset_runtime
|
24
|
+
self.db_runtime = (db_runtime || 0) + db_rt_before_render
|
25
|
+
runtime = super
|
26
|
+
db_rt_after_render = ::Sequel::Rails::Railties::LogSubscriber.reset_runtime
|
27
|
+
self.db_runtime += db_rt_after_render
|
28
|
+
runtime - db_rt_after_render
|
29
|
+
end
|
30
|
+
|
31
|
+
def append_info_to_payload(payload)
|
32
|
+
super
|
33
|
+
payload[:db_runtime] = (db_runtime || 0) + ::Sequel::Rails::Railties::LogSubscriber.reset_runtime
|
34
|
+
payload[:db_query_count] = ::Sequel::Rails::Railties::LogSubscriber.count
|
35
|
+
end
|
36
|
+
|
37
|
+
module ClassMethods
|
38
|
+
def log_process_action(payload)
|
39
|
+
messages = super
|
40
|
+
messages << format("Database: %.1fms", payload[:db_runtime].to_f) if payload[:db_runtime]
|
41
|
+
messages << format("Queries: %d", payload[:db_query_count].to_f) if payload[:db_query_count]
|
42
|
+
messages
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
module Sequel
|
2
|
+
module Rails
|
3
|
+
module Railties
|
4
|
+
class LogSubscriber < ActiveSupport::LogSubscriber
|
5
|
+
IGNORE_PAYLOAD_NAMES = ["SCHEMA", "EXPLAIN"]
|
6
|
+
|
7
|
+
class_attribute :backtrace_cleaner, default: ActiveSupport::BacktraceCleaner.new
|
8
|
+
|
9
|
+
def self.runtime=(value)
|
10
|
+
Thread.current["sequel_sql_runtime"] = value
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.runtime
|
14
|
+
Thread.current["sequel_sql_runtime"] ||= 0
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.count=(value)
|
18
|
+
Thread.current["sequel_sql_count"] = value
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.count
|
22
|
+
Thread.current["sequel_sql_count"] ||= 0
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.reset_runtime
|
26
|
+
previous = runtime
|
27
|
+
self.runtime = 0
|
28
|
+
previous
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.reset_count
|
32
|
+
previous = count
|
33
|
+
self.count = 0
|
34
|
+
previous
|
35
|
+
end
|
36
|
+
|
37
|
+
def sql(event)
|
38
|
+
self.class.runtime += event.duration
|
39
|
+
self.class.count += 1
|
40
|
+
return unless logger.debug?
|
41
|
+
|
42
|
+
payload = event.payload
|
43
|
+
|
44
|
+
return if IGNORE_PAYLOAD_NAMES.include?(payload[:name])
|
45
|
+
|
46
|
+
name = format("%s (%.1fms)", payload[:name], event.duration)
|
47
|
+
sql = payload[:sql].squeeze(" ")
|
48
|
+
binds = nil
|
49
|
+
|
50
|
+
if payload[:binds]&.any?
|
51
|
+
casted_params = type_casted_binds(payload[:type_casted_binds])
|
52
|
+
|
53
|
+
binds = []
|
54
|
+
payload[:binds].each_with_index do |attr, i|
|
55
|
+
attribute_name = if attr.respond_to?(:name)
|
56
|
+
attr.name
|
57
|
+
elsif attr.respond_to?(:[]) && attr[i].respond_to?(:name)
|
58
|
+
attr[i].name
|
59
|
+
end
|
60
|
+
|
61
|
+
filtered_params = filter(attribute_name, casted_params[i])
|
62
|
+
|
63
|
+
binds << render_bind(attr, filtered_params)
|
64
|
+
end
|
65
|
+
binds = binds.inspect
|
66
|
+
binds.prepend(" ")
|
67
|
+
end
|
68
|
+
|
69
|
+
name = colorize_payload_name(name, payload[:name])
|
70
|
+
sql = color(sql, sql_color(sql), true) if colorize_logging
|
71
|
+
|
72
|
+
debug " #{name} #{sql}#{binds}"
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def type_casted_binds(casted_binds)
|
78
|
+
casted_binds.respond_to?(:call) ? casted_binds.call : casted_binds
|
79
|
+
end
|
80
|
+
|
81
|
+
def render_bind(attr, value)
|
82
|
+
case attr
|
83
|
+
when ActiveModel::Attribute
|
84
|
+
if attr.type.binary? && attr.value
|
85
|
+
value = "<#{attr.value_for_database.to_s.bytesize} bytes of binary data>"
|
86
|
+
end
|
87
|
+
when Array
|
88
|
+
attr = attr.first
|
89
|
+
else
|
90
|
+
attr = nil
|
91
|
+
end
|
92
|
+
|
93
|
+
[attr&.name, value]
|
94
|
+
end
|
95
|
+
|
96
|
+
def colorize_payload_name(name, payload_name)
|
97
|
+
if payload_name.blank? || payload_name == "SQL" # SQL vs Model Load/Exists
|
98
|
+
color(name, WHITE, true)
|
99
|
+
else
|
100
|
+
color(name, CYAN, true)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def sql_color(sql)
|
105
|
+
case sql
|
106
|
+
when /\A\s*rollback/mi
|
107
|
+
RED
|
108
|
+
when /select .*for update/mi, /\A\s*lock/mi
|
109
|
+
CYAN
|
110
|
+
when /\A\s*select/i
|
111
|
+
CYAN
|
112
|
+
when /\A\s*insert/i
|
113
|
+
GREEN
|
114
|
+
when /\A\s*update/i
|
115
|
+
YELLOW
|
116
|
+
when /\A\s*delete/i
|
117
|
+
RED
|
118
|
+
when /transaction\s*\Z/i, /\A\s*begin/i, /\A\s*commit/i
|
119
|
+
BLUE
|
120
|
+
else
|
121
|
+
MAGENTA
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def logger
|
126
|
+
::Rails.application.config.sequel.logger
|
127
|
+
end
|
128
|
+
|
129
|
+
def debug(progname = nil, &block)
|
130
|
+
return unless super
|
131
|
+
|
132
|
+
if ::Rails.application.config.sequel.verbose_query_logs
|
133
|
+
log_query_source
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def log_query_source
|
138
|
+
source = extract_query_source_location(caller)
|
139
|
+
|
140
|
+
if source
|
141
|
+
logger.debug(" ↳ #{source}")
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
def extract_query_source_location(locations)
|
146
|
+
backtrace_cleaner.clean(locations.lazy).first
|
147
|
+
end
|
148
|
+
|
149
|
+
def filter(name, value)
|
150
|
+
ActiveRecord::Base.inspection_filter.filter_param(name, value)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Sequel
|
2
|
+
module Rails
|
3
|
+
module TranslationSupport
|
4
|
+
def i18n_scope
|
5
|
+
:sequel
|
6
|
+
end
|
7
|
+
|
8
|
+
def lookup_ancestors
|
9
|
+
# ActiveModel uses the name of ancestors. Exclude unnamed classes, like
|
10
|
+
# those returned by Sequel::Model(...).
|
11
|
+
super.reject { |x| x.name.nil? }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/sequel/rails.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sequel/rails/version"
|
4
|
+
require "sequel/rails/railtie"
|
5
|
+
require "sequel/rails/translation_support"
|
6
|
+
|
7
|
+
# Plugins
|
8
|
+
require "sequel/plugins/pretty_print"
|
9
|
+
|
10
|
+
# Generators
|
11
|
+
require "rails/generators"
|
12
|
+
require "sequel/rails/generators/migration/migration_generator"
|
13
|
+
require "sequel/rails/generators/model/model_generator"
|
14
|
+
require "sequel/rails/generators/application_record/application_record_generator"
|
15
|
+
|
16
|
+
# Minitest support
|
17
|
+
begin
|
18
|
+
gem "minitest"
|
19
|
+
require "sequel/rails/minitest"
|
20
|
+
rescue Gem::LoadError
|
21
|
+
end
|
22
|
+
|
23
|
+
module Sequel
|
24
|
+
module Rails
|
25
|
+
mattr_accessor :configurations
|
26
|
+
|
27
|
+
# Opens a database connection based on the given configuration name
|
28
|
+
def self.connect_to config_name, opts = {}
|
29
|
+
config = configurations.resolve(config_name).configuration_hash.dup
|
30
|
+
config[:adapter] = "sqlite" if config[:adapter] == "sqlite3"
|
31
|
+
config[:max_connections] ||= config.delete(:pool) if config[:pool]
|
32
|
+
config[:pool_timeout] ||= config.delete(:timeout) / 1000 if config[:timeout]
|
33
|
+
Dir.chdir ::Rails.root do
|
34
|
+
::Sequel.connect config, opts
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -23,14 +23,14 @@ db_namespace = namespace ns do
|
|
23
23
|
task check_protected_environments: :load_config do
|
24
24
|
# Disconnect any potentially-existing Sequel database connections
|
25
25
|
Sequel::DATABASES.each(&:disconnect)
|
26
|
-
raise "Error: the #{Rails.env} environment is a protected environment." unless Rails.env.test? || Rails.env.development?
|
26
|
+
raise "Error: the #{::Rails.env} environment is a protected environment." unless ::Rails.env.test? || ::Rails.env.development?
|
27
27
|
end
|
28
28
|
|
29
29
|
task load_config: :environment do
|
30
30
|
if ActiveRecord::Base.configurations.empty?
|
31
31
|
# Changed: the active_record railtie may not be loaded, so we need to load the database configuration directly
|
32
32
|
# ActiveRecord::Base.configurations = ActiveRecord::Tasks::DatabaseTasks.database_configuration
|
33
|
-
ActiveRecord::Base.configurations = Rails.application.config.database_configuration
|
33
|
+
ActiveRecord::Base.configurations = ::Rails.application.config.database_configuration
|
34
34
|
# This line was also added
|
35
35
|
ActiveRecord::Base.establish_connection
|
36
36
|
end
|
@@ -46,7 +46,7 @@ db_namespace = namespace ns do
|
|
46
46
|
ActiveRecord::Tasks::DatabaseTasks.for_each(databases) do |name|
|
47
47
|
desc "Create #{name} database for current environment"
|
48
48
|
task name => :load_config do
|
49
|
-
db_config = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: name)
|
49
|
+
db_config = ActiveRecord::Base.configurations.configs_for(env_name: ::Rails.env, name: name)
|
50
50
|
ActiveRecord::Tasks::DatabaseTasks.create(db_config)
|
51
51
|
end
|
52
52
|
end
|
@@ -65,7 +65,7 @@ db_namespace = namespace ns do
|
|
65
65
|
ActiveRecord::Tasks::DatabaseTasks.for_each(databases) do |name|
|
66
66
|
desc "Drop #{name} database for current environment"
|
67
67
|
task name => [:load_config, :check_protected_environments] do
|
68
|
-
db_config = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: name)
|
68
|
+
db_config = ActiveRecord::Base.configurations.configs_for(env_name: ::Rails.env, name: name)
|
69
69
|
ActiveRecord::Tasks::DatabaseTasks.drop(db_config)
|
70
70
|
end
|
71
71
|
end
|
@@ -112,14 +112,14 @@ db_namespace = namespace ns do
|
|
112
112
|
task connection: [:environment] do
|
113
113
|
require "sequel/core"
|
114
114
|
Sequel.extension :migration
|
115
|
-
|
115
|
+
Sequel::Rails.connect_to :primary
|
116
116
|
end
|
117
117
|
|
118
118
|
# desc "Backs up the database from DATABASE_URL or config/database.yml for the current RAILS_ENV"
|
119
119
|
# task dump: [] do
|
120
120
|
# end
|
121
121
|
|
122
|
-
desc "
|
122
|
+
desc "Runs database migrations"
|
123
123
|
task migrate: [:connection] do
|
124
124
|
migrator.run
|
125
125
|
end
|
data/lib/sequelize-rails.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require "
|
1
|
+
require "sequel/rails"
|
data/lib/sequelize_rails.rb
CHANGED
@@ -1,29 +1 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "sequelize_rails/version"
|
4
|
-
require "sequelize_rails/railtie"
|
5
|
-
require "sequelize_rails/translation_support"
|
6
|
-
|
7
|
-
# Plugins
|
8
|
-
require "sequel/plugins/pretty_print"
|
9
|
-
|
10
|
-
# Generators
|
11
|
-
require "rails/generators"
|
12
|
-
require "sequelize_rails/generators/migration/migration_generator"
|
13
|
-
require "sequelize_rails/generators/model/model_generator"
|
14
|
-
require "sequelize_rails/generators/application_record/application_record_generator"
|
15
|
-
|
16
|
-
module SequelizeRails
|
17
|
-
mattr_accessor :configurations
|
18
|
-
|
19
|
-
# Opens a database connection based on the given configuration name
|
20
|
-
def self.connect_to config_name, opts = {}
|
21
|
-
config = SequelizeRails.configurations.resolve(config_name).configuration_hash.dup
|
22
|
-
config[:adapter] = "sqlite" if config[:adapter] == "sqlite3"
|
23
|
-
config[:max_connections] ||= config.delete(:pool) if config[:pool]
|
24
|
-
config[:pool_timeout] ||= config.delete(:timeout) / 1000 if config[:timeout]
|
25
|
-
Dir.chdir Rails.root do
|
26
|
-
Sequel.connect config, opts
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
1
|
+
require "sequel/rails"
|
data/sequelize-rails.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "lib/
|
3
|
+
require_relative "lib/sequel/rails/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "sequelize-rails"
|
7
|
-
spec.version = ::
|
7
|
+
spec.version = ::Sequel::Rails::VERSION
|
8
8
|
spec.authors = ["Kenaniah Cerny"]
|
9
9
|
spec.email = ["kenaniah@gmail.com"]
|
10
10
|
|
data/sig/sequelize_rails.rbs
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequelize-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenaniah Cerny
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -144,6 +144,7 @@ executables: []
|
|
144
144
|
extensions: []
|
145
145
|
extra_rdoc_files: []
|
146
146
|
files:
|
147
|
+
- ".DS_Store"
|
147
148
|
- ".standard.yml"
|
148
149
|
- Appraisals
|
149
150
|
- CHANGELOG.md
|
@@ -160,20 +161,22 @@ files:
|
|
160
161
|
- gemfiles/rails_7.gemfile
|
161
162
|
- lib/sequel/extensions/sequel_instrumentation.rb
|
162
163
|
- lib/sequel/plugins/pretty_print.rb
|
164
|
+
- lib/sequel/rails.rb
|
165
|
+
- lib/sequel/rails/db_console.rb
|
166
|
+
- lib/sequel/rails/generators/application_record/application_record_generator.rb
|
167
|
+
- lib/sequel/rails/generators/application_record/templates/application_record.rb.tt
|
168
|
+
- lib/sequel/rails/generators/migration/migration_generator.rb
|
169
|
+
- lib/sequel/rails/generators/migration/templates/migration.rb.erb
|
170
|
+
- lib/sequel/rails/generators/model/model_generator.rb
|
171
|
+
- lib/sequel/rails/minitest.rb
|
172
|
+
- lib/sequel/rails/railtie.rb
|
173
|
+
- lib/sequel/rails/railties/controller_runtime.rb
|
174
|
+
- lib/sequel/rails/railties/log_subscriber.rb
|
175
|
+
- lib/sequel/rails/translation_support.rb
|
176
|
+
- lib/sequel/rails/version.rb
|
177
|
+
- lib/sequel/tasks.rake
|
163
178
|
- lib/sequelize-rails.rb
|
164
179
|
- lib/sequelize_rails.rb
|
165
|
-
- lib/sequelize_rails/db_console.rb
|
166
|
-
- lib/sequelize_rails/generators/application_record/application_record_generator.rb
|
167
|
-
- lib/sequelize_rails/generators/application_record/templates/application_record.rb.tt
|
168
|
-
- lib/sequelize_rails/generators/migration/migration_generator.rb
|
169
|
-
- lib/sequelize_rails/generators/migration/templates/migration.rb.erb
|
170
|
-
- lib/sequelize_rails/generators/model/model_generator.rb
|
171
|
-
- lib/sequelize_rails/railtie.rb
|
172
|
-
- lib/sequelize_rails/railties/controller_runtime.rb
|
173
|
-
- lib/sequelize_rails/railties/log_subscriber.rb
|
174
|
-
- lib/sequelize_rails/translation_support.rb
|
175
|
-
- lib/sequelize_rails/version.rb
|
176
|
-
- lib/tasks.rake
|
177
180
|
- sequelize-rails.gemspec
|
178
181
|
- sig/sequelize_rails.rbs
|
179
182
|
homepage: https://github.com/kenaniah/sequelize-rails
|
@@ -199,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
202
|
- !ruby/object:Gem::Version
|
200
203
|
version: '0'
|
201
204
|
requirements: []
|
202
|
-
rubygems_version: 3.
|
205
|
+
rubygems_version: 3.4.1
|
203
206
|
signing_key:
|
204
207
|
specification_version: 4
|
205
208
|
summary: A gem for using Sequel with Rails natively.
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SequelizeRails
|
4
|
-
module Generators
|
5
|
-
class ApplicationRecordGenerator < ::Rails::Generators::Base
|
6
|
-
source_root File.expand_path("templates", __dir__)
|
7
|
-
|
8
|
-
def create_application_record
|
9
|
-
template "application_record.rb", application_record_file_name
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def application_record_file_name
|
15
|
-
@application_record_file_name ||=
|
16
|
-
if namespaced?
|
17
|
-
"app/models/#{namespaced_path}/application_record.rb"
|
18
|
-
else
|
19
|
-
"app/models/application_record.rb"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SequelizeRails
|
4
|
-
module Generators
|
5
|
-
class MigrationGenerator < ::Rails::Generators::NamedBase
|
6
|
-
include Rails::Generators::Migration
|
7
|
-
|
8
|
-
source_root File.expand_path("templates", __dir__)
|
9
|
-
|
10
|
-
argument :attributes, type: :array, default: [], banner: "field[:type][:index] field[:type][:index]"
|
11
|
-
|
12
|
-
def self.next_migration_number _dirname
|
13
|
-
Time.now.strftime "%Y%m%d%H%M%S"
|
14
|
-
end
|
15
|
-
|
16
|
-
def create_migration_file
|
17
|
-
migration_template "migration.rb.erb", "db/migrate/#{file_name}.rb"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
require "sequel"
|
2
|
-
require "rails"
|
3
|
-
|
4
|
-
# Database configuration
|
5
|
-
require "active_record/connection_handling"
|
6
|
-
require "active_record/database_configurations"
|
7
|
-
|
8
|
-
# Railties
|
9
|
-
require "action_controller/railtie"
|
10
|
-
require "sequelize_rails/railties/log_subscriber"
|
11
|
-
require "sequelize_rails/railties/controller_runtime"
|
12
|
-
|
13
|
-
# Load instrumentation (before any database connections are established)
|
14
|
-
Sequel.extension :sequel_instrumentation
|
15
|
-
|
16
|
-
# Monkey patches
|
17
|
-
require "sequelize_rails/db_console"
|
18
|
-
|
19
|
-
module SequelizeRails
|
20
|
-
class Railtie < Rails::Railtie
|
21
|
-
# Log subscriber
|
22
|
-
::SequelizeRails::Railties::LogSubscriber.attach_to :sequel
|
23
|
-
::SequelizeRails::Railties::LogSubscriber.backtrace_cleaner.add_filter { |line| line.gsub(Rails.root.to_s + File::SEPARATOR, "") }
|
24
|
-
|
25
|
-
# Config initialization
|
26
|
-
config.app_generators.orm :sequelize_rails, migration: :sequel_migration
|
27
|
-
config.sequel = ActiveSupport::OrderedOptions.new
|
28
|
-
|
29
|
-
initializer "sequel.plugins" do
|
30
|
-
::Sequel::Model.plugin :active_model
|
31
|
-
end
|
32
|
-
|
33
|
-
initializer "sequel.logger" do |app|
|
34
|
-
app.config.sequel.logger ||= ::Rails.logger
|
35
|
-
app.config.sequel.verbose_query_logs = ::Rails.env.development? if app.config.sequel.verbose_query_logs.nil?
|
36
|
-
end
|
37
|
-
|
38
|
-
# https://api.rubyonrails.org/classes/ActiveModel/Translation.html
|
39
|
-
initializer "sequel.i18n_support" do
|
40
|
-
::Sequel::Model.send :extend, ::ActiveModel::Translation
|
41
|
-
::Sequel::Model.send :extend, ::SequelizeRails::TranslationSupport
|
42
|
-
end
|
43
|
-
|
44
|
-
initializer "sequel.pretty_print" do
|
45
|
-
::Sequel::Model.plugin :pretty_print
|
46
|
-
end
|
47
|
-
|
48
|
-
initializer "sequel.configuration" do
|
49
|
-
SequelizeRails.configurations = ActiveRecord::DatabaseConfigurations.new Rails.application.config.database_configuration
|
50
|
-
end
|
51
|
-
|
52
|
-
initializer "sequel.connection" do
|
53
|
-
SequelizeRails.connect_to :primary unless ARGV.any? { |c| c.starts_with? "db:" }
|
54
|
-
end
|
55
|
-
|
56
|
-
# Expose database runtime to controller for logging.
|
57
|
-
initializer "sequel.log_runtime" do |_app|
|
58
|
-
require "sequelize_rails/railties/controller_runtime"
|
59
|
-
ActionController::Base.send :include, SequelizeRails::Railties::ControllerRuntime
|
60
|
-
end
|
61
|
-
|
62
|
-
rake_tasks do
|
63
|
-
load File.expand_path("../tasks.rake", __dir__)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|