Fuentes Vinícius Baggio - Ruby on Rails: coloque sua aplicação web nos trilhos стр 18.

Шрифт
Фон

o bloco ensure pode ocorrer mesmo sem blocos rescue.

def calculate_installment_price(total_value, installments)

begin

65

2.6. Classes e módulos

Casa do Código

puts "O resultado é #{total_value / installments}"

rescue

puts "Não foi possível calcular o valor da parcela"

ensure

puts "Pronto."

end

end

calculate_installment_price(100, 5) # O resultado é 20

# Pronto.

calculate_installment_price(100, 0) # Não foi possível calcular

# o valor da parcela

# Pronto.

O begin é bastante útil caso queiramos especificar um trecho de código que pode

sinalizar exceções. Porém, no caso de métodos inteiros, podemos omiti-lo:

def calculate_installment_price(total_value, installments)

puts "O resultado é #{total_value / installments}"

rescue

puts "Não foi possível calcular o valor da parcela"

ensure

puts "Pronto."

end

Esta definição é um pouco mais enxuta, sem perder clareza, então é recomen-

dado o uso quando possível.

Mais informações sobre exceptions

Tratamento de exceções, por mais simples que pareça, é um assunto deli-

cado, e é necessário bastante cuidado para que o código não se torne um

grande macarrão incompreensível.

Se você quiser saber mais sobre o assunto, recomendo a leitura do exce-

lente livro Exceptional Ruby [6].

66

Casa do Código

Capítulo 2. Conhecendo Ruby

2.7

Bibliotecas e RubyGems

Uma linguagem de programação não pode ser completa sem possuir um mecanismo

de compartilhamento de código, de modo que possamos quebrar um sistema grande

em diversos arquivos.

Bibliotecas

Em Ruby, existem três maneiras para se carregar um código externo:

load: Carrega o arquivo referenciado;

require: Carrega o arquivo referenciado, porém, se ele já foi carregado em

algum outro ponto do código, nada será feito;

require_relative: Funciona da mesma maneira que o require, porém so-

mente funciona com caminhos relativos ao sistema de

arquivos. Veremos mais

detalhes logo adiante.

O require é definitivamente a maneira mais usada para carregar arquivos Ruby

pelo fato do arquivo ser carregado apenas uma vez. Quando um arquivo é carregado

via require, ele é adicionado a uma lista chamada $LOADED_FEATURES. Ou seja, isso

significa que se o arquivo Ruby for editado externamente, ele não será recarregado,

havendo a necessidade de reiniciar o processo.

Uma particularidade sobre o require é que, se o caminho passado for relativo,

ele será procurado apenas no $LOAD_PATH e um erro será apresentado caso não seja

encontrado. Para carregar arquivos que não estão no $LOAD_PATH, é necessário men-

cionar o caminho relativo. Vejamos a seguir exemplos:

Usando o load:

load 'purchase.rb' #=> true

Purchase.new

# #<Purchase:0x007f9062b49b60>

Agora o require:

require './purchase' # Podemos omitir o .rb com o require!

Purchase.new

# #<Purchase:0x007f9062b49b60>

Note que se removermos o caminho do arquivo, o require necessita que a pasta

em que o arquivo se encontra esteja no $LOAD_PATH:

67

2.7. Bibliotecas e RubyGems

Casa do Código

require 'purchase' # LoadError: cannot load such file -- purchase

$LOAD_PATH << "./" # $LOAD_PATH é um Array com todos os caminhos

# a serem procurados

require 'purchase' # Agora funciona, o purchase.rb é encontrado

Purchase.new

# #<Purchase:0x007f9062b49b60>

require_relative 'purchase'

Purchase.new

# #<Purchase:0x007f9062b49b60>

Cuidado com require_relative

O require_relative possui um pequeno problema quando executa-

mos o comando via IRB. Isso acontece porque, quando executamos o

require_relative, o Ruby tenta inferir a pasta raiz pelo arquivo em

execução. O problema é que, quando executamos via IRB, não existe

nenhum arquivo, então o Ruby irá sinalizar uma exceção mencionando

este fato.

RubyGems

A linguagem Ruby possui uma comunidade bastante ativa de programadores

que compartilham código. Para facilitar esse compartilhamento, a comunidade Ruby

inventou as chamadas RubyGems, ou gems. A criação de uma RubyGem ocorre da

seguinte forma:

1) Um desenvolvedor constrói uma biblioteca e deseja compartilhá-la;

2) O desenvolvedor prepara um arquivo chamado gemspec que informa coisas como

nome do autor original, colaboradores, versão daquela biblioteca, site, documen-

tação, e várias outras informações;

3) Em seguida, ele prepara o pacote usando a ferramenta gem, que gera um arquivo

terminado em .gem.

4) Depois de criar uma conta no site do RubyGems (http://rubygems.org), gratuita-

mente, o desenvolvedor usa o comando gem para publicá-la.

68

Casa do Código

Capítulo 2. Conhecendo Ruby

Instalando Rubygems

Uma vez publicada, qualquer desenvolvedor pode instalar e usar essa gem. Va-

mos instalar a gem nokogiri, para processamento de XMLs. Para isso, primeira-

mente temos que instalá-la, usando a linha de comando:

$ gem install nokogiri

Fetching: nokogiri-1.5.3.gem (100%)

Building native extensions. This could take a while...

Successfully installed nokogiri-1.5.3

1 gem installed

Installing ri documentation for nokogiri-1.5.3...

Installing RDoc documentation for nokogiri-1.5.3...

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке