[rspec-users] RSpec doesn't see the DATA constant

Matt Wynne matt at mattwynne.net
Mon Feb 28 12:18:52 EST 2011


On 25 Feb 2011, at 00:26, Shamaoke wrote:

> Thanks for the explanations, Costi G. I didn't thought that the `DATA`
> constant isn't seen by the interpreter if it is in the required file.
> 
> The only solution that I can think of right now is the following:

Why not just File.read(DATA_FILE) and keep the data in a separate file?

> 
> ~~~
> # data_spec.rb
> 
> describe 'DATA' do
>  it 'contains lines following the __END__ keyword' do
>    data = File.read(__FILE__).split("__END__\n")[-1]
>    data.should == "Hello from the underground!\n"
>  end
> end
> 
> __END__
> Hello from the underground!
> ~~~
> 
> Costi G.:
>> P. A. wrote in post #983523:
>>> Hi.
>>> 
>>> In Ruby there's the `DATA` constant which contains the lines following
>>> the `__END__` keyword in the source file. For some reason RSpec
>>> doesn't see it.
>>> 
>>> Here's the example:
>>> 
>>> ~~~
>>> # data_spec.rb
>>> 
>>> requre 'rspec'
>>> 
>>> describe 'DATA' do
>>>  it 'contains lines following the __END__ keyword' do
>>>    DATA.read.should == "Hello from underground!\n"
>>>  end
>>> end
>>> 
>>> __END__
>>> Hello from underground!
>>> ~~~
>>> 
>>> If then I run `$ rspec data_spec.rb`, I'm getting 'NameError:
>>> uninitialized constant RSpec::Core::ExampleGroup::Nested_1::DATA'.
>>> However, if I use `$ ruby data_spec.rb` all works fine.
>> 
>> DATA works only on the first file called by the interpreter.
>> 
>> first.rb:
>> require 'second'
>> 
>> second.rb:
>> p DATA.read
>> 
>> __END__
>> BAM!
>> 
>> 
>> ruby first.rb
>> ./second.rb:1: uninitialized constant DATA (NameError)
>>  from first.rb:1:in `require'
>>  from first.rb:1
>> 
>> ruby second.rb
>> "BAM!\n"
>> 
>> 
>>> 
>>> Why RSpec doesn't see the constant when I use the `rspec` command? How
>>> can I solve the problem?
>> 
>> 
>> The restriction on DATA notwithstanding, DATA in that context will by
>> ambiguous. Think about it, is the DATA from the rspec file or the DATA
>> from the tested file?
>> 
>> --
>> Posted via http://www.ruby-forum.com/.
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

cheers,
Matt

matt at mattwynne.net
07974 430184



More information about the rspec-users mailing list