geekhmer

Ruby on Rails е обичайната ми избрана рамка за изграждане на уеб приложения. Той е добър и лесен за използване, но нека си признаем: той е масивен в сравнение с по-леките рамки, като Sinatra. Защо е лошо? Има няколко причини, а бавното време за стартиране и високото използване на ресурси са само две най-често срещани проблеми. Намаляването на приложенията Ruby on Rails може да ви позволи да използвате различни компоненти (да речем Sequel вместо ActiveRecord) и да подобрите сигурността на системата. Помните ли миналогодишните драми за сигурност, свързани с разбор на параметрите на JSON? До голяма степен би било без значение за повечето приложения, ако всеки, който не го използва, го деактивира.

Модулност на релсите
За да активирате отделни модули, заменете следното в config/application.rb:

Както можете да видите по-горе, можете да премахнете ActiveRecord изцяло, ако използвате различна база данни, същата с ActionMailer или Sprockets. Вероятно няма смисъл да премахвате ActionController, обаче.

Вътрешен стек на Middleware
Всяко приложение Ruby on Rails се предлага с Активиран вътрешен стек на Middleware. Вижте този раздел на документацията за списък и описание на всеки компонент. В доста малко приложение Ruby on Rails, върху което работя, стекът изглежда така:

Мога безопасно да деактивирам повечето от горните, като модифицирам config/application.rb, например:

По същия начин успях да деактивирам по-голямата част от средния софтуер по подразбиране, без да навредя на малкото ми приложение. Ще трябва да внимавате обаче какво деактивирате. Ако използвате система за вход, ще ви трябват сесии, ако показвате флаш съобщения, не премахвайте “ActionDispatch: Flash” ... и т.н.

Що се отнася до разбора на параметрите на JSON, който миналата година беше главоболие за повечето разработчици на Ruby on Rails, той може лесно да бъде деактивиран. За да деактивирате разбора на JSON параметри, поставете този ред в config/application.rb:

API на Rails
Ако изграждате само API за вашето приложение, можете да използвате хубав скъпоценен камък, наречен rails-api.

Поставете контролерите на Hunger Slim
Ако разгледате изходния код на Ruby on Rails за ActionController: Base, ще научите, че той наследява от ActionController: Metal и включва Куп модули, които може да са или не са ви необходими във вашите контролери. Начинът да намалите стека на контролерите е да изберете тези, от които се нуждаете. Ако всичко, от което се нуждаете, е основно изобразяване, нищо не ви пречи да създавате леки контролери като този:

Няма ActionController: HipHop, страхувам се, но това ще работи също толкова добре.

Приложения за единични файлове
Добре, те не трябва да бъдат еднофайлови. Но не сте принудени да използвате структурата на каталозите по подразбиране и можете да ги направите наистина тънки и персонализирани.

Можете обаче да създадете 100% функционално приложение Rails само в config.ru:

Вашият Gemfile е Дебел
Включването на твърде много библиотеки е лошо за теглото на приложението. Трябва да проверите вашия Gemfile и да се уверите, че се нуждаете от скъпоценни камъни като ‘pry’ само в: group development, ‘rspec’ in: test etc.

Съществува обща тенденция на разработчиците на Rails да сглобяват приложения заедно с готови за употреба блокове. Трябва да помислите дали това наистина ви е необходимо. Писането на просто удостоверяване е въпрос на контролер и две действия, за това може да не ви е необходим Devise. Обработката на прости качвания на файлове може да бъде реализирана почти толкова лесно, колкото при използването на Carrierwave, с много по-малко шаблонни кодове. Насърчавам ви да създавате минимални решения само за вашите нужди, особено когато не е необходимо да използвате по-голямата част от функционалността, предоставена от даден скъпоценен камък. Ако има дупка в, да речем, Carrierwave, включително скъпоценният камък, може да направи приложението ви също уязвимо и по-тежко, отколкото трябва, разбира се.

Дотук добре, това е. Ще се видим.:)

Публикувано от Bunlong Van, 9 май 2015 г. Ruby, Ruby on Rails