Professional Documents
Culture Documents
Agora, você poderá notar que o número da versão inclui três números individuais, que
são: a versão maior, a versão menor, e a versão pequenina. A versão maior conta
cada regravação completa do Ruby. A versão menor é modificada baseada em
mudanças de varredura para o Ruby. A versão pequenina é incrementada a cada poucos
meses como mudanças menores e correções de erros são inseridas.
Todas as edições do Ruby até então tem a versão maior igual a 1. Quando vier Ruby 2,
você verá esta versão aumentar em um.
Oh, e se eu pudesse dar a você um gostinho do quão suave o Ruby se move! Eu não
posso contar com que freqüência uma idéia fresca surge na lista de e-mail do Ruby-
Core, onde os Imperadores do Ruby conversam, e aquela mesma idéia é trabalhada no
Ruby em poucos dias. Esta é uma máquina adorável eu digo.
sidebar!
Vamos instalar a versão mais recente do Ruby no seu computador, assim você pode
acompanhar todos os exemplos no (Comovente) Guia e realmente fazer as coisas
corretamente agora! (Sim, coisas!)
Se você está usando Microsoft Windows, comece fazendo o download do Ruby
Installer for Windows. Executar este instalador “one-click” irá instalar Ruby
para você, bem como instalar um pacote de softwares úteis, como um pequeno
editor de texto e algumas bibliotecas adicionais.
Se você está no Mac OS X da Apple, então Ruby já poderá estar instalado. As
Versões desde 10.2 até 10.5 do OS X já vieram com Ruby. Ainda assim, quero
encorajá-lo a atualizar o Ruby, para que todos os exemplos deste livro
funcionem para você. Faça o download da versão estável da imagem de disco.
Você vai precisar do OS X 10.3 (Panther) e do XCode Tools para utilizar esta
imagem.
No FreeBSD, Ruby está disponivel no sistema ports. De fato, se você usa a
ferramenta essencial portupgrade, então Ruby já está instalado. Akinori
Musha, um dos desenvolvedores talentosos do núcleo do Ruby, escreveu o
portupgrade, o que significa que você pode utilizar o seu conhecimento em Ruby
para hackear o seu pkgtools.conf imediatamente.
_*
cd /usr/ports/lang/ruby18
cd ruby-1.8.7-p22
./configure
make
make install
Para testar se o Ruby está instalado, abra um terminal e execute: ruby -v. Se o Ruby
estiver instalado corretamente, você verá um pouco das informações sobre a versão.
ruby 1.8.7 (2008-06-09 patchlevel 17) [i686-linux]
OK, mantenha o terminal aberto caso nós precisarmos salvar a Terra de uma colisão
com o Sol.
O Ruby vem com uma ferramenta muito, muito, extremamente muito útil chamada Irb.
Ruby Interativo. No seu terminal, digite: irb.
irb(main):001:0>
Você deve ver o console acima. Essa linha de comando Irb permitirá que você entre
com código Ruby e, pressionando Enter, o código irá executar.
Esse exemplo 3000 + 500 é código legítimo. Nós apenas não estamos atribuindo a
resposta a uma variável. O que está correto no Irb, porque o Irb devolveu a resposta do
código que você executou.
Eu sei que o console (também conhecido como terminal ou prompt) com certeza parece
desconcertante. Bem, vamos logo dissecá-lo. É muito simples. O console tem três
partes, cada uma separada por dois pontos.
A primeira seção, onde está escrito irb(main), mostra o nome do programa que
estamos rodando. A segunda seção mostra o número da linha, um contador de quantas
linhas de Ruby nós digitamos. A terceira seção é um nível de profundidade. Toda
vez que você abrir uma expressão que precisa ser fechada, o nível de profundidade vai
aumentar uma unidade. E toda vez que o Irb detectar que seu código não está terminado,
o fim do console vai virar um asterisco.
Veja como o nível de profundidade aumentou para 1 quando eu abri o if. E como o
asterisco indica a continuação da linha.
Ajustando o Console
Você não tem que gostar da aparência do console, entretanto. Não estou forçando você a
fazer nada e, se você quer hackeá-lo, estou ao seu lado.
O Irb tem mais alguns consoles que podem agradar seus sentidos. Tente irb --prompt
simple. Desta vez o Irb vai lhe proporcionar um conjunto bem básico de setas,
permitindo a você digitar seu código sem todo o relatório de status.
Ruby vem com alguns prompts. O prompt simple visto acima. O prompt xmp que não
tem nenhum prompt e identa a seta de resposta. (Deve ficar bom para impressão.) Além
disso, o prompt null, que elimina todos os prompts. Defina o prompt fornecendo o
nome dele na opção --prompt. (Portanto, irb --prompt null.)
Você também pode fazer seu próprio prompt. O Irb é completamente customizável de
dentro dele mesmo. O objeto conf contém todas as configurações do Irb. Algumas
destas configurações são para o controle do prompt.
Vamos configurar nosso prompt para mostrar o número da linha com um pouquinho de
decoração.
Você pode ler mais sobre a customização do Irb e sobre salvar sua configuração num
arquivo no completo guia para o Irb, disponível no Programming Ruby, grátis-para-
seus-olhos-de-Internet-perambulantes.
sidebar!
Soluços do Windows
Certo, aqui está o que você precisa para fazer funcionar no Windows o auto-completar
com o TAB. Baixe este arquivo. Um zip com dois arquivos. Copie para dentro do
instalação do seu Ruby. Coloque readline.dll na pasta bin. O arquivo readline.so vai na
pasta lib/ruby/1.8/i386-mswin32
E para os Europeus, você precisará disto. Salve como .inputrc e coloque-o no seu
diretório raiz. (Seu diretório pessoal que contém suas pastas Desktop e Meus
Documentos.)
sidebar!
Completar com tab
Basicamente, quando você teclar TAB, o Irb tentará adivinhar o que você está tentando
digitar. Tente digitar: [].col e tecle TAB. o Irb finalizará isto. [].collect e isto levará
seu cursor até o final então você pode adicionar mais conteúdo.
Se existem várias combinações, apenas teclar TAB não adiantará. Mas pressione duas
vezes e o Ruby lhe dará uma lista completa de possíveis combinações.
Isto é ótimo se você quer apenas ver todos os métodos para um certo objeto. Digite em
qualquer número, um ponto, e use TAB.
>> 42.
42.floor 42.next
42.step
42.__id__ 42.freeze 42.nil?
42.succ
42.__send__ 42.frozen? 42.nonzero?
42.taint
42.abs 42.hash 42.object_id
42.tainted?
42.between? 42.id 42.prec
42.times
42.ceil 42.id2name 42.prec_f
42.to_f
42.chr 42.inspect 42.prec_i
42.to_i
42.class 42.instance_eval 42.private_methods
42.to_int
42.clone 42.instance_of? 42.protected_methods
42.to_s
42.coerce 42.instance_variable_get 42.public_methods
42.to_sym
42.display 42.instance_variable_set 42.quo
42.truncate
42.div 42.instance_variables 42.remainder
42.type
42.divmod 42.integer? 42.respond_to?
42.untaint
42.downto 42.is_a? 42.round
42.upto
42.dup 42.kind_of? 42.send
42.zero?
42.eql? 42.method 42.singleton_method_added
42.equal? 42.methods 42.singleton_methods
42.extend 42.modulo 42.size
Agora, tentando teclar Kernel:: e depois TAB. Todos os métodos do core. Nunca
esqueça disto e use o tempo todo.
Ok, uma última coisa então vou parar de incomodar com toda esta ótima tecnologia.
Mas terei que falar isto alto, então tapem os ouvidos! Estou do outro lado do mundo,
galera, mas o volume vem do céu - um negrito, vermelho e crescente -
((%{color:#A53}r
i%))
(O próprio 102 do Ruby ou 555-1212 ou Sim, Operadora, Coloque
Belgrado na Linha — Eu Estarei Bem Aqui — Apenas Batendo na Tecla
do “Jogo da Velha” Até Que Alguém Atenda…
ri Enumerable#zip
Sem demora, corrija na sua tela (tão rápido que até o gato sentado na quina estica o
pescoço, boceja e alcança a sua caneca real A coisa mais barulhenta desde Michael
Dorn):
---------------------------------------------------------
Enumerable#zip
enum.zip(arg, ...) => array
enum.zip(arg, ...) {|arr| block } => nil
---------------------------------------------------------------------
---
Converte qualquer argumento para arrays, então une elementos de
_enum_
com elementos correspondentes de cada argumento. Isto gera uma
seqüência de +enum#size+ _n_-element arrays, onde _n_ é um a
mais
que a conta de argumentos. Se o tamanho de algum argumento é
menor
que +enum#size+, valores de +nil+ são providos. Se é dado um
bloco, este é chamado para cada saída do array, caso contrário
um
array de arrays é retornado.
a = [ 4, 5, 6 ]
b = [ 7, 8, 9 ]
Para ter uma explicação de qualquer classe em inglês, junto com diretório completo para
todos seus métodos, todos com uma voz suave que serve para acalmar qualquer um de
vocês cosmonautas em pânico aí lutando contra a atração de um raio trator de tolerância
zero, apenas use no console: ri Class.
Mas para ajudar nos métodos da classe, você tira da manga: ri Class::method.
A completa distribuição das classes, uma lista completa desde o mais alto topo até o
centro da Terra, pode ser alcançada com ri -c.
e além do texto, você pode fazer HTML: ri -Tf html String#gsub > gsub.html.
--------------------------------------------------------------
Date#time
time()
---------------------------------------------------------------------
---
Get the time of this date as [hours, minutes, seconds,
fraction_of_a_second]
Você também pode usar alguns caracteres especiais para aumentar sua descrição. Por
exemplo, se você identar um parágrafo e usar um asterisco * ou um hífen - pouco antes
das letras da primeira frase, o parágrafo será reconhecido como um item de lista. Então,
se a sua descrição precisa ser convertida para HTML, você verá o item de lista aparecer
como uma lista de HTML não-ordenada.
Outra regras semelhantes: Listas que começam com dígitos seguidos de períodos são
reconhecidas como listas numéricas. Palavras enfatizadas são cercadas por travessão
(underscore), palavras em negrito por asteriscos, palavras em código por sinais de
adição. Exemplos são simples blocos de texto identados por alguns espaços. Todas estas
regras juntas são chamadas RDoc.
#
# Retorna um novo objeto RedCloth, baseado em +String+ e
# cumprindo todas as +restrições+ incluídas.
#
# r = RedCloth.new( "h1. A <b>bold</b> man", [:filter_html] )
# r.to_html
# #=>"<h1>A <b>bold</b> man</h1>"
#
def initialize( string, restrictions = [] )
@lite = false
restrictions.each { |r| method( "#{ r }=" ).call( true ) }
super( string )
end
Para a série completa de regras RDoc veja a seção Markup (Marcação) do README.
Impulsionando seu próprio Ri
O Ri porém não lê automaticamente seus arquivos para você. Você tem que guiá-lo,
mostrar o caminho. Mude para o diretório do código que você gostaria de examinar.
Então, use a ferramenta RDoc para executar.
cd ~/cvs/seu-codigo
rdoc --ri-site
Agora, tente usar ri SuaClasse para assegurar que todas as suas descrições estão
aparecendo apropriadamente. Se você quer fazer documentação HTML, tente isto:
cd ~/cvs/seu-codigo
rdoc
Pois então. Está tudo em suas mãos agora. Bem vindo ao Ruby.