Вы должны отобразить страницу с правильным статусом.
render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false)
Лучше всего попробовать отправить дескриптор файла через сокет домена Unix. Это описано у Стивенса и в нескольких местах в сети, но я могу выкопать для вас код, если вы вежливо спросите.
В наши дни это будет довольно переносимо; многие вещи, которые считались «непереносимыми» еще тогда (например, mmap
!), сейчас чрезвычайно распространены. Если вам нужно быть более портативным, чем «большинство современных систем», у вас впереди много интересных вопросов, но, возможно, если вы расскажете нам больше о том, что вы делаете и над какими платформами вы работаете ( возможно, платформы POSIX, отличные от Unix?), мы могли бы помочь.
Существует механизм на основе сокетов домена Unix для передачи дескрипторов файлов (таких как сокеты - которые, конечно, не могут быть отображены в памяти) между процессами - с использованием sendmsg ()
системный вызов.
Вы можете найти больше в Stevens (как упомянул Курт Сэмпсон), а также в Wikipedia .
Вы можете найти гораздо более свежий вопрос с рабочий код на Отправка дескриптора файла через сокет Linux .