Pomoc w doborze frameworka

Cześć,
będę z kolegą robić projekt w rubym (bardziej żeby poznać język) i zastanawiam się nad wyborem frameworka webowego. Generalnie zależy mi na dosyć prostej architekturze frameworka jak i aplikacji w nim tworzonej. Dodatkowo ograniczeniem jest brak możliwości używania wszelkiego rodzaju orm’ów, zapytania muszą być wpisywane “ręcznie”, a relacje między tabelami nie będą definiowane w modelu, więc nie chciałbym żeby było to narzucone.
To co by mogło usprawnić nam pracę, to jakiś w miarę przystępny routing, jakiś moduł do walidacji danych przesyłanych przez formularz, sesji, ciasteczek, autoryzacji, czy acl. Oczywiście nie wszystko jest wymagane, ale fajnie jakby było.
Podejrzewam, że większość frameworków bazuje na MVC i właśnie o takie mi chodzi.
Fajnie jakby go można było jakoś w miarę szybko ogarnąć, żeby nie tracić dużo czasu na naukę, bo do końca semestru coraz mniej czasu :slight_smile:
Czy polecacie coś konkretnego? Ewentualnie, czy czegoś z całego serca nie polecacie?

Sinatra może? http://www.sinatrarb.com/

+1 dla Sinatry.
Walidacje musicie sobie albo sami zrobić, albo podeprzeć jakąś lekką biblioteką – jeśli nie ActiveModel, to może Sequel?
http://sequel.rubyforge.org/documentation.html

Przyznam, że ten Sequel wygląda ciekawie.
Czy waszym zdaniem opłaca się dociągać całą bibliotekę, by wykonywać później zapytania w takim stylu jak w sekcji Using raw SQL (http://sequel.rubyforge.org/rdoc/files/doc/cheat_sheet_rdoc.html#label-Using+raw+SQL)? Wszelkie rzeczy w stylu where(:salary => 5000…10000) niestety odpadają. Czy nie lepiej po prostu dołączyć sterownik do MySQL’a, czy Postgresa?

http://www.padrinorb.com/ - na stronie nie mają zaktualizowane wszystkich opcji dla poszczególnych komponentów (możesz je podejrzeć przy generowaniu projektu) ale sam framework wygląda dość interesująco.

Jak chcesz “gołe” zapytania do sqla, to wystarczy Ci adapter z https://www.ruby-toolbox.com/categories/SQL_Database_Adapters, a potem już tylko, dla przykładu:

[code]db = SQLite3::Database.new(‘tysql.sqlite’)

ids = db.execute(“SELECT prod_id FROM Products;”)[/code]
itd. :slight_smile:

Ze swojej strony też polecam Sinatrę, swoją drogą idealną przystawkę przed Railsami, żeby zobaczyć od zaplecza z czym to się je.

Czyli większość za Sinatrą :slight_smile: ale z tego co widzę to Padrino jest powiązane z Sinatrą. Przyznam, że wcześniej słyszałem tylko o RoR i Sinatrze i też bym się skłaniał ku niej. Napiszcie jeszcze do czego RoR w moim opisie w pierwszym poście nie pasował :slight_smile:
Jeszcze takie bardziej ogólne pytanko (ryzyko offtopa :slight_smile: ). Czy tylko RoR, czyni Rubiego popularnym językiem (takie wrażenie odnoszę), czy może są jakieś inne ciekawe biblioteki i frameworki (niekoniecznie webowe) godne uwagi?

Z ciekawości, skąd takie ograniczenie?

Sam zaczalem z takim nastawieniem: Zaczne od Sinatry, a jak przestanie wystarczac to sie przesiade na Railsy. Tylko ze sinatra bardzo szybko przestala wystarczac i zaczelo to wszystko zmierzac w strone budowania “wlasnych Railsow” i szukania po necie jak zrobic rzeczy ktore w Railsach sa out of the box, a ksiazka prowadzi Cie za reke. Zwlaszcza, ze kolega ma dosc spora liste zyczen w ktora chce doposazyc Sinatre. Wiec ja bede za Railsami od poczatku.

Drogus, o ile dobrze zrozumiałem, blizzard robi projekt na uczelnię i pewnie są to ograniczenia nałożone przez prowadzącego.

A ja myślę, że w celach edukacyjnych to dobry pomysł, żeby użyć Sinatry, a jeśli zajdzie potrzeba dołączyć niektóre moduły z Railsów (np walidacje z ActiveModel). Dzięki temu będziesz miał może nawet lepsze pojęcie o tym jakie moduły są w Railsach i gdzie je znaleźć. Pamiętam sprzed dwóch lat prezentację Michała Taszyckiego na KRUGu, który pokazał jak można to zrobić - prezentację znalazłem tutaj: http://rails-3-internals-active-model.heroku.com/#1 :slight_smile:

Co do tych ograniczeń, to jest to wymóg postawiony przez prowadzącego, więc nie mam na to wpływu.

Dzięki wszystkim za pomoc i podesłane linki. Jakby ktoś chciał coś dodać, to z chęcią przeczytam to co ma do powiedzenia.

W innym topicu wspominałem, że chciałem przyglądnąć się jakimś prostym stronom w Sinatra. Przy okazji znalazłem ciekawą książkę Jump Start Sinatra, która krok po kroku prowadzi poprzez proces tworzenia takiej strony. Ale widzę, że oprócz Sinatry są jeszcze inne frameworki. Pomijam kwestię RoR, bo domyślam się, że nauka jego nie jest polecana osobie początkującej w Rubim i w zagadnieniach tworzenia aplikacji webowych. Zatem czy inne frameworki są warte uwagi? Czy nie warto sobie nimi zawracać głowy? Padła tu nazwa Padrino, ale jest jeszcze kilka innych: Web App Frameworks.

Padrino to coś jak Railsy na sinatrze, mają dużo dodatków dopisanych do sinatry i powstaje pytanie czy warto. Ja ze swojej strony polecam Hobbita, mały, prosty i przyjemny.

Dzięki za odpowiedź. Czyli rozumiem że Padrino nie, bo po Sinatrze pewnie lepiej przerzucić się od razu na RoR? Czy ten Hobbit jest jeszcze prostszy od Sinatry?

Nie mówie że nie warto poznać Padrino, ale ma to tyle dodatków że warto sobie zadać pytanie, czy na pewno wszytkiego potrzebujesz, a wybierając sinatrę, wybiera ją się ze względu na szybkość i ze względu na to, że nie ma ona tylu dodatków co RoR.

Co do hobbita, to on jest bardziej lekką nadbudówką nad Racka, w hobbicie idea jest taka, że dostarcza on tobie podstawowe rzeczy a jak chcesz coś więcej to musisz załadować dodatkowy gem. Pod względem biznesowym to kwestia dyskusyjna czy go stosować bo szybkość dodawania nowych featerów nie jest taka szybka jak w RoR. Jednak pod względem dydaktycznym to go polecam, bo można się wiele dowiedzieć. Mi hobbit się bardzo spodobał. Przejrzyj repozytorium hobbita, jest to świeży projekt więc nie ma on tak rozbudowanej społeczności, dokumentacji, przykładów jak sinatra ale jak bardzo prosty. https://github.com/patriciomacadden/hobbit, jeśli się tobie spodoba to daj znać.

Dzięki. Bardzo mi pomogłeś :).

Mnie Padrino nie przekonuje (bo jest owszem, próbą zrobienia Railsów na bazie Sinatry, co oznacza pospinanie tych samych bibliotek ale z wyrzuceniem do kosza przydatnych konwencji). Za to warto rzucić okiem na Lotusa, to jest świeże podejście do frameworka webowego w Ruby.

Mnie osobiście lotus nie przekonał, co rozumiesz przez “świeże podejście” ?

W telegraficznym skrócie, więcej OOP a mniej metaprogramowania. To samo co kiedyś próbowali osiągnąć autorzy frameworka Nitro (i Og, jego orm-a), ale projekt zdechł z racji kiepskiego zainteresowania (co, obstawiam, było spowodowane nieistniejącą dokumentacją). Nie twierdzę że Lotus będzie lepszy niż Railsy – ale że warto zapoznać się z koncepcjami jakie przyświecają twórcom.