[rspec-users] RSpec doesn't see the DATA constant
shamaoke at hotmail.com
Thu Feb 24 19:26:47 EST 2011
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:
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"
Hello from the underground!
> 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.
> require 'second'
> p DATA.read
> ruby first.rb
> ./second.rb:1: uninitialized constant DATA (NameError)
> from first.rb:1:in `require'
> from first.rb:1
> ruby second.rb
> > 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
More information about the rspec-users