diff --git a/app/controllers/sites_controller.rb b/app/controllers/sites_controller.rb index 17287eb0..bec42b39 100644 --- a/app/controllers/sites_controller.rb +++ b/app/controllers/sites_controller.rb @@ -110,27 +110,6 @@ class SitesController < ApplicationController redirect_to sites_path end - # Obtiene y streamea archivos estáticos desde el repositorio mismo, - # pero sólo los públicos (es decir los archivos subidos desde Sutty). - def static_file - authorize site - - file = params.require(:file) + '.' + params.require(:format) - - raise ActionController::RoutingError.new(nil, nil) unless file.start_with? 'public/' - - path = site.relative_path file - - raise ActionController::RoutingError.new(nil, nil) unless File.exist? path - - # TODO: Hacer esto usa recursos, pero menos que generar el sitio - # cada vez. Para poder usar X-Accel tendríamos que montar los - # repositorios en el servidor web, cosa que no queremos, o hacer - # links simbólicos desde todos los public, o usar un servidor web - # local que soporte sendfile mejor que Rails (nghttpd?) - send_file path - end - private def site diff --git a/app/models/post.rb b/app/models/post.rb index 9aa0ac61..8885897f 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -103,8 +103,10 @@ class Post src = element.attributes['src'] next unless src&.value&.start_with? 'public/' + file = MetadataFile.new(site: site, post: self, document: document, layout: layout) + file.value['path'] = src.value - src.value = Rails.application.routes.url_helpers.site_static_file_url(site, file: src.value) + src.value = Rails.application.routes.url_helpers.url_for(file.static_file) end # Notificar a les usuaries que están viendo una previsualización diff --git a/config/routes.rb b/config/routes.rb index f2487066..635be07a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -28,9 +28,6 @@ Rails.application.routes.draw do # alias en nginx sin tener que usar expresiones regulares para # detectar el nombre del sitio. get '/sites/private/:site_id(*file)', to: 'private#show', constraints: { site_id: %r{[^/]+} } - # Obtener archivos estáticos desde el directorio público - get '/sites/:site_id/static_file/(*file)', to: 'sites#static_file', as: 'site_static_file', - constraints: { site_id: %r{[^/]+} } get '/env.js', to: 'env#index' match '/api/v3/projects/:site_id/notices' => 'api/v1/notices#create', via: %i[post]