23 marca 2017

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.

Brak komentarzy:

Prześlij komentarz

Podstawy Programowania Funkcyjnego Epizod 3

Czy wszystkie Zasady Się Zmieniają? Kiedy tylko zaczynamy używać nowego paradygmatu , porównujemy z nim na...