Incluindo Outros Arquivos

Ao escrever seus primeiros programas em Ruby, você costuma colocar todo seu código em um único arquivo. Mas, a medida que você cresce como programador Ruby, seus programas também crescerão e em um determinado ponto você perceberá que ter um único arquivo contendo todo o código
não será uma boa ideia. É mais fácil quebrar seu código em grupos lógicos e colocar cada grupo em um arquivo separado. Quando você começa a utilizar múltiplos arquivos, você precisa usar os métodos require (requerer) e load (carregar) (ambos métodos são “funções” globais definidas no Kernel, mas são usadas como palavras-chave da linguagem) que o ajudam a incluir outros arquivos em seu programa.

O método load inclui o arquivo fonte referenciado toda vez que o método é executado:

1   load 'nome_do_arquivo.rb'

O mais comumente usado require carrega o arquivo dado apenas uma vez:

1   require 'nome_do_arquivo'

require lhe dá acesso a muitas extensões e bibliotecas de programação empacotadas com a linguagem de programação Ruby – além de um número ainda maior de extensões e bibliotecas escritas independentemente por outros programadores e disponibilizadas para uso com o Ruby.

Note que quando você escreve require ‘nome_do_arquivo’ e não ‘nome_do_arquivo.rb’. Especificamente, extensões escritas em C são armazenadas em arquivos terminados por .so ou .dll. Para manter o processo transparante – isso é, para lhe poupar o trabalho de saber qual a extensão do arquivo que você quer usar (.rb e etc) – o método aceita uma palavra e então faz uma busca automática tentando todos os nomes de arquivo possíveis até que encontra o arquivo correspondente a extensão que você requisitou.

require(string) => true or false

O Ruby tenta carregar a biblioteca chamada string, retornando true (verdadeiro) em caso de sucesso. Se o nome do arquivo não for resolvido para um caminho absoluto, ele será procurado nos diretórios listados em $:. Se o arquivo tem a extensão “.rb”, ele é carregado como um arquivo fonte; se a extensão for “.so”, “.o” ou “.dll”, ou qualquer que seja a extensão de bibliotecas compartilhadas na plataforma em questão, o Ruby carregará a biblioteca compartilhada como uma extensão Ruby. Em caso contrário, o Ruby tenta adicionar “.rb”, “.so” e assim por diante ao nome do arquivo. O nome do novo recurso é adicionado ao array em $:.

NO RAILS: O Rails usa load ao invés de require, por exemplo, no modo de desenvolvimento – o que significa que se você está testando sua aplicação em um navegador e fazendo mudanças no código ao mesmo tempo, suas mudanças serão recarregadas, sobrescrevendo qualquer comportamento de caching por parte do servidor Web. Múltiplas chamadas a require no mesmo lugar não tem o mesmo efeito se a aplicação já leu o arquivo por completo.

Agora, vamos olhar para o exemplo de outra classe – p030motorcycle.rb

 1   class MotoCicleta
 2     def initialize(fabricante, cor)
 3       # Variáveis de instância
 4       @fabricante = fabricante
 5       @cor = cor
 6       end
 7     def ligaMotor
 8       if (@estado_motor)
 9         puts 'O motor já está ligado'
10       else
11         @estado_motor = true
12         puts 'Motor ocioso'
13       end
14     end
15   end

Escrevemos outro programa p031motorcycletest.rb para testar a classe acima.

1   # p031motorcycletest.rb
2   require 'p030motorcycle'
3   m = MotoCicleta.new('Yamaha', 'vermelha')
4   m.ligaMotor

A partir da versão 1.9 do Ruby, é usado require_relative quando o local onde está o arquivo que desejamos carregar é relativo ao do arquivo que o está carregando (eles estão no mesmo diretório).

Logo do Guru-SP

Este material tem como base o tutorial do RubyLearning.com de Satish Talim e foi traduzido por membros do GURU-SP com a permissão do autor.

Ajude o RubyLearning participando em algum dos cursos pagos ou fazendo uma doação para o projeto

Voltar para o índice