Skip to content

Commit 1df5935

Browse files
Mattia Roccobertonblocknotes
authored andcommitted
feat: SQLite support
1 parent 9e0157f commit 1df5935

4 files changed

Lines changed: 18 additions & 2 deletions

File tree

lib/active_storage/service/db_service.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def download_chunk(key, range)
4747
instrument :download_chunk, key: key, range: range do
4848
from = range.begin + 1
4949
size = range.size
50-
args = adapter_sqlserver? ? "data, #{from}, #{size}" : "data FROM #{from} FOR #{size}"
50+
args = adapter_sqlserver? || adapter_sqlite? ? "data, #{from}, #{size}" : "data FROM #{from} FOR #{size}"
5151
record = object_for(key, fields: "SUBSTRING(#{args}) AS chunk")
5252
raise(ActiveStorage::FileNotFoundError) unless record
5353

@@ -102,6 +102,10 @@ def headers_for_direct_upload(_key, content_type:, **)
102102

103103
private
104104

105+
def adapter_sqlite?
106+
@adapter_sqlite ||= ActiveStorageDB::File.connection.adapter_name == 'SQLite'
107+
end
108+
105109
def adapter_sqlserver?
106110
@adapter_sqlserver ||= ActiveStorageDB::File.connection.adapter_name == 'SQLServer'
107111
end

lib/active_storage/service/db_service_rails70.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def compose(source_keys, destination_key, **)
99
if buffer
1010
buffer << data
1111
else
12-
buffer = data
12+
buffer = +data
1313
end
1414
end
1515
::ActiveStorageDB::File.create!(ref: destination_key, data: buffer) if buffer

spec/dummy61/config/database.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ test: &test
2929
encoding: utf8
3030
min_messages: warning
3131
pool: <%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>
32+
<% when 'sqlite' %>
33+
test: &test
34+
adapter: sqlite3
35+
database: db/test.sqlite3
36+
encoding: utf8
37+
pool: <%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>
3238
<% else %>
3339
<% raise "Invalid or empty env DB_TEST #{ENV['DB_TEST']}" %>
3440
<% end %>

spec/dummy70/config/database.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ test: &test
2929
encoding: utf8
3030
min_messages: warning
3131
pool: <%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>
32+
<% when 'sqlite' %>
33+
test: &test
34+
adapter: sqlite3
35+
database: db/test.sqlite3
36+
encoding: utf8
37+
pool: <%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>
3238
<% else %>
3339
<% raise "Invalid or empty env DB_TEST #{ENV['DB_TEST']}" %>
3440
<% end %>

0 commit comments

Comments
 (0)