2010-10-07 20 views
31

W świecie Pythona istnieje wiele alternatywnych interpreterów języka Python, które dodają fajne dodatkowe funkcje. Szczególnie użytecznym przykładem jest bpython, który dodaje dynamiczne podświetlanie składni, automatycznie pobiera dokumentację i wyświetla informacje o autouzupełnianiu na żywo. W świecie Ruby muszę jeszcze odkryć wszelkie projekty, które dodają do podstawowego interpretera IRB nawet podzbiór tych funkcji. Czy po prostu nie wyglądam wystarczająco mocno, czy jest to po prostu coś, czego brakuje społeczności Rubinów?Jakie są alternatywy dla IRB?

Odpowiedz

28

Co za zbieg okoliczności. Rubyflow właśnie wczoraj ogłosił klejnot, który jest meta-klejnotem zawierającym wiele klejnotów ulepszeń fajnej irb.Zawiera on:

  • Colorized i wyjście jako komentarzem wirb i fancy_irb
  • Nicea IRB wierszu i IRB auto wcięcia
  • Zawiera fileutils stdlib za: ls, cd, pwd, ln_s, rm, mkdir, touch, cat
  • Wiele pomocników do debugowania: ap, q, o,, y, Object#m, Object#d
    • ap - awesome_print
    • q - jak p, lecz w jednej linii
    • Object#m - uporządkowany sposób (ma parametr całkowitą: poziom zagnieżdżenia)
    • Object#d - zawiesza obiekt, zwraca siebie (przy użyciu tap)
  • „Magiczne” Stałe informacje: Info, OS, RubyVersion, RubyEngine
    • OS.windows?
    • RubyEngine.jruby?
    • RubyVersion.is.at_least? 1.9
  • cechy Schowek: copy i paste
    • również: copy_input i copy_output do historii sesji
  • połączeń vim (lub inny obsługiwany edytor), aby edytować plik, zamknij go i jest ładowany w bieżącej sesji IRB, zasilany przez interactive_editor
  • Innym sposobem na żywo załadunku do IRB: szkice
  • Highlight ciąg z olorize('string') lub plik z ray('path'), zasilany przez coderay
  • Wyświetla wpisy bazy danych ActiveRecord jak tabele z hirb
  • Restart irb z reset! lub zmiany wersja Ruby metodą use i rvm!
  • Zawiera aktualny katalog w ścieżce obciążenia (w 1.9.2 usunięto ze względów bezpieczeństwa, ale jest dość irytujące w IRB)
  • Krótszy wymagające tak: rq:mathn
  • I ponownie zapytaj: rrq
  • Wypróbuj pomocnika Object#ri, zasilanego przez ori!
  • dostęp do dużo większej liczby poleceń z boson - wywołanie polecenia, aby zacząć

Są tam ładne screeny na stronie irbtools. Jedną z fajnych rzeczy jest to, że każde z narzędzi może stanąć na własną rękę, na wypadek gdybyś chciał wybrać jedną lub dwie funkcje.

2013 Aktualizacja

Odkąd napisałem to, Pry stał się popularnym IRB wymiana. To nie robi tak wiele, jak irbtools po wyjęciu z pudełka, ale można go rozszerzyć dzięki klejnotom pluginów, które dodają fajne funkcje. Można przeglądać kod źródłowy jak to było katalogiem UNIX:

pry(main)> cd FileUtils 
pry(FileUtils):1> show-method rm 

From: /opt/ruby/lib/ruby/1.9.1/fileutils.rb @ line 556: 
Number of lines: 10 
Owner: FileUtils 

def rm(list, options = {}) 
    fu_check_options options, OPT_TABLE['rm'] 
    list = fu_list(list) 
    fu_output_message "rm#{options[:force] ? ' -f' : ''} #{list.join ' '}" if options[:verbose] 
    return if options[:noop] 

    list.each do |path| 
    remove_file path, options[:force] 
    end 
end 
pry(FileUtils):2> 

Możesz również przeglądać dokumentację Ruby poleceń powłoki problem, a jeśli jesteś użytkownikiem szyny, można użyć pry-rails gem aby podpatrzyć w swojej Konsola Rails. Jest też sposób na podłączenie go do Sinatry i użycie go z Heroku.

Istnieje obszerna dokumentacja - jest kilka screencastów, w tym Railscast. Na pewno warto się nim zająć.

+3

To wydaje się obecnie nieaktualne.Wymieniony poniżej Pry zyskał wystarczającą dynamikę, która wydaje się być preferowaną alternatywą dla irb. –

+3

Dzięki za wskaźnik do Pry. Wygląda świetnie! Ma inny cel niż irbtools - robi więcej introspekcji kodu. Już nie będę zazdrosny o REPL Pythona. :) Nie sądzę jednak, że irbtools jest nieaktualny, ponieważ został zaktualizowany dla Rails 3 i nadal działa dla mnie. –

+2

Bardziej aktualna strona główna projektu: https://github.com/janlelis/irbtools –

1

Nie ma wiele w zakresie alternatyw dla irb, ale istnieje kilka klejnotów, które dodają przydatne funkcje irb.

Przede wszystkim wirble, który, między innymi, daje kolorowe wydruki (nie wprowadzanie) i historię, która wykracza poza bieżącą sesję.

+0

wirble co daje autouzupełnianie IRB jest nieprawidłowe. Irb wysyła to. wirble wymaga tego po prostu: wymaga 'irb/completion' – cldwalker

+0

@user: Dzięki, naprawiłem to. – sepp2k

2
+0

Jest jeszcze wiele pracy do zrobienia. To powiedziawszy, włączając w to wersję 0.6, którą właśnie popchnąłem, DietRB ma następujące funkcje: czystszą implementację, ukończenie ścieżki kodu i pliku, kolorowanie z obsługą szablonu Wirble i automatyczne wcięcie. https://rubygems.org/gems/dietrb – alloy

+0

Aha, i zauważ, że jest skierowany tylko do MRI 1.9 i MacRuby, ponieważ używa Rippera. – alloy

3

Nigdy nie słyszałem o (popularne) alternatywę dla IRB, ale na pewno jest kilka przydatnych perełki, które czynią IRB doświadczenie dużo ładniejszy:

  • awesome_print ładne wydruki Ruby obiektów z wcięciem i kolorystyki, bardzo przydatne przy próbie spojrzenia na zagnieżdżone skróty lub inne skomplikowane struktury danych.
  • looksee jest również całkiem niezły, zapewnia metodę lp (ścieżka wyszukiwania), która pokazuje, gdzie obiekt Ruby pobiera swoje metody (klasa, nadklasa itp.).
  • Sketches łączy twój edytor i IRB, więc jest to szczególnie przydatne, jeśli jesteś typem, który lubi rozwój interaktywny. Emacs z inf-ruby jest również odpowiedni do tego.
  • Wirble to cały zestaw ulepszeń IRB, takich jak uzupełnianie kart i podświetlanie składni. Jest też Utility Belt, ale nie używam go osobiście, więc nie mogę komentować jego funkcji.

Edycja

zapomniałem Hirb, co jest bardzo przydatne dla np pokazuje wyniki kwerendy ActiveRecord w konsoli Rails.

2

JRuby dostarczane są z jirb_swing, która zapewnia uzupełnianie kodu.

33

Zastosowanie Pry: http://pry.github.com

pozwala ci:

  • rozpoczęcia sesji w czasie wykonywania
  • widok kodu źródłowego metoda
  • dokumentacja metoda widok (nie używając RI więc nie trzeba wstępnie generować it)
  • wyskakuje z różnych kontekstów
  • podświetlanie składni
  • integracyjne Istota
  • widok i historii powtórka
  • otwarte redaktorzy edytować metodę używając edit-method obj.my_method składni

tony więcej wspaniałych i oryginalnych elementów

0

rib to modułowy i lekki Ruby interaktywna powłoka.

To, jak pry wykorzystuje analizator Ruby więc jest spójne działanie Ruby zatem mniej błędów (np https://stackoverflow.com/a/39271791/474597)

to posiada konstrukcję modułową, dzięki czemu można łatwo rozszerzyć z więcej funkcji.

Jest również aktywnie utrzymywany od roku 2016.

Powiązane problemy