On 7/18/06, Justin Collins <collinsj / seattleu.edu> wrote:
>
>
> Sean O'Halpin wrote:
> > On 7/17/06, Thorben Mueller <dingsi / mistburg.de> wrote:
> >> Rick Ashton schrieb:
> >> > Thanks guys
> >> >
> >> > But it still doesn't load the file into the current scope as I
> >> mentioned
> >> > before. Is there some way to do this?
> >> >
> >> > ie:
> >> >
> >> > $ echo a=5 > blah.rb
> >> > $ irb -r blah.rb
> >> > irb(main):001:0> a
> >> > NameError: undefined local variable or method `a' for main:Object
> >> >         from (irb):1
> >> >
> >> >
> >> > Thanks!
> >> >
> >>
> >> Hi Rick,
> >>
> >> try eval(File.read('blah.rb'))
> >>
> >> ~dingsi
> >>
> >>
> >
> > eval() won't create local variables - it will update one if it already
> > exists however:
> >
> > $ cat eval-test.rb
> > a = 42
> > $ cat eval-scope.rb
> > eval(File.read("eval-test.rb"))
> > p a
> > $ ruby eval-scope.rb
> > eval-scope.rb:2: undefined local variable or method `a' for
> > main:Object (NameError)
> >
> > $ cat eval-scope2.rb
> > a = nil
> > eval(File.read("eval-test.rb"))
> > p a
> > $ ruby eval-scope2.rb
> > 42
> >
> >
> > Regards,
> > Sean
> >
>
> Interestingly, it _does_ work for me within irb:
>
> $ cat test.rb
> puts "hi"
> a = 1
> $ irb
> irb(main):001:0> eval(File.read('test.rb'))
> hi
> => 1
> irb(main):002:0> puts a
> 1
> => nil
>
>
>
> Which I think will work for what the OP wanted?
>
> -Justin
>
>
You're right - another one of those little quirks of irb ;)

(I'm too abashed to admit I missed the point)

Regards,
Sean