sinatra-activerecord 2.0.21 → 2.0.25

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: 9b662752481c4940600cb421378b4dd447e549ea11a876c86a36d250f473e706
4
- data.tar.gz: ac0a9176f4e2b0abd115664db78ba1bfeb7ed043dd190c3ed5251a794555a360
3
+ metadata.gz: bbf1bdfb5b4d0cd2e37a4ede129988d22bfbeb3735db2286208212f67ef95443
4
+ data.tar.gz: f2acbe1309ee18f23fe201584be53e499306246a7e676c5fa84ec3a2cb14d395
5
5
  SHA512:
6
- metadata.gz: 6b6bb226f78cc9fd45e928625b3c062077101fb0e8a9f58ad47fd8f374ab316e96cee7366872346c02bfb411306e997a8a2848b433b8103abba9643f2f8f2f48
7
- data.tar.gz: 7c2b8cd35e0dc75e9ac1045c8a1074cdaa75eedadc6ce607fd8e99a30ba6f3b3e0abae2f0bfeab8276a38c840da529dc9f1cb5d689108c191cd29a36332958ce
6
+ metadata.gz: 5671059aac55202a024f58c1f96ecc7b10f371a513d80031e8542cc9c41be5bddf191b365529db191523a438aeccbbb149902e9811e28d46b5abb7ea14e9612d
7
+ data.tar.gz: 7fa63a69a728758271a9f82a50cdeb0cd6d382258fef5784521018ff6c1db7813f5064692b0229b5771d8f88c2804bfca54c8c57df2cfe64a18f26a3e2d66932
data/README.md CHANGED
@@ -37,6 +37,10 @@ will automatically be read as the database (if you haven't specified otherwise).
37
37
 
38
38
  If both `config/database.yml` and `$DATABASE_URL` are present, the database configuration of this two will be merged, with $DATABASE_URL's variable taking precedence over database.yml (for the same variable / key).
39
39
 
40
+
41
+ Note: If you are using ActiveRecord 6.0 and above, and have [defined multiple databases](https://guides.rubyonrails.org/active_record_multiple_databases.html#setting-up-your-application) for the database.yml, the $DATABASE_URL configuration will be discarded, following [Active Record convention here](https://github.com/rails/rails/blob/main/activerecord/lib/active_record/database_configurations.rb#L169).
42
+
43
+
40
44
  Note that in **modular** Sinatra applications you will need to first register
41
45
  the extension:
42
46
 
@@ -0,0 +1,23 @@
1
+ seed_loader = Class.new do
2
+ def load_seed
3
+ load "#{ActiveRecord::Tasks::DatabaseTasks.db_dir}/seeds.rb"
4
+ end
5
+ end
6
+
7
+ ActiveRecord::Tasks::DatabaseTasks.tap do |config|
8
+ config.root = Rake.application.original_dir
9
+ config.env = ENV["APP_ENV"] || ENV["RACK_ENV"] || "development"
10
+ config.db_dir = "db"
11
+ config.migrations_paths = ["db/migrate"]
12
+ config.fixtures_path = "test/fixtures"
13
+ config.seed_loader = seed_loader.new
14
+ config.database_configuration = ActiveRecord::Base.configurations
15
+ end
16
+
17
+ # db:load_config can be overriden manually
18
+ Rake::Task["db:seed"].enhance(["db:load_config"])
19
+ Rake::Task["db:load_config"].clear
20
+
21
+ # define Rails' tasks as no-op
22
+ Rake::Task.define_task("db:environment")
23
+ Rake::Task["db:test:deprecated"].clear if Rake::Task.task_defined?("db:test:deprecated")
@@ -7,6 +7,8 @@ require 'pathname'
7
7
  require 'yaml'
8
8
  require 'erb'
9
9
 
10
+ require 'active_record/database_configurations/connection_url_resolver' if Gem.loaded_specs["activerecord"].version >= Gem::Version.create('6.1')
11
+
10
12
  module Sinatra
11
13
  module ActiveRecordHelper
12
14
  def database
@@ -20,12 +22,29 @@ module Sinatra
20
22
  path = "#{Dir.pwd}/config/database.yml"
21
23
  url = ENV['DATABASE_URL']
22
24
  file_path = File.join(root, path) if Pathname(path).relative? and root
23
- file_spec = YAML.load(ERB.new(File.read(path)).result) || {}
24
-
25
- url_spec = ActiveRecord::ConnectionAdapters::ConnectionSpecification::ConnectionUrlResolver.new(url).to_hash
25
+ source = ERB.new(File.read(path)).result
26
+ file_spec = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(source) : YAML.load(source)
27
+ file_spec ||= {}
26
28
 
27
- # url_spec will override the same key, if exist
28
- final_spec = file_spec.keys.map{ |env| [env, file_spec[env].merge(url_spec)] }.to_h
29
+ # ActiveRecord 6.1+ has moved the connection url resolver to another module
30
+ if Gem.loaded_specs["activerecord"].version >= Gem::Version.create('6.1')
31
+ url_spec = ActiveRecord::DatabaseConfigurations::ConnectionUrlResolver.new(url).to_hash
32
+ else
33
+ url_spec = ActiveRecord::ConnectionAdapters::ConnectionSpecification::ConnectionUrlResolver.new(url).to_hash
34
+ end
35
+
36
+ # if the configuration concerns only one database, and url_spec exist, url_spec will override the same key
37
+ # if the configuration has multiple databases (Rails 6.0+ feature), url_spec is discarded
38
+ # Following Active Record config convention
39
+ # https://github.com/rails/rails/blob/main/activerecord/lib/active_record/database_configurations.rb#L169
40
+ final_spec = file_spec.keys.map do |env|
41
+ config = file_spec[env]
42
+ if config.is_a?(Hash) && config.all? { |_k, v| v.is_a?(Hash) }
43
+ [env, config]
44
+ else
45
+ [env, config.merge(url_spec)]
46
+ end
47
+ end.to_h
29
48
 
30
49
  app.set :database, final_spec
31
50
  elsif ENV['DATABASE_URL']
@@ -47,7 +66,9 @@ module Sinatra
47
66
 
48
67
  def database_file=(path)
49
68
  path = File.join(root, path) if Pathname(path).relative? and root
50
- spec = YAML.load(ERB.new(File.read(path)).result) || {}
69
+ source = ERB.new(File.read(path)).result
70
+ spec = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(source) : YAML.load(source)
71
+ spec ||= {}
51
72
  set :database, spec
52
73
  end
53
74
 
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.21
4
+ version: 2.0.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Mizerany
8
8
  - Janko Marohnić
9
9
  - Axel Kee
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-10-24 00:00:00.000000000 Z
13
+ date: 2021-12-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sinatra
@@ -110,12 +110,13 @@ files:
110
110
  - lib/sinatra/activerecord/rake/activerecord_4.rb
111
111
  - lib/sinatra/activerecord/rake/activerecord_5.rb
112
112
  - lib/sinatra/activerecord/rake/activerecord_6.rb
113
+ - lib/sinatra/activerecord/rake/activerecord_7.rb
113
114
  - lib/sinatra/activerecord/tasks.rake
114
115
  homepage: http://github.com/sinatra-activerecord/sinatra-activerecord
115
116
  licenses:
116
117
  - MIT
117
118
  metadata: {}
118
- post_install_message:
119
+ post_install_message:
119
120
  rdoc_options: []
120
121
  require_paths:
121
122
  - lib
@@ -130,8 +131,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
131
  - !ruby/object:Gem::Version
131
132
  version: '0'
132
133
  requirements: []
133
- rubygems_version: 3.1.2
134
- signing_key:
134
+ rubygems_version: 3.1.6
135
+ signing_key:
135
136
  specification_version: 4
136
137
  summary: Extends Sinatra with ActiveRecord helpers.
137
138
  test_files: []