Lotus

54 views
Skip to first unread message

Sava Chankov

unread,
Aug 11, 2015, 8:18:27 PM8/11/15
to ruby-on-rai...@googlegroups.com, Деница Белогушева, Gerasim Stanchev
След цял ден, прекаран в ужасно смърдящите вътрешности на activerecord, толкова се отчаях колко тотално зле e положението, че отидох да проверя какво става с datamapper (опит да се пише на Ruby все едно е Haskell  = водка с бира), където за моя огромна изненада открих ето това: http://lotusrb.org/guides/ и се почувствах точно като преди 10 години, когато за първи път видях Rails.

Изглежда твърде хубаво, за да е истина. Но ако сутринта още е там, това е началото на един голям релсов демонтаж.

Valentin Mihov

unread,
Aug 12, 2015, 4:06:13 AM8/12/15
to ruby-on-rai...@googlegroups.com, Деница Белогушева, Gerasim Stanchev
От любопитство, какво толкова те отчая в ActiveRecord?

--Вальо
signature.asc

Sava Chankov

unread,
Aug 12, 2015, 4:34:55 AM8/12/15
to ruby-on-rai...@googlegroups.com, Деница Белогушева, Gerasim Stanchev
2015-08-12 11:06 GMT+03:00 Valentin Mihov <valenti...@gmail.com>:
От любопитство, какво толкова те отчая в ActiveRecord?

Камъчето, което обърна колата беше начинът, по който се формира SQL за insert-ите. Просто отвори postgresql_adapter.rb и го разгледай внимателно. Ако code smell беше физическо усещане, тук щеше да мирише на мъртви делфинчета като на български плаж през 2015.

Krasimir Angelov

unread,
Aug 12, 2015, 6:51:29 PM8/12/15
to ruby-on-rai...@googlegroups.com, Деница Белогушева, Gerasim Stanchev
http://rom-rb.org/ също изглежда интересно.

Radoslav Stankov

unread,
Aug 13, 2015, 3:37:19 AM8/13/15
to Ruby on Rails: България, de...@tutuf.com, ge...@tutuf.com
Lotus изглежда интересен. Но според мен имат още доста работа. Последно като ги гледах нямаха решение за релации. Разделянето на Repo и Model е доста добра идея. Според мен са на прав път. Останалата част от Lotus, не ме впечатлява доста защото напоследък главано ползвам Rails за само като api сървър и там не помагат много.

Аз лично бях приятно изненадан от  прогреса на https://github.com/jeremyevans/sequel и по точно на "Sequel::Model". Преди като го гледах си беше просто SQL DSL. Сега вече изглежда доста по удобен за ползване.

За ROM съм доста скептичен. Преди месец бях пробвал да го ползвам и беше супер не удобен. Доста хора го хвалят като алетернатива. Но https://rubygems.org/gems/rom показва около "13 000" сваления. За контекст моя SearchObject ( https://rubygems.org/gems/search_object)  има "10 000". Което значи, че почти никой не го ползва. 

Sava Chankov

unread,
Aug 13, 2015, 6:32:04 AM8/13/15
to ruby-on-rai...@googlegroups.com, Деница Белогушева, Gerasim Stanchev
2015-08-13 1:51 GMT+03:00 Krasimir Angelov <krasimir...@gmail.com>:
http://rom-rb.org/ също изглежда интересно.

rom-rb (Ruby Object Mapper) e бившия datamapper2. Data Mapper е по-подходящ pattern от Active Record, когато сложността на приложението надмине определено ниво. За съжаление Ruby Object Mapper-a е написан от човек, който учи Haskell и кода изглежда като писан на статично типизиран, функционален език, което прави API-то му напълно неразбираемо.


2015-08-13 10:37 GMT+03:00 Radoslav Stankov <rsta...@gmail.com>:
Останалата част от Lotus, не ме впечатлява доста защото напоследък главано ползвам Rails за само като api сървър и там не помагат много.

Мисля, че изгледите на Lotus са най-големия прогрес в сравнение с Rails, който е съвсем малко над нивото на PHP в този аспект.

Valentin Mihov

unread,
Aug 13, 2015, 8:12:16 AM8/13/15
to ruby-on-rai...@googlegroups.com, Деница Белогушева, Gerasim Stanchev
> Мисля, че изгледите на Lotus са най-големия прогрес в сравнение с Rails,
> който е съвсем малко над нивото на PHP в този аспект.

Според мен AREL дърпа ORM-а в рейлс напред: https://github.com/rails/arel

Не знам как един алтернативен ORM би могъл да "настигне" ActiveRecord
без подобна функционалност....

> Камъчето, което обърна колата беше начинът, по който се формира SQL за
> insert-ите. Просто отвори postgresql_adapter.rb и го разгледай
> внимателно. Ако code smell беше физическо усещане, тук щеше да мирише на
> мъртви делфинчета като на български плаж през 2015.

Честно казано в мастър бранча не намерих нещо особенно свързано със
inserts. Да не би да става въпрос за bulk inserts? Това мисля, че все
още е неразрешен проблем в AR без разни допълнителни библиотеки.

--Вальо

On 8/13/15 1:31 PM, Sava Chankov wrote:
> 2015-08-13 1:51 GMT+03:00 Krasimir Angelov <krasimir...@gmail.com
> <mailto:krasimir...@gmail.com>>:
>
> http://rom-rb.org/ също изглежда интересно.
>
>
> rom-rb (Ruby Object Mapper) e бившия datamapper2. Data Mapper е
> по-подходящ pattern от Active Record, когато сложността на приложението
> надмине определено ниво. За съжаление Ruby Object Mapper-a е написан от
> човек, който учи Haskell и кода изглежда като писан на статично
> типизиран, функционален език, което прави API-то му напълно неразбираемо.
>
> 2015-08-13 10:37 GMT+03:00 Radoslav Stankov <rsta...@gmail.com
> <mailto:rsta...@gmail.com>>:
signature.asc

Dimitar Panayotov

unread,
Aug 13, 2015, 12:51:44 PM8/13/15
to ruby-on-rai...@googlegroups.com, Деница Белогушева, Gerasim Stanchev
Хей, група,

Лично аз почти нямам оплаквания от Rails (или AR в частност), тъй като гледам реалистично на употребите му -- определено не е швейцарския нож който би взел за дълъг престой в планината, това е факт. Той определено НЕ може всичко. Истината е че в момента в който излезеш извън утъпканите пътечки, веднага ще трябва да отглеждаш мутирали домати в периферията на градината му, с които да храниш проекта си.

That being said, веднъж пробвах това за един мини-промо проект: https://github.com/soveran/cuba, и като цяло ми хареса. Изглежда като леко подобрена Sinatra, но имай предвид че аналогията е груба и неточна, защото нямат едно и също функционално покритие.

Моят опит в Ruby екосистемата ми е показал че Rails не е за прекалено големи и/или дълго поддържани проекти. Ако искаш по-фин контрол, по-трайна поддръжка и ако си убеден че ще трябва да газиш до колене и да fine-tune-ваш stuff често, тогава според мен Sinatra / Cuba са по-добрият вариант. Да, ще кодиш малко повече за да вършиш неща които в Rails идват наготово, но това всъщност не е толкова лошо колкото човек свикнал с Rails би помислил (а и нищо не ти пречи да си включваш addons или да си правиш utility функции, right?) -- за сметка на което имаш повече контрол, и не кодиш с 1ч повече per feature за всеки изминал месец в проекта.

Don't be afraid to not rely on Rails for everything. Не е толкова трудно човек да направи кадърен уеб проект и без него, докато все още ползва Ruby. Ако имаш конкретни въпроси, стреляй.

Дано това помага.
// Дими.


P.S.: Ако ти трябва контрол над самите сурови HTTP потоци на requests и responses, даже и тогава с Rack се работи трудно (Rack е в основата на Sinatra и Rails). Въпреки че на теория си има `hijack_io` опцията, на практика да накараш това да работи с nginx + Passenger или в distributed setup с N инстанции на Unicorn / Puma, е оживял кошмар -- поучи се от моите бели косми AND DON'T GO THERE. Когато на мен се случи да ми потрябва такъв контрол наскоро, извадих теслата и директно минах на Go и native HTTP функциите му. И вече съм жестоко пристрастен към него. =)

Dimitar Panayotov

unread,
Aug 13, 2015, 1:15:11 PM8/13/15
to Ruby on Rails: България

Emil Petkov

unread,
Aug 13, 2015, 4:33:57 PM8/13/15
to ruby-on-rai...@googlegroups.com
Това Ruby on Rails БГ ли е, или Hipster БГ.

Очевидно Rails узря последните 3-4 години. Не е най-новия framework - появиха се лотуси, куби, панами, какво ли не - но няма и нужда. Всеки безработен freelancer с малко повече свободно време пише web framework от 7 часа до 3 дни, барабар със сайта нещо-си-rb.com. И после го ползват той, брат му, и братовчед му. Ако целта е да се пишат сайтчета за лютеничка, или малки корпоративни с 5 таба и contact us, наистина няма особено значение какво се ползва.

Но 2015 да се твърди, че Rails не става за големи приложения и дълго поддържани проекти е меко казано нелепо. Какво да кажем за Zendesk, Github, Goodreads, SlideShare, NewRelic, и т.н. Успешните startups от 2006-2010 са вече мултимилионни бизнеси, благодарение на Rails.

Определено е стабилен, има огромно community & ecosystem, и работи идеално за големи приложения, или по скоро платформи с web interface. rake stats ми казва, че и при нас имаме приложения с 100К+ LoC без tests и си се поддържат и разширяват дълго без особени грижи.

Не всичко има нужда от 90% JS с client-side MVC, docker, и microservices. Гледайте и дерзайте: https://www.youtube.com/watch?v=naTRzjHaIhE

--
Eмо

Krasimir Angelov

unread,
Aug 13, 2015, 10:37:12 PM8/13/15
to ruby-on-rai...@googlegroups.com
Nigga, please! :)

Rails или по-скоро The Rails Way определено има някои проблеми и то точно при големи приложения. Може да се правим че ги няма, но това няма да ги накара да изчезнат.

В тази презентация кажи речи всеки втори слайд е We made our own, не е точно най-добрата реклама как Рейлс just works в такива случаи.

А и в тази група дискусиите са толкова нарядко, не бива така с лошо :) без значение дали са за руби, релси, хипстъри или index.php. 

Предполагам преди 10 години са казвали и Абе какво е това руби с тия релси? Ние тука си имаме 100К+ LOC java/asp/... приложение без никви тестове и си върви като стой та гледай :)


PS. BTW реших да проверя и как се развива discuss.ruby.bg,

$ curl -I https://discuss.ruby.bg/
HTTP/1.1 500 Internal Server Error
Server: nginx/1.1.19
Date: Fri, 14 Aug 2015 02:26:38 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Status: 500 Internal Server Error
X-Request-Id: f7381cd4-37a2-4970-8515-b4461dd51ef4
X-Runtime: 0.095538
X-Powered-By: Phusion Passenger 4.0.38

¯\_(ツ)_/¯

Dimitar Kostov

unread,
Aug 14, 2015, 2:48:46 AM8/14/15
to Ruby on Rails: България
Аз май съм изпуснал рекламата на Rails just works

Valentin Mihov

unread,
Aug 14, 2015, 4:45:24 AM8/14/15
to ruby-on-rai...@googlegroups.com
On 8/14/15 5:37 AM, Krasimir Angelov wrote:
> Предполагам преди 10 години са казвали и /Абе какво е това руби с тия
> релси? Ние тука си имаме 100К+ LOC java/asp/... приложение без никви
> тестове и си върви като стой та гледай/ :)

Честно казано самият факт, че приложението е 100К+ монилитен код е
достатъчен според мен. От там нататък may god be with you и не мисля че
има език, който ще те спаси. До момента съм работил с един такъв
титаничен монолит и не беше никак фън. Това че има толкова код, значи и
че има доста хора, които мажат по него и от там нататък нещата ескалират
бързо.

Та не съм сигурен, че проблема опира до език и framework или до
архитектура и разцепване на системата по малки модули, които имат
собствен dev и deployment process.

--Вальо

signature.asc

Emil Petkov

unread,
Aug 14, 2015, 4:48:07 AM8/14/15
to ruby-on-rai...@googlegroups.com
Никой не е казал, че само в един app тия 100К. Има си отделни apps, има и engines, plugins, etc

Това с cookpad го дадох като някакъв краен пример, определено не сме БГ cookpad :)


Емо

Emil Petkov

unread,
Aug 14, 2015, 4:55:09 AM8/14/15
to ruby-on-rai...@googlegroups.com
 Nigga

Rails πътя в съвсем ОК за голяма част от приложенията. Очевидно има и други варианти, зависи от естеството на проекта.

В една по-голяма платформа, има винаги we made our own. Съвсем нормално е, има си специфики и бизнес домейн. Това няма как да го видиш и разбереш с 2 контролера на лотус.

Не мисля че сме тръгнали на лошо - просто няма как да сме всички на едно мнение, което изначално е причината за повечето дискусии.

Бтв. Не ми обяснявай ти за Java  & PHP и тестове - щото съм прекарал доста време да движа проект с големината на 4 CookPads, с Java базирани технологии. Имахме code coverage дето го няма в повечето “test-first” rails проекти. Същото и за PHP - има си composer, има си и MVC frameworks, както и PHPSpec - имаме текущи проекти които ги ползват и кода свети. Не е до технология, а до хора и подход.

Емо

Sava Chankov

unread,
Aug 14, 2015, 8:53:15 AM8/14/15
to ruby-on-rai...@googlegroups.com
2015-08-13 23:33 GMT+03:00 Emil Petkov <emil.s...@gmail.com>:
Определено е стабилен, има огромно community & ecosystem

Ако превъртим лентата 10 години обратно, абсолютно същото се казваше за Java, PHP и подобните произведения. Rails нахлу на терена като Стоичков (който изглежда е давал уроци по публично общуване на създателя му) и с ефектно изпълнение елиминира тази неадекватна пасмина, само за да се превърне по-късно в същия нелеп изрод.

Факт е, че всеки проект има свои собствени конкретни трудности и е невъзможно да се направи фреймуърк, който да удовлетворява всички. Също така е факт, че конкретните проблеми в Rails са известни от години, на науката и приложните изкуства са известни и решенията на тези проблеми, но работният поток на този процес неизменно е:
  1. Съществуването на проблема се отрича
  2. Той ескалира до степен да не може да бъде замитан повече под килима
  3. Разработчици от общността предлагат смислени от архитектурна гледна точка решения
  4. Лидерът на Rails не ги взима под внимание и налага свое решение, често пъти с дитирамба, чието малоумие граничи с реч на др. Тодор Живков
  5. След като са загубени години с неоптимално решение (разбирай: използвано само от г-н Хенсън в Basecamp), ножът опира до кокала на твърде много хора, за да бъде ситуацията игнорирана
  6. Предложено в т.3 смислено решение все пак става част от Rails, но светът не е стоял на едно място, появили са се други фреймуърци и езици и много хора са мигрирали към тях, а екосистемата на Rails се е превърнала в застояло блато
  7. Като български боксьор, когото току-що са били като маче у дирек, г-н Хенсън гордо заявява: „Продължаваме напред!“ и цикълът се завърта

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

Dimitar Panayotov

unread,
Aug 14, 2015, 9:18:25 AM8/14/15
to Ruby on Rails: България, de...@tutuf.com, ge...@tutuf.com
Към Емо -- не схващам как така едновременно е нелепо да се твърди че Rails не става за големи и дълго поддържани проекти, докато също така е вярно че като ти е по-голям проекта, трябва често да излизаш извън границите на Rails. Pick one? Аз клоня към второто, то е 100% факт of life и беше точно което и аз казах -- Rails ти дава хубави утъпкани пътечки, but that's about it; потрябва ли ти нещо което е уникално за проекта ти и вероятно не се изисква от повече от няколко хиляди души на тази планета, е повече от ясно че трябва да си roll-ваш your own implementation. Което в моята невронна мрежа означава че Rails не става за големи и дълго поддържани проекти, по смисъла на това че няма out of the box solutions (дори и gems) за немалко практически и често срещани нужди. Забележи че съм съгласен че причините са далеч извън само тази единствена изтъкната тук -- не мога да споря с факти.

За справка -- ActiveJob е нещо което започнах да ползвам още в момента в който дръпнах Rails 4.2, т.е. два дни след като излезе. Това не променя тъжния факт че трябваше да го monkey-patch-вам 10 пъти подред за да си направя мини-framework който да го ползва него (а не долнолежащия Sidekiq / DelayedJob и т.н.) за да ми дава статуси на задачи, да ми позволява да ги прекъсвам почти когато си поискам, да мога да правя retry на задачи които съм спрял ръчно, така че те да се възползват от retry capabilities които долнолежащият task executor предоставя, да мога да правя задачи да expire-ват и да бъдат автоматично изтребвани ако не ping-ват определени Redis ключове след конфигурируемо количество време... и още знаеш ли колко неща. Like, damn. Сякаш тези хора смятат че Rails е играчка и никога няма да се ползва в multi-server / multi-region deployments. Boggles my mind in 2015, честно.

Сава е МНОГО прав. Диктатора на Rails си има собствено мнение; немалко пъти съм се намирал в съгласие с него защото бързо трупащата се сложност която много хора искат да контрабандират в Rails само ще го направи по-лош (и по-бързо ще го влоши, също) и от Tomcat v3/v4 и безумните бъгове и zero-day exploits в servlet implementations които имаше. Той е в немалка степен прав да се бори за по- "lean & mean framework", проблемът обаче е че когато идват хора при него с very legit and very often required use cases, тогава и той и другите си запушват ушите и почват колективно да пеят "не те слушам, не те слушам". Ако идеш да разгледаш на ActiveJob тикетите, само там вече ще ти се иска да ги линчуваш. Затова по-добре след това не отивай при core Rails issues. Предупреден си. ;)

Нищо от казаното не значи че Rails е лош. It's still awesome in many ways. Нито един пост и ред казан дотук от който и да е в тази дискусия не казва че е лош по принцип. Значи само че Rails е едно добро начало на проект и че трябва да си готов да monkeypatch-ваш или пускаш pull requests за gems, like a lot of times, когато искаш реални, практични и клиентски сценарии. Играчковите проекти които всички пускат за демо колко им е страхотен 200-те реда Ruby код не се броят.

Сава, high five. You are getting it.

Sava Chankov

unread,
Aug 14, 2015, 1:46:05 PM8/14/15
to ruby-on-rai...@googlegroups.com
2015-08-13 10:37 GMT+03:00 Radoslav Stankov <rsta...@gmail.com>:
Аз лично бях приятно изненадан от  прогреса на https://github.com/jeremyevans/sequel и по точно на "Sequel::Model". Преди като го гледах си беше просто SQL DSL. Сега вече изглежда доста по удобен за ползване.

Нещо не мога да разбера по какво се различава SequelModel от ActiveRecord, освен по именуването на асоциациите?

Stefan Kanev

unread,
Aug 14, 2015, 2:59:08 PM8/14/15
to ruby-on-rai...@googlegroups.com


> On 14.08.2015 г., at 20:45, Sava Chankov <sava.c...@gmail.com> wrote:
>
> Нещо не мога да разбера по какво се различава SequelModel от ActiveRecord, освен по именуването на асоциациите?

Едното е активно, другото - реактивно ("в следствие").

Михаил Минков

unread,
Aug 15, 2015, 1:07:19 AM8/15/15
to ruby-on-rai...@googlegroups.com
Брех, тоя Джереми Еванс. Толкова скромен човек.

Написал цял реактивен ORM, но пропуснал да спомене думата "Reactive" както в README-то, така и в Tutorial-а. Много скромен.
Но пък е успял да каже "Sequel::Model implements the active record pattern".


Reply all
Reply to author
Forward
0 new messages