Rubin z szyn

114

Czasami wydaje mi się, że moja firma jest jedyną firmą na świecie używającą Rubiego, ale nie Ruby on Rails, do tego stopnia, że ​​Railsy stały się niemal synonimem Rubiego.

Jestem pewien, że to nieprawda, ale fajnie byłoby posłuchać kilku historii o używaniu Ruby nie-Railsowych.

JesperE
źródło

Odpowiedzi:

51

Jedną z ogromnych zalet Rubiego jest możliwość bardzo łatwego tworzenia DSL. Ruby umożliwia tworzenie „reguł biznesowych” w języku naturalnym, który jest zwykle wystarczająco łatwy w użyciu dla analityka biznesowego. W tym celu istnieje wiele aplikacji Ruby poza programowaniem stron internetowych.

Gorąco polecam wpisanie w Google „ruby dsl” w celu uzyskania doskonałej lektury, ale w szczególności chciałbym zostawić Ci jeden post. Russ Olsen napisał dwuczęściowy post na blogu na temat DSL . Widziałem, jak wygłaszał prezentację na temat DSL i była bardzo dobra. Gorąco polecam przeczytanie tych postów.

Znalazłem również tę doskonałą prezentację na Ruby DSLs Obie Fernandeza . Gorąco polecam lekturę!

Sixty4Bit
źródło
4
Cyfrowa linia abonencka w Rubim?
5
Język domeny
Sixty4Bit
18

W mojej pracy intensywnie używam Rubiego i żaden z nich nie jest oparty na Railsach (ani nawet w sieci).

Moja domena to zwykle aplikacje Windows po stronie klienta (wxRuby GUI) i skrypty, automatyzujące Excel, Internet Explorer, zapytania SQL Server i generowanie raportów (automatyzacja win32ole COM). Używam również bibliotek sqlite, pdf-writer i gruff do różnych zadań związanych z przetwarzaniem danych i generowaniem wykresów.

Sukces Railsów był wielki dla Rubiego, ale zgadzam się, że Railsom poświęcono tyle uwagi, że często pomija się wartość Rubiego poza siecią.

David Mullet
źródło
17

Jesteśmy głównie sklepem C ++, ale znaleźliśmy kilka obszarów, w których Ruby okazał się całkiem przydatny. Tu jest kilka:

  • Generowanie kodu - zbudowano kilka DSL do generowania kodu C ++ / Java / C # z pojedynczych plików wejściowych
  • Buduj wsparcie
    • skrypty do generowania plików Makefile dla systemu UNIX z Visual Studio Project Files
    • skrypty do budowania projektów i formatowania danych wyjściowych dla tempomatu
    • skrypty do uruchamiania naszych testów jednostkowych i formatowania danych wyjściowych dla tempomatu
    • skrypty do manipulowania projektami i rozwiązaniami programu Visual Studio z poziomu wiersza polecenia
  • Testy integracji - Możemy uruchomić testy znacznie szybciej i czysto, używając Rubiego niż C ++
  • Cały zestaw testów QA jest napisany w języku Ruby

Ruby jest w zasadzie moim narzędziem do szukania tam, gdzie ma to sens. I ma to sens w wielu miejscach.

Aaron Hinni
źródło
1
Powinieneś poważnie rozważyć użycie CMake do generowania plików kompilacji zarówno dla systemu Unix (Makefiles), jak i Windows (Visual Studio).
JesperE
13

Google Sketchup używa Ruby jako wbudowanego języka skryptowego. Możesz go używać do wykonywania wszelkiego rodzaju zadań związanych z modelowaniem 3D oraz importem / eksportem. Skrypty działają z darmową wersją i jest nawet przyzwoita dokumentacja .

hiperlogika
źródło
Hm, ciekawe. Naprawdę powinienem znaleźć trochę czasu na pobawienie się Sketchupem.
JesperE
9

Ruby z rozszerzeniem homebrew napisanym w C ++ wykonuje cały ciężki piksel do przetwarzania mojej fotografii. Używałem Pythona + numpy, ale kiedy robiłem artystyczne rzeczy , Ruby jest po prostu bardziej zabawny. Również względny brak lub mniejsza dojrzałość dobrych bibliotek przetwarzania obrazu sprawia, że ​​nie czuję się tak, jakbym wymyślał koła na nowo. Nie mam pojęcia o Railsach, poza tym, że o nim słyszałem, mam niejasne pojęcie, co to jest, i mam na ten temat książkę (nieotwarta)

DarenW
źródło
8

Używamy Watir (biblioteki Ruby) do testowania naszej aplikacji internetowej .net.

Željko Filipin
źródło
Watir jest niezwykle przydatny. Czasami używamy Selenium przez Rubiego.
Swanand
7

Sprawdź Shoes , proste API do tworzenia GUI w Rubim, przeznaczone dla początkujących programistów.

Parappa
źródło
6

Lub możesz użyć Rubiego do tworzenia muzyki, na przykład Archeopteryx Gilesa Bowketta. Ta prezentacja Gilesa na temat Archaeopteryx jest jedną z najlepszych prezentacji w historii. Gorąco polecam.

Sixty4Bit
źródło
1
Niesamowicie fascynujący materiał, muzyka generatywna.
iono
6

RubyCocoa i MacRuby. Możliwość tworzenia pełnych aplikacji GUI opartych na kakao bez Railsów. A potem możesz też użyć Interface Builder.

Matthew Schinckel
źródło
6

W zeszłym roku pracowałem nad projektem muzealnym, który używał dużo języka Ruby. ( http: // http: //ourspace.tepapa.com/home )

Część, nad którą spędzałem większość czasu, to interaktywna mapa piętra. Mapa na podłodze ma czujniki, więc kiedy ludzie po niej chodzą, włączane są światła i wyświetlane na ścianie obrazy lub filmy i ścieżki audio są odtwarzane.

Cały kod kontrolny tej części eksponatu to rubin. Napisałem interfejsy C z rubinowymi opakowaniami, aby komunikować się z czujnikami podłogowymi i kontrolerami oświetlenia. System wysyła zapytanie do bazy danych MYSQL o pliki multimedialne, które mają być wyświetlone, a następnie nakazuje komputerom w ścianach odtwarzanie multimediów za pośrednictwem protokołu UDP.

To najbardziej niezawodna część całej ekspozycji.

Rubin był używany w drugiej większej części wystawy, chociaż nie miałem z tym wiele wspólnego. Większość grafiki była prototypowana w języku Ruby przy użyciu interfejsów OpenGL, fragmentu Cocoa i biblioteki fizyki, zanim została przeniesiona do czystego Obj-C.

Henz
źródło
6

Puppet and Chef: DevOps

Nie widziałem wzmianki o Puppet lub Chef w 30 odpowiedziach poprzedzających moje przybycie. Wydaje się, że Ruby zdominował obecne prace w zakresie automatyzacji chmury i jest językiem podstawowym, rozszerzającym i tworzącym szablony tych dwóch dużych graczy. Służą one głównie do dystrybucji informacji o konfiguracji systemu i aplikacji dla macierzy serwerowych oraz do ogólnego zarządzania stacjami roboczymi IT.

Pole DevOps jest dość świadome Rubiego. Dziś Perl ma konkurenta. Chociaż naprawdę prosty skrypt może nadal być napisany bezpośrednio dla sh(1),złożonego zadania, teraz można go wykonać w Rubim, a nie w Perlu.

DigitalRoss
źródło
5

Jedyna strona, którą zrobiłem z Rubim w pracy, używa Railsów, ale chciałbym wypróbować Merb .

Poza tym robię wiele małych programów narzędziowych w Rubim - na przykład aplikację, która czyta kanały RSS i importuje nowe posty do bazy danych.

To zabawne, więc piszę też głupie rzeczy, tylko dlatego, że są takie szybkie. Wczoraj napisałem aplikację, aby rozegrać problem Monty Hall 100 000 razy, aby pomóc przyjaciółce przekonać jej profesora, że ​​zmiana jest właściwą strategią.

Palmsey
źródło
1
hej, profesor powinien być w stanie zrozumieć czystą logikę tej gry, nie ma potrzeby przeprowadzania tam symulacji.
vava
Byłbym zainteresowany, aby zobaczyć twój algorytm.
maček
Jeśli dobrze rozumiem, Merb został prawie wchłonięty - lub przynajmniej zapłodniony krzyżowo, czy jakkolwiek chcesz to nazwać - przez Rails 3.
Andy
4

Niemal obrażam się, że rubin to rzecz z szynami. To tak, jak wtedy, gdy CGI było najnowszym trendem i wszyscy myśleli, że jeśli znasz perla, musisz to robić tylko dlatego, że programujesz aplikacje CGI. Ruby jest dla mnie tylko językiem skryptowym, chociaż nie jest tak dojrzały jak Python, więc trochę żałuję, że musiałem przeskakiwać przez niektóre z jego obręczy i ostatnich zmian, nadal go lubię i używam. Chociaż pracuję w sklepie java i dlatego groovy jest idealnym wyborem dla języka skryptowego, nadal używam ruby ​​w domu i do wyrzucania skryptów, których nie trzeba udostępniać w pracy.

Rozważałem wejście do RoR z powodu całego szumu i tego, jak szybkie / proste jest to, ale po obejrzeniu torów nie widziałem niczego, co byłoby niesamowite, a nawet najmniej innowacyjne lub szybkie w jego rozwoju w porównaniu z jakimkolwiek innym struktura. Jedyną korzyścią, jaką zobaczyłem, było to, że mogłem kodować w języku Ruby, co byłoby fajne, ale początkowa konfiguracja, konserwacja serwera i skalowanie są trudniejsze, co rekompensuje przyjemność kodowania w języku Ruby.

Zombie
źródło
4

Stworzyłem prezentację - przypadkowo nazwaną Off The Rails - w celu omówienia aplikacji internetowych opartych na szafach:

https://github.com/alexch/Off-The-Rails

Repozytorium git zawiera slajdy w formacie Markdown i przykładowy kod (w postaci uruchomionych aplikacji i oprogramowania pośredniego). Oto streszczenie:

Ruby on Rails to najpopularniejszy framework aplikacji internetowych dla Rubiego. Ale to nie jedyny! Jeśli uważasz, że Railsy są zbyt duże, zbyt uparte, lub zbyt cokolwiek, z przyjemnością dowiesz się o nowej generacji tak zwanych microframeworks zbudowanych na Rack. A ponieważ Rails 3 jest sam w sobie aplikacją Rack, nie musisz rezygnować z Railsów, aby skorzystać z tras Sinatra lub Grape API.

A oto kilka odniesień:

Mam nadzieję, że okaże się to przydatne!

AlexChaffee
źródło
4

Jestem głównie programistą WWW i nauczyłem się Rubiego używać Railsów, ale podoba mi się ten język tak bardzo, że zacząłem tworzyć desktopową aplikację Swing w Rubim, używając JRuby i Monkeybars. Jestem kompetentny w Javie, ale nie lubię go używać, a Swing API jest okropny, więc umieszczenie Rubiego na szczycie było wielką wygraną.

Marnen Laibow-Koser
źródło
3

Używamy głównie railsów, ale mamy wiele innych nie-railsowych rzeczy ruby ​​- na przykład samodzielny demon uwierzytelniania do scentralizowanego uwierzytelniania użytkowników oraz „serwer przetwarzania obrazu”, który uruchamia dowolną liczbę procesów ruby ​​w celu równoległego przetwarzania obrazów.

Aha, i nie zapomnij o starym dobrym Rake'u :-)

Orion Edwards
źródło
3

Ruby jest również używany do aplikacji Desktop. W szczególności wykorzystanie JRuby do tworzenia aplikacji Swing na komputery stacjonarne.

user23117
źródło
3

Używałem Rubiego w pracy

  • Ekstraktor danych, generujący pliki csv z wyjścia binarnego.
  • Generator plików .ini, zmieniający prostą składnię w powtarzalny format .ini.
  • Prosty serwer TCP / IP, pełniący funkcję zastępczą dla systemu klienta podczas testów.
AShelly
źródło
3

Używamy Rubiego do wdrażania naszego oprogramowania do automatyzacji testów. Obejmuje to strukturę testową i kod sterownika dla Selenium RC, WATIR i AutoIT.

Ruby jest wystarczająco potężny, aby tworzyć wszechstronne aplikacje, które mogą współpracować z narzędziami testowymi, takimi jak Selenium lub WATIR, jednocześnie odczytując pliki danych, współpracując ze zdalnym interfejsem użytkownika systemu Windows i wykonując niemal przezroczystą komunikację sieciową. Wszystko podczas pracy w systemie Windows lub Linux.

Czytelna składnia sprawia, że ​​jest to idealne rozwiązanie dla nowych i niedoświadczonych programistów. Podczas gdy jego całkowicie obiektowa natura ułatwia tym samym programistom stosowanie dobrych (niedawno nauczonych) technik obiektowych od samego początku.

Elastyczny charakter składni Rubiego sprawia, że ​​używanie i tworzenie DSL jest znacznie łatwiejsze. Pozwala to osobom mniej technicznym na zaangażowanie się, czytanie i ewentualnie tworzenie własnych testów.

Piotr
źródło
Nie wszystkie klejnoty działają tak dobrze w systemie Windows. Z mojego doświadczenia wynika, że ​​Linux jest znacznie płynniejszym środowiskiem do uruchamiania Rubiego.
Zombies
3

Użyłem Rubiego do generowania kodu procedur składowanych w językach C # i T-SQL w projekcie o niestabilnych wymaganiach. Model danych został zakodowany w pliku YAML, a dla klas i procedur składowanych zastosowano szablony .erb. Pozwoliło to również na znacznie bardziej SUCHE rozwiązanie, niż byłoby to możliwe w przypadku prostego C #, ponieważ powtarzalny kod można było uwzględnić w jednej metodzie w generatorze kodu.

domgblackwell
źródło
3

Tam, gdzie pracuję, używamy Rubiego do wykonywania wielu różnych jednorazowych zadań wsadowych. Jednym z przykładów jest praca, która współdziała z usługą Amazon S3. W tamtym czasie biblioteka Ruby S3 była prawdopodobnie najłatwiejszą do uruchomienia w krótkim czasie.

mmacaulay
źródło
3

Napisałem system ekspercki do przetwarzania zamówień (patrz również odpowiedź DSL), przekonwertowałem 100 tysięcy linii perla specyficznego dla klienta na około 10 tysięcy linii rubinu obsługujących dziesiątki klientów. Żadnych komponentów sieciowych, żadnych Railsów.

mmaibaum
źródło
3

Heh, świetne pytanie.

Użyłem Ruby do konwersji danych arkusza kalkulacyjnego Excela na temat obiektów lotniskowych do sqlite3 dla platformy telefonu z Androidem podczas tworzenia aplikacji dla pilotów.

DigitalRoss
źródło
3

Używam Ruby z Sinatrą, która jest znacznie prostsza niż Rails. Użyłem Railsów, ale właśnie odkryłem, że zmieniło się to w trochę potwora, chociaż Railsy są nadal niesamowite w porównaniu do frameworków internetowych dostępnych dla Javy.

Główną cechą Rubiego, którą uwielbiam, są jednak „eval” i „method_missing”, których Rails używa na przykład w ActiveRecord, dzięki czemu możesz używać niesamowitych zapytań „find_by-field-name-”.

appshare.co
źródło
3

Używałem Rubiego do tworzenia wielu back-endowych kodów po prostu dlatego, że byłem jedyną osobą, której powierzono to zadanie i potrzebowałem ładnego, czystego języka, który pozwolił mi być bardzo produktywnym i pisać łatwy w utrzymaniu kod. Uważam, że Ruby pozwala mi to zrobić łatwiej niż Perl i Python. Przebieg innych osób może się na tym różnić, ale dla mnie to działa dobrze.

Poza tym podoba mi się, jak działają Sequel i Nokogiri. Przez jakiś czas używałem też ActiveRecord oddzielnie od Railsów.

Blaszany Człowiek
źródło
2

Używamy trochę Rubiego do manipulacji plikami, ale nie byliśmy jeszcze w stanie włączyć railsów.

FortunateDuke
źródło
2

Bardzo profesjonalnie używałem Rubiego do szybkich skryptów do rzeczy takich jak tasowanie plików. Jestem taki sam, że najpierw używałem Rubiego, zanim w ogóle dotknąłem Railsów.

madlep
źródło
2

W Boulder była świetna grupa użytkowników Rubiego, którzy spotykali się co miesiąc. Stwierdziliśmy, że Ruby istnieje poza tym, że jest używany w Railsach. Zwykli użytkownicy Rubiego istnieją, błagają o uwagę, mają fajne rzeczy do pokazania i mogą znaleźć się na spotkaniach grup użytkowników.

Mieli też lepszą pizzę niż grupa Pythona, która spotkała się tego samego dnia miesiąca. Mogę wybrać tylko jedną ...

DarenW
źródło
1
Tak, ale grupa Python miała lepsze Py! (kiepski żart, wiem, wiem ...)
dguaraglia
Tak zabawne, że aż zapomniałem się zaśmiać! 8P
DarenW,
2

Chociaż mamy kilka aplikacji Railsowych w pracy, używamy również Rubiego do dość intensywnych zadań niezwiązanych z internetem.

Mamy demona dostarczania wiadomości SMS, który pobiera wiadomości z kolejki, a następnie je dostarcza, oraz demona przetwarzania kart kredytowych, do którego mogą dzwonić inne aplikacje, co zapewnia centralną ścieżkę audytu.

Jon Wood
źródło