Przejdź do głównej zawartości

Zagraj to jeszcze raz, Sam

OK, czyli ostatnio skończyliśmy na tym, że trzeba ustawić wartość środowiskową przed startem skryptu. Chciałem do tego zaprząc narzędzie o nazwie rake - czyli menadżer budowania dla ruby.


Idea, która stoi za rake jest ciekawa. Postanowiono w skryptach do budowania ruby pisać w ..... ruby. Proste i genialne jednocześnie. Poza tym fajna gra słów w nazwie. Nazwa pochodzi od wcześniejszego narzędzia make dla C++ - tylko zamieniono literkę "M" na literkę "R" jak Ruby. Poza tym rake w tłumaczeniu to grabie.



Pasuje idealnie, jeżeli przyjąć ostatni trend porównywania tworzenia oprogramowania do projektowania i utrzymywania ogrodu zamiast do budowania domów.

W toku okazało się, że nie muszę ustawiać żadnej zmiennej środowiskowej.

 To zadziała:

coola@sv26 [/home/coola/dsp2017/xp-simulator]# ruby ./test/smoke_test.rb 

Jeżeli tylko ustawie prawidłowo ścieżki require:

require "./src/Client.rb"                                                                                                                                                                                                                    
require "./src/ItPeople.rb"                                                                                                                                                                                                                  
require "./src/Media.rb"     

Te kropki na początku ścieżki są tu kluczowe.

Warto wiedzieć, że null w Ruby nazywa się nil:

def test_if_there_are_actors_of_that_tragedy                                                                                                                                                                                               
                                                                                                                                                                                                                                             
    client = Client.new                                                                                                                                                                                                                      
    it_people = ItPeople.new                                                                                                                                                                                                                 
    media = Media.new                                                                                                                                                                                                                        
                                                                                                                                                                                                                                             
    assert_not_nil(client);                                                                                                                                                                                                                  
    assert_not_nil(it_people);                                                                                                                                                                                                               
    assert_not_nil(media);                                                                                                                                                                                                                   
                                                                                                                                                                                                                                             
  end   

A więc ostateczny skrypt rake o nazwie Rakefile będzie po prostu:

task default: %w[test]                                                                                                                                                                                                                       
                                                                                                                                                                                                                                             
task :test do                                                                                                                                                                                                                                
  ruby "./test/smoke_test.rb"                                                                                                                                                                                                                
end 

Odpalanie projektu poleceniem rake daje takie wyniki:

coola@sv26 [/home/coola/dsp2017/xp-simulator]# rake                                                                                                                                                                                          
/usr/share/ruby-2.3.1/bin/ruby ./test/smoke_test.rb                                                                                                                                                                                          
Loaded suite ./test/smoke_test                                                                                                                                                                                                               
Started                                                                                                                                                                                                                                      
..                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                             
Finished in 0.000537369 seconds.                                                                                                                                                                                                             
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2 tests, 4 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications                                                                                                                                                        
100% passed                                                                                                                                                                                                                                  
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3721.84 tests/s, 7443.67 assertions/s  

Napisaliśmy to jeszcze raz, Sam. Tym razem działa :)

Cały czas  mam z tyłu głowy potrzebę wersjonowania projektu i wysyłania go na serwer.
Dodaję pliki:

coola@sv26 [/home/coola/dsp2017/xp-simulator]# git add .                                                                                                                                                                                     
coola@sv26 [/home/coola/dsp2017/xp-simulator]# git status                                                                                                                                                                                    
On branch master                                                                                                                                                                                                                             
Your branch is up-to-date with 'origin/master'.                                                                                                                                                                                              
Changes to be committed:                                                                                                                                                                                                                     
  (use "git reset HEAD <file>..." to unstage)                                                                                                                                                                                                
                                                                                                                                                                                                                                             
        new file:   Rakefile                                                                                                                                                                                                                 
        deleted:    smoke_test.rb                                                                                                                                                                                                            
        new file:   src/Client.rb                                                                                                                                                                                                            
        new file:   src/ItPeople.rb                                                                                                                                                                                                          
        new file:   src/Media.rb                                                                                                                                                                                                             
        new file:   test/smoke_test.rb     

Kommituję lokalnie:

coola@sv26 [/home/coola/dsp2017/xp-simulator]# git commit -m "Frist actors of the system and rake building tool addition"                                                                                                                    
[master dcfeb38] Frist actors of the system and rake building tool addition                                                                                                                                                                  
6 files changed, 36 insertions(+), 11 deletions(-)                                                                                                                                                                                          
create mode 100644 Rakefile                                                                                                                                                                                                                 
delete mode 100644 smoke_test.rb                                                                                                                                                                                                            
create mode 100644 src/Client.rb                                                                                                                                                                                                            
create mode 100644 src/ItPeople.rb                                                                                                                                                                                                          
create mode 100644 src/Media.rb                                                                                                                                                                                                             
create mode 100644 test/smoke_test.rb 

Ups, literówka w kommicie w wyrazie "Frist... Miałem na myśli "First....
Jak to naprawić?
Wujek Stack mówi, że tak:

coola@sv26 [/home/coola/dsp2017/xp-simulator]# git commit --amend -m "First actors of the system and rake building tool addition"      

Historia projektu:

coola@sv26 [/home/coola/dsp2017/xp-simulator]# git log 

Rzeczywiście potwierdza zmiany:

commit 1f6a0632411d98ca1340a4ce6d48dffd68b79f88
Author: coola <coola@o2.pl>                                                                                                                                                                                                                  
Date:   Thu Mar 23 16:37:59 2017 +0100                                                                                                                                                                                                       
                                                                                                                                                                                                                                             
    First actors of the system and rake building tool addition                                                                                                                                                                               
                                                                                                                                                                                                                                             
commit 984f97a26cbf9ec32eed6b6304f0ac1ede1770ef                                                                                                                                                                                              
Author: coola <coola@o2.pl>                                                                                                                                                                                                                  
Date:   Fri Mar 10 11:03:08 2017 +0100                                                                                                                                                                                                       
                                                                                                                                                                                                                                             
    First class. Test class                                                                                                                                                                                                                  
                                                                                                                                                                                                                                             
commit aef10c1c8f493e5a3ef0cfe654a12c89c3a0c616                                                                                                                                                                                              
Author: coola <coola@o2.pl>                                                                                                                                                                                                                  
Date:   Tue Mar 7 13:36:07 2017 +0100                                                                                                                                                                                                        
                                                                                                                                                                                                                                             
    Pierwszy commit z plikiem README       

Teraz, jak już mam stabilne środowisko, mogę się pokusić o próbę implementacji komunikacji między aktorami tej tragedii, ale to już w następnym odcinku :)

Ups, zapomniałem wysłać kommitów na serwer:

coola@sv26 [/home/coola/dsp2017/xp-simulator]# git push origin                                                                                                                                                                               
Username for 'https://github.com': coola                                                                                                                                                                                                     
Password for 'https://coola@github.com':                                                                                                                                                                                                     
Counting objects: 9, done.                                                                                                                                                                                                                   
Delta compression using up to 8 threads.                                                                                                                                                                                                     
Compressing objects: 100% (5/5), done.                                                                                                                                                                                                       
Writing objects: 100% (9/9), 904 bytes | 0 bytes/s, done.                                                                                                                                                                                    
Total 9 (delta 0), reused 0 (delta 0)                                                                                                                                                                                                        
To https://github.com/coola/xp-simulator.git                                                                                                                                                                                                 
   984f97a..1f6a063  master -> master        

Uff, zawsze czuję ulgę, gdy zapisuję coś gdzieś indziej niż w jednym miejscu.

Komentarze

Popularne posty z tego bloga

Kursy IT na Pluralsight. Dlaczego warto?

Bardzo sobie cenię kursy na Pluralsight. Mam wrażenie, że każdy kurs, który przeszedłem na tej platformie, w dużym stopniu podniósł moje zdolności. Wiem, dostęp do tej platformy nie jest tani, ale w mojej ocenie warty swojej ceny. To nie jest reklama, ale forma entuzjazmu jaki mam do tej formy samodoskonalenia. O to kilka punktów pokazujących ofertę tego serwisu i dlaczego warto skorzystać: Pluralsight to kursy z Javascript, C#, Java, Angular, Python, MySQL i wielu innych technologii i umiejętności. Kursy na Pluralsight w większości mają wyższą jakość niż te, które możemy znaleźć na przykład na YouTube. Są wyselekcjonowane, mają wysoką jakość dźwięku i obrazu. Często wgryzają się głęboko w dany problem daleko poza standardowe „Hello World” danej technologii. Twórcy Pluralsight to często osoby znane ze świata IT i konferencji branżowych, jak: Scott Hanselman, Microsoft John Somnez, SimpleProgrammer.com John Skeet, Google Pluralsight udostępnia funkcjonalność ścieżek – paths....

Bicie piany

Czy słyszałeś o tym gościu, który powiedział, że Object Oriented to przeżytek? No nie. Następny. Co powiedział? Opisał wszystkie obietnice OO, i jak żadna z nich tak naprawdę nigdy nie została spełniona i o tych wszystkich możliwościach OO, które kosztują więcej, niż są warte i że funkcjonalne programowanie jest lepsze i ... Phi. Tak słyszałem już to wcześniej. No, więc OO jest martwe, leży i kwiczy i możemy przejść dalej. Przejść dalej do czego? Co? No do NASTĘPNEJ WIELKIEJ RZECZY oczywiście. Aaaa, do tego. Czy wiesz już co to jest? Nie bałdzo, ale jestem podekscytowany na myśl o mikroserwisach; jaram się Elixirem; i słyszałem, że React jest fantastyczny; i ... Tak, tak. Bicie piany. Dałeś się nabrać na bicie piany. Co? Co masz na myśli. Przecież mamy takie wspaniałe czasy. Tak naprawdę postrzegam te czasy jako depresyjne. Ale dlaczego? Przecież co kilka dni wyskakują nowe wspaniałe technologie! Wspinamy się na coraz wyższe szczyty. Phi. To, co tak napraw...

Podstawy Programowania Funkcyjnego Epizod 1

O czym jest programowanie funkcyjne? Zakładam, że słyszałeś już kiedyś o programowaniu funkcyjnym. No cóż, któż nie słyszał? Wszyscy o tym gadają. Wychodzi dużo nowych języków funkcyjnych takich, jak Scala, F# i Clojure. Ludzie rozmawiają też o starszych językach jak Erlang, Haskell, ML i innych. A więc, o co w tym wszystkim chodzi? Dlaczego programowanie funkcyjne jest Następną Wielką Rzeczą™? I co jest w tym takiego pociągającego? Poniższy tekst jest luźnym tłumaczeniem wpisu bloga Roberta Cecila "Wujka Boba" Martina z dnia 22 grudnia 2012 ze strony: https://blog.cleancoder.com/uncle-bob/2012/12/22/FPBE1-Whats-it-all-about.html Proszę o komentarze, jeżeli ta luźność jest zbyt daleko posunięta. Po pierwsze, prawie na pewno programowanie funkcyjne jest następną wielką rzeczą. Są ku temu dobre, solidne powody i poznamy je w tym artykule. Ale najpierw, aby zrozumieć te powody, musimy poznać, czym programowanie funkcyjne jest....