Cara, houve uma certa confusão aí no uso do require.

O que você está tentando fazer quebra um pouco as regras de encapsulação.

O que você pode fazer, de uma maneira Orientada a objetos, é isso:

class Dados
attr_reader :a

   def initialize
     @a = 'a'
   end
end

e no script:

require 'main'

m = Main.new
puts m.a

O que eu fiz, foi criar um "acesso" à variável da classe Dados, através de
uma instância.

para mais informações sobre escopo, acessadores e etc, dê uma olhada aqui:
http://www.rubyist.net/~slagell/ruby/accessors.html

Abraços


On 8/7/07, Pablo Arantes <[EMAIL PROTECTED]> wrote:
>
> Olá a todos,
>
> Estou iniciando meu aprendizado em Ruby e engasguei num ponto que
> parece muito simples mas que não consigo desenrolar. O problema
> envolve o uso do método de kernel require.
>
> Vou ilustrar o problema com uma versão bem simples. Tenho um arquivo
> chamado dados.rb com o seguinte conteúdo
>
> a = "a"
>
> O segundo arquivo é script.rb com o seguinte conteúdo
>
> require 'dados.rb'
> puts a
>
> Em tese, usando require 'dados.rb' deveria deixar o conteúdo de
> dados.rb disponível para uso posterior e o programa script.rb deveria
> imprimir na tela o conteúdo da variável a. Não é o que está
> acontecendo, entretanto.
>
> No prompt, digito $ ruby script.rb e recebo a seguinte mensagem de erro:
> script.rb:2: undefined local variable or method `a' for main:Object
> (NameError)
>
> Pelo que entendi, é como se o programa script.rb não estivesse lendo o
> conteúdo de dados.rb. Acho que não é uma questão de path, pois os dois
> arquivos estão no mesmo diretório e o erro persiste mesmo se dou o
> path absoluto de dados.rb.
>
> Com o irb ou o fxri, se entro com o comando require 'dados.rb' recebo
> um 'true' de volta, o que parece indicar que o arquivo foi carregado.
> Mesmo assim, se invoco puts a, tenho o mesmo erro:
> NameError: undefined local variable or method `a' for main:Object.
>
> Alguém tem alguma idéia do que pode ser? Tentei esse procedimento com
> o Ruby 1.8.5 no Ubuntu 7.04 e no XP e tenho sempre o mesmo resultado.
> Alguém poderia me dar uma dica sobre o que posso estar fazendo de
> errado?
>
> Obrigado de antemão,
>
> Pablo
> _______________________________________________
> Ruby-l mailing list
> [email protected]
> http://www.listas.unicamp.br/mailman/listinfo/ruby-l
>



-- 
------------------------------------------------
Thiago Bueno Silva
_______________________________________________
Ruby-l mailing list
[email protected]
http://www.listas.unicamp.br/mailman/listinfo/ruby-l

Responder a