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]
...

blog comments powered by Disqus