Pull to refresh

Comments 5

ext = 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 для чего в конце?
вот так вроде лаконичнее

if ext =~ /\A\.(?:doc|zip|dmg)\z/


Хотя для этого не обязательно вытаскивать расширение, можно сравнить и так:

if filename =~ /\.(?:doc|zip|dmg)\z/

Кстати, желательно при получении файла его расширение преобразовать в нижний регистр, как мне кажется.
Если вы объясните почему
allowed_extensions = ['.doc', '.zip', '.dmg']
if allowed_extensions.include?(File.extname(filename))

предпочтительнее, я вам буду очень благодарен.

Спасибо, действительно file.read не нужен в данном случае.
маска для сравнения (регулярка ли, массив ли) действительно должна быть вынесена вверх, на уровень класса, причем в виде замороженной константы. Так удобнее соблюдать DRY и т.д.

Но это все уже — стиль кодирования, не более того.
Sign up to leave a comment.

Articles