aylo25 мая 2012 в 08:35Пишем REST приложение на Sinatra и прикручиваем Redactor. Часть 2Время на прочтение5 минОхват и читатели2.9KRuby * Всего голосов 7: ↑6 и ↓1+5Добавить в закладки22Комментарии5
AlexeyK25 мая 2012 в 12:49ext = File.extname(filename) … if ext == ".doc" || ext == ".zip" || ext == ".dmg" лучше заменить на что-то вроде allowed_extensions = ['.doc', '.zip', '.dmg'] if allowed_extensions.include?(File.extname(filename)) … end и я не совсем понял, вот это File.open(File.join(settings.files, filename), 'wb') {|f| f.write file.read } #загрузили — сохранили file.read для чего в конце?
akzhan25 мая 2012 в 14:40Показать предыдущий комментарийвот так вроде лаконичнее if ext =~ /\A\.(?:doc|zip|dmg)\z/ Хотя для этого не обязательно вытаскивать расширение, можно сравнить и так: if filename =~ /\.(?:doc|zip|dmg)\z/
akzhan25 мая 2012 в 14:43Показать предыдущий комментарийКстати, желательно при получении файла его расширение преобразовать в нижний регистр, как мне кажется.
aylo25 мая 2012 в 14:08Если вы объясните почему allowed_extensions = ['.doc', '.zip', '.dmg'] if allowed_extensions.include?(File.extname(filename)) предпочтительнее, я вам буду очень благодарен. Спасибо, действительно file.read не нужен в данном случае.
akzhan25 мая 2012 в 14:45Показать предыдущий комментариймаска для сравнения (регулярка ли, массив ли) действительно должна быть вынесена вверх, на уровень класса, причем в виде замороженной константы. Так удобнее соблюдать DRY и т.д. Но это все уже — стиль кодирования, не более того.
Пишем REST приложение на Sinatra и прикручиваем Redactor. Часть 2