Skip to content

Commit a4d89da

Browse files
committed
Update the rake tasks
1 parent c439a3f commit a4d89da

3 files changed

Lines changed: 13 additions & 7 deletions

File tree

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ db:
2020
service: DB
2121
```
2222

23+
## Misc
24+
Some rake tasks are available:
25+
- `asdb:list`: list the stored attachments
26+
- `asdb:get`: download an attachment (ex. `bin/rails "asdb:get[ruby-logo.png,/tmp]"`)
27+
2328
## Do you like it? Star it!
2429
If you use this component just star it. A developer is more motivated to improve a project when there is some interest.
2530

lib/tasks/active_storage_db_tasks.rake

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace :asdb do
44
desc 'ActiveStorageDB: list attachments'
5-
task ls: [:environment] do |_t, _args|
5+
task list: [:environment] do |_t, _args|
66
::ActiveStorage::Blob.order(:filename).pluck(:byte_size, :created_at, :filename).each do |size, dt, filename|
77
size_k = (size / 1024).to_s.rjust(7)
88
date = dt.strftime('%Y-%m-%d %H:%M')
@@ -11,13 +11,14 @@ namespace :asdb do
1111
end
1212

1313
desc 'ActiveStorageDB: download attachment'
14-
task :cp, [:src, :dst] => [:environment] do |_t, args|
14+
task :get, [:src, :dst] => [:environment] do |_t, args|
1515
src = args[:src]&.strip
1616
dst = args[:dst]&.strip
1717
abort('Required arguments: source file, destination file') if src.blank? || dst.blank?
1818

1919
dst = "#{dst}/#{src}" if Dir.exist?(dst)
20-
abort("Can't write on: #{dst}") unless File.writable?(dst)
20+
dir = File.dirname(dst)
21+
abort("Can't write on: #{dir}") unless File.writable?(dir)
2122

2223
blob = ::ActiveStorage::Blob.order(created_at: :desc).find_by(filename: src)
2324
abort('Source file not found') unless blob

spec/tasks/active_storage_db_tasks_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
RSpec.describe 'ActiveStorageDB tasks' do # rubocop:disable RSpec/DescribeClass
44
include_context 'with rake tasks'
55

6-
describe 'asdb:ls' do
7-
subject(:task) { execute_task('asdb:ls') }
6+
describe 'asdb:list' do
7+
subject(:task) { execute_task('asdb:list') }
88

99
let(:file1) { create(:active_storage_blob, filename: 'file1', created_at: Time.now - 1.hour) }
1010
let(:file2) { create(:active_storage_blob, filename: 'file2', created_at: Time.now - 5.hour) }
@@ -21,8 +21,8 @@
2121
end
2222
end
2323

24-
describe 'asdb:cp' do
25-
subject(:task) { execute_task('asdb:cp', options) }
24+
describe 'asdb:get' do
25+
subject(:task) { execute_task('asdb:get', options) }
2626

2727
let(:options) {}
2828

0 commit comments

Comments
 (0)