Inspecionando seu código
Conhecendo o “ri”
No Ruby, o comando “ri” é usado para acessar a documentação incorporada (também conhecida como “RDoc”) de uma biblioteca, classe, método ou tópico específico. “ri” é uma abreviação de “Ruby Interactive” ou “Ruby Index”.
Ao executar o comando “ri” no terminal, seguido de um nome de classe, método ou tópico, você verá a documentação relacionada a esse elemento. Por exemplo, se você executar o comando “ri Array” no terminal, você verá algo como:
(from ruby core)
------------------------------------------------------------------------
An Array is an ordered, integer-indexed collection of objects, called
elements. Any object (even another array) may be an
array element, and an array can contain objects of different types.
== Array Indexes
Array indexing starts at 0, as in C or Java.
A positive index is an offset from the first element:
* Index 0 indicates the first element.
* Index 1 indicates the second element.
* ...
A negative index is an offset, backwards, from the end of the array:
* Index -1 indicates the last element.
:
Se você executar “ri Array#each”, você verá a documentação para o método each
da classe Array.
$ ri Array#each
= Array#each
(from ruby core)
------------------------------------------------------------------------
array.each {|element| ... } -> self
array.each -> Enumerator
------------------------------------------------------------------------
Iterates over array elements.
When a block given, passes each successive array element to the block;
returns self:
a = [:foo, 'bar', 2]
a.each {|element| puts "#{element.class} #{element}" }
Output:
Symbol foo
:
É uma maneira útil de consultar a documentação do Ruby sem precisar procurar em recursos externos ou na web. Principalmente se tiver no 3G. ;)
Encontrando a definição de um método em sua aplicação Rails
As vezes você precisa encontrar a definição de um método em sua aplicação Rails. Por exemplo, você pode querer encontrar a definição de um método de classe ou instância. Você pode usar o método source_location
para isso. Por exemplo:
Para métodos de instância:
$ Movie.instance_method(:rating).source_location
# => ["/app/models/movie.rb", 210]
Para métodos de classe:
$ Movie.singleton_method(:rating).source_location
# => ["/app/models/movie.rb", 21]
Você também pode usar o método sorce
para ver o código-fonte de um método:
$ Movie.instance_method(:rating).source
# => "def rating\n read_attribute(:rating)\nend\n"
para ter uma melhor visualização do código, você pode usar o método display
:
$ Movie.instance_method(:rating).source.display
def rating
read_attribute(:rating)
end
Acredite, isso será muito útil, principalemente, se o seu código tá cheio de meta-programação. ;)
Encontrando a definição de um método em uma gem
Para encontrar a definição de um método em uma gem, você pode usar o comando bundle open
. Por exemplo, para encontrar a definição do método save
da gem activerecord
:
$ bundle open activerecord
Isso abrirá o arquivo activerecord/lib/active_record/core.rb
no seu editor de texto padrão. Você pode então procurar o método save
direto no projeto.