diff --git a/app/controllers/active_storage/disk_controller_decorator.rb b/app/controllers/active_storage/disk_controller_decorator.rb index ec3ac0b4..b4d8ef4f 100644 --- a/app/controllers/active_storage/disk_controller_decorator.rb +++ b/app/controllers/active_storage/disk_controller_decorator.rb @@ -11,7 +11,7 @@ module ActiveStorage # Permitir incrustar archivos subidos (especialmente PDFs) desde # otros sitios. def show - original_show.tap do |s| + original_show.tap do |_| response.headers.delete 'X-Frame-Options' end end @@ -29,7 +29,7 @@ module ActiveStorage if remote_file?(token) begin url = request.body.read - body = Down.download(url, max_size: 111.megabytes) + body = Down.download(url, max_size: max_download_size) checksum = Digest::MD5.file(body.path).base64digest blob.metadata[:url] = url blob.update_columns checksum: checksum, byte_size: body.size, metadata: blob.metadata @@ -55,6 +55,14 @@ module ActiveStorage rescue ActiveStorage::IntegrityError head :unprocessable_entity end + + # Define una ruta que lleva a un JSON con los valores de los tamaños + # máximos de subida y descarga (respectivamente) que puede tener un + # archivo. + def limits + ruby_hash = { max_upload_size: max_upload_size, max_download_size: max_download_size } + render json: ruby_hash + end private @@ -64,7 +72,23 @@ module ActiveStorage def page_not_found(exception) head :not_found - ExceptionNotifier.notify_exception(exception, data: {params: params.to_hash}) + ExceptionNotifier.notify_exception(exception, data: { params: params.to_hash }) + end + + # Convierte a la variable de entorno que define el máximo tamaño de subida que puede tener un archivo + # en un entero expresado en megabytes. + # + # @return [Integer] tamaño máximo de subida que puede tener un archivo, expresado en megabytes. + def max_upload_size + ENV.fetch('MAX_UPLOAD_SIZE', '111').to_i.megabytes + end + + # Convierte a la variable de entorno que define el máximo tamaño de descarga que puede tener un archivo + # en un entero expresado en megabytes. + # + # @return [Integer] tamaño máximo de descarga que puede tener un archivo, expresado en megabytes. + def max_download_size + ENV.fetch('MAX_DOWNLOAD_SIZE', '111').to_i.megabytes end end end diff --git a/config/routes.rb b/config/routes.rb index 3dfc4c85..47a92f98 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -116,6 +116,9 @@ Rails.application.routes.draw do get 'i18n/edit', to: 'i18n#edit' post 'i18n', to: 'i18n#update' + # Ver límites de tamaño de archivos + get 'limits', to: 'sites#limits' + # Compilar el sitio post 'enqueue', to: 'sites#enqueue' post 'reorder_posts', to: 'sites#reorder_posts'