Mały maraton powtórek Ruby on Rails cz I
Bycie Poliglotą w programowaniu niesie ze sobą wielką odpowiedzialność, gdyż trzeba wiedzieć jakie dobre wzorce można przenosić z jednego do drugiego podwórka a jakich unikać, przy pełnym zrozumieniu różnic. Najwiekszym grzechem jest uśrednianie wiedzy poprzez sprowadzanie znajomości języków programowania do małych “subsetów” wspólnych konstrukcji i własności, co powoduje zubożenie naszych środków wyrazu ;)
Natchniony więc chwilą postanowiłem zrobić sobie pełen maraton powtórek związanych z Ruby on Rails (praca na różnych projektach i językach powoduje że wiedzę należy gruntować żeby nie została nadpisana). Co chwila wychodzi nowa wersja i zmiany w nich są dość znaczące, dlatego by ugruntować wiedzę pozwolę sobie na parę szybkich skrótów.
Skróty te mają na celu odświeżenie podstawowych wiadomości uzyskanych w trakcie nauki i developmentu z użyciem Ruby on Rails w wersjach od 1.2 do obecnej 2.2.
Na początek script/console …
uruchomienie konsoli w trybie produkcyjnym:
script/console production
uruchomienie konsoli w trybie sandbox (wszystkie zmiany na bazie po zakonczeniu zostaną cofnięte – rollback):
$ script/server production --sandbox
Loading production environment in sandbox (Rails 2.2.2)
Any modifications you make will be rolled back on exit
>>
sprawdzenie odmiany dla modelu:
Loading development environment (Rails 2.2.2)
>> "Person".pluralize
=> "People"
przedstawienie modelu w bardziej czytelny sposob (zrzut do yaml):
>> u = User.first
>> y u
--- &id002 !ruby/object:User
attributes:
name: Andrzej
updated_at: &id001 2009-01-28 21:22:30.240136 Z
password_salt: 12efab
id: "1"
password_hash: "123567"
created_at: *id001
email: info@fake.pl
attributes_cache: {}
changed_attributes: {}
errors: !ruby/object:ActiveRecord::Errors
base: *id002
errors: {}
new_record: false
=> nil
sprawdzenie dostepnych metod dla obiektu:
>> app.methods
=> ["to_enum", "instance_values", "taguri=", "require", "assert_response",
"daemonize", "assert_throws", "method_missing", "require_or_load",
"request_count", "methods", "method", "new_polymorphic_url",
"assert_routing",
...
wyszukanie konkretnych metod dla obiektu:
>> app.methods.grep(/assert/).sort
=> ["assert", "assert_block", "assert_difference", "assert_dom_equal",
"assert_dom_not_equal", "assert_equal", "assert_generates",
"assert_in_delta", "assert_instance_of", "assert_kind_of", "assert_match",
"assert_nil", "assert_no_difference", "assert_no_match", "assert_no_tag",
"assert_not_equal", "assert_not_nil", "assert_not_same",
"assert_nothing_raised", "assert_nothing_thrown", "assert_operator",
"assert_raise", "assert_raises", "assert_recognizes",
"assert_redirected_to", "assert_respond_to", "assert_response",
"assert_routing", "assert_same", "assert_select", "assert_select_email",
"assert_select_encoded", "assert_select_rjs", "assert_send", "assert_tag",
"assert_template", "assert_throws", "assert_valid"]
to samo co w/w tylko z formatowaniem do yaml:
>> y app.methods.grep(/assert/).sort
---
- assert
- assert_block
- assert_difference
- assert_dom_equal
- assert_dom_not_equal
- assert_equal
- assert_generates
- assert_in_delta
- assert_instance_of
- assert_kind_of
...
(Updated 03.02.2009): symulowanie żadania http:
>> app.get 'session/new'
...
symulacja requestu tworzenia użytkownika
>> app.post 'session/create', :account => {:email => 'your@email.com', :password => '123'}
...
sprawdzenie session:
>> app.session[:user]
...
sprawdzenie flash:
>> app.flash[:warning]
...

