Programowanie w języku Ruby

II rok studiów stacjonarnych inżynierskich, kierunek Informatyka, wydział IET

Materiały pomocnicze

Różne

Ruby

Ruby on Rails

Wybrane slajdy z wykładu

Slajdy
Data modyfikacji slajdów: 17-04-2020, 16:14

Zasady zaliczenia ćwiczeń

  1. Ćwiczenia są prowadzone w oparciu o wybrane elementy metody "Odwrócone nauczanie"
  2. Przed każdymi zajęciami, kilka dni wcześniej, w systemie informatycznym będzie się pojawiał zestaw zadań składający się z 4 lub 5 zadań prostych
  3. Zadania :
    1. Są przeznaczone do samodzielnego wykonania przed (zadania domowe) lub na ćwiczeniach (zadanie ćwiczeniowe)
    2. W przypadku zadań domowych, ich szczegóły są znane z góry; w przypadku zadania ćwiczeniowego, są tylko informacje ogólne — jego szczegóły będą podawane na początku zajęć
    3. Zadanie ćwiczeniowe można dokończyć po zajęciach, ale w takim przypadku jest ono traktowane jako domowe i w związku z tym jest niżej punktowane — patrz tabela z punktacją
  4. Punktacja zadań:
    Typ zadania Oznaczenie / Ikona Maksymalna liczba punktów Uwagi
    Domowe 1 Do wykonania przed zajęciami
    Ćwiczeniowe 1
    0,75
    2
    1,5
    Wersja łatwiejsza, wykonana na zajęciach
    Wersja łatwiejsza, dokończona po zajęciach
    Wersja trudniejsza, wykonana na zajęciach
    Wersja trudniejsza, dokończona po zajęciach
  5. Wysokość oceny końcowej będzie obliczana na podstawie sumarycznej ilości zdobytych punktów, w oparciu o progi określone w regulaminie studiów (§13, ust. 1)
  6. Na każdych zajęciach:
    • na samym ich początku sprawdzana jest poprawność oraz samodzielność wykonania zadań domowych, tj. tych, których treść jest znana z góry
    • ostatnie 10-15 minut to czas na podsumowanie tematu ćwiczenia — rozpoczęcie podsumowania kończy okres przyjmowania rozwiązania zadania
  7. W przypadku stwierdzenia, że przedstawiany do oceny kod (dowolnego zadania) jest kopią kodu innej osoby, jego autorzy otrzymują 0 pkt za całość zadania

Oddawanie zadań

  1. Dla potrzeb weryfikacji wyników efektów kształcenia, rozwiązanie każdego zadania należy wgrywać do UPEL-a
  2. Następnie trzeba to rozwiązanie przedstawić prowadzącemu

Tematyka ćwiczeń laboratoryjnych

L. p. Tematyka Jak się przygotować do ćwiczenia
1
  • Składnia języka Ruby
  • Typizacja
Na komputerach znajdujących się w laboratorium 4.29, 4.30 oraz na puli PCoIP "Podstawowy system - ICSR (Win10)" jest zainstalowany edytor Visual Studio Code. Przeczytaj jakie funkcjonalności związane z tworzeniem kodów źródłowych programów oferuje ten edytor.

Po zalogowaniu się do systemu Linux (laboratorium 4.29) dokonaj konfiguracji edytora oraz zainstaluj potrzebne gemy, jak to opisano poniżej.

  1. Dopisz do pliku ~/.bashrc następujący fragment:
                    
    if which ruby > /dev/null && which gem > /dev/null
    then
      export PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:~/bin:$PATH"
    fi
    
    
  2. Wykonaj komendę exec $SHELL
  3. Przy użyciu komendy gem env wyświetl informacje o środowisku RubyGems - zastanów się:
    • w których katalogach 'Ruby' będzie szukał gemów
    • w których katalogach 'Ruby' będzie szukał plików wykonywalnych
  4. Wykonaj potok gem help install | less - dowiedz się do czego służy opcja --user-install
  5. Utwórz plik ~/.gemrc o podanej zawartości:
                    
    install: --user-install
    update: --user-install
    
    
    Powyższe dwie linie, to informacja dla menedżera gem-ów, że powinien je instalować w katalogu użytkownika, a nie w systemowym.

    Za pomocą komendy GEM_HOME=$(ruby -r rubygems -e 'puts Gem.user_dir') gem update można dokonać aktualizacji wszystkich zainstalowanych gem-ów, a za pomocą GEM_HOME=$(ruby -r rubygems -e 'puts Gem.user_dir') gem cleanup, usunięcia starych wersji

  6. Wykonaj komendę gem server - jak myślisz: jakie informacje są udostępniane na stronie http://localhost:8808/
  7. Zainstaluj rozszerzenie rebornix.Ruby oraz gemy potrzebne do prawidłowego działania debuggera:
                    
    code --install-extension rebornix.Ruby
    gem install ruby-debug-ide debase
    
    
  8. Uruchom edytor za pomocą komendy code
  9. Przy użyciu opcji "Open folder..." (Ctrl+K Ctrl+O) wybierz katalog w którym będą przechowywane Twoje skrypty
  10. W obrębie panelu "EXPLORER" najedź kursorem myszy na nazwę powyższego katalogu i kliknij ikonę "New File" - utwórz pusty plik/skrypt o nazwie main.rb
  11. Umieść w nim następujący kod Ruby:
                    
    print "\e[31mWitaj Świecie\e[0m\n"
    
              
  12. Za pomocą sekwencji klawiszy Ctrl+` otwórz panel terminala, a następnie wpisz w nim polecenie ruby main.rb, co spowoduje uruchomienie Twojego skryptu; tu: wypisanie, na czerwono, napisu "Witaj Świecie"
  13. Jeżeli chcesz aby określona sekwencja klawiszy (np. Ctrl+Alt+R) uruchamiała polecenie ruby <nazwa_bieżącego_skryptu>, to:
    • Naciśnij Ctrl+K Ctrl+S, a następnie otwórz plik keybindings.json i umieść, pomiędzy parą nawiasów kwadratowych, pokazaną poniżej, w liniach 3-6, treść:
                          
      [ 
        { 
          "key": "ctrl+alt+r", 
          "command": "workbench.action.tasks.runTask", 
          "args": "ruby",
          "when": "editorLangId == 'ruby'" 
        },
        { 
          "key": "ctrl+alt+l", 
          "command": "workbench.action.tasks.runTask", 
          "args": "rubocop",
          "when": "editorLangId == 'ruby'" 
        }
      ]
      
      
      W pokazanym kodzie, dodatkowo, w liniach 9-12, określano funkcjonalność sekwencji klawiszy Ctrl+Alt+L - naciśnięcie tej sekwencji powoduje uruchomienie, opisanego poniżej, programu rubocop
    • Utwórz plik tasks.json z definicją treści zadań:
      1. Naciśnij Ctrl+Shift+B
      2. Wybierz "No build task to run found. Configure Build Task..."
      3. Wybierz "Create tasks.json file from template"
      4. Wybierz "Others"
    • Zastąp jego zawartość następującą:
                          
      {
            "version": "2.0.0",
                "tasks": [
                   {
                     "label": "ruby",
                     "command": "ruby",
                     "args": [ "${file}" ],
                     "group": {
                       "kind": "build",
                       "isDefault": true
                     }
                   },
                   {
                     "label": "rubocop",
                     "command": "rubocop",
                     "args": [ "--auto-correct", "${file}" ]
                   }
                ]
      }
      
      
  14. Zainstaluj gema rubocop gem install rubocop
  15. Dopisz, na końcu skryptu main.rb, następujący kod:
                    
    =begin
    Przykładowy kod ze strony http://rubocop.readthedocs.io/en/latest/basic_usage/
    =end
    def badName
    if something
          test
          end
          end
          
          
  16. Za pomocą programu rubocop sprawdź zgodność tego skryptu z zasadami pisania poprawnego kodu w Ruby - wpisz w terminalu: rubocop main.rb
  17. Wyjdź z edytora
  18. Utwórz w katalogu domowym plik o nazwie .rubocop.yml i następującej zawartości:
                    
    Rails:
      Enabled: true
      
    
  19. Wykonaj komendę rubocop --auto-correct main.rb - rubocop dokona autokorekty skryptu źródłowego, tzn. doprowadzi go, na tyle ile to możliwe, do stanu zgodności z ww. zasadami
  20. Ponownie sprawdź zgodność skryptu z powyższymi zasadami
  21. Uruchom edytor i ręcznie popraw skrypt - doprowadź go do stanu "brak wykroczeń", tzn. po wydaniu polecenia rubocop main.rb ma się wypisać tekst: "... no offenses detected"
  22. Naciśnij Ctrl+,, wybierz "USER SETTINGS" i dopisz:
                    
    "ruby.lint": 
    {
      "ruby": {
        "unicode": true //Uruchamia ruby -wc -Ku
      },
      "rubocop": true,
    },
    "ruby.format": "rubocop"         
    
    
    a następnie naciśnij Ctrl+S
  23. Napisz fragment kodu Ruby, który jest niezgodny z zasadami pisania poprawnego kodu i sprawdź czy edytor podkreśla ten fragment
  24. Najedź kursorem myszy na podkreślony fragment i zobacz co się wyświetla w "dymku"
  25. Uruchom autokorektę za pomocą klawiszy Ctrl+Alt+L - spowoduje to wykonanie polecenia rubocop --auto-correct <nazwa_bieżącego_pliku>
  26. Jeżeli chcesz dodatkowej kontroli poprawności kodu, to:
    1. Zainstaluj gemy: ruby-lint, debride, fasterer oraz reek: gem install debride ruby-lint fasterer reek
    2. Naciśnij Ctrl+,, wybierz "USER SETTINGS" i zastąp dopisaną przed chwilą zawartość, następującą:
                          
      "ruby.lint": 
      {
        "debride": {
          "rails": true 
        }
        "ruby": {
          "unicode": true 
        },
        "rubocop": true,
        "reek": true,
        "fasterer": true,
        "ruby-lint": true
      }
      
      
      a następnie naciśnij Ctrl+S
  27. Zainstaluj rozszerzenie Ruby Solargraph oraz najnowszą wersję dokumentacji:
                    
    code --install-extension castwide.solargraph
    gem install solargraph
    solargraph download-core
    
    
  28. Sprawdź czy działa autouzupełnianie - dopisz na końcu skryptu tekst puts 1.e. Jeżeli nie pojawiło się menu z propozycjami nazw metod, to naciśnij Ctrl+Spacja
  29. Sprawdź czy działa możliwość przeszukiwania dokumentacji - naciśnij Ctrl+Shift+R i wpisz: Array#join
  30. Zainstaluj gema pry: gem install pry
  31. Zaznajom się (film 1, film 2) z możliwościami programu pry
  32. Przeczytaj jak korzystać z debuggera oraz opis testów minitest, TDC oraz przyglądnij się przykładom testów
2
  • Przetwarzanie tekstu
  • Tworzenie jednolinijkowców
  • Wyrażenia regularne
Zaznajom się z:
3
  • Programowanie funkcyjne
  • Obiektowość
  • Programowanie sterowane testami - TDD
  • Programy 'gem' oraz 'rake'
Zaznajom się z:
4 Tworzenie prostych aplikacji internetowych
  • Interfejs Rack
  • Podstawy języka dziedzinowego (DSL) "Sinatra"
Zaznajom się z:
5 Framework "Ruby on Rails" - Kontroler oraz testy funkcjonalne Zaznajom się z:
6 Framework "Ruby on Rails" - Model oraz testy jednostkowe Zaznajom się z:
7 Framework "Ruby on Rails" - Widok oraz testy integracyjne Zaznajom się z:

[Ranking popularności języków]

[porównanie języków]
Rysunek ze strony https://www.udemy.com/blog/modern-language-wars/