stevehodgkiss / generator_spec

Test Rails generators with RSpec
MIT License
111 stars 22 forks source link

Uninitialized Constant (NameError) #39

Closed sunnyrjuneja closed 9 years ago

sunnyrjuneja commented 9 years ago

Hey Steve,

This is probably not a bug and likely to be bad user behavior.

My generator looks like this:

# lib/generators/wine_bouncer/initializer_generator.rb
module WineBouncer
  module Generators
    class InitializerGenerator < ::Rails::Generators::Base
      source_root File.expand_path('../../templates', __FILE__)

      desc 'Creates a sample WineBouncer initializer.'
      def copy_initializer
        copy_file 'wine_bouncer.rb', 'config/initializers/wine_bouncer.rb'
      end
    end
  end
end

My spec looks like this:

# spec/lib/generators/wine_bouncer/initializer_generator_spec.rb
require 'generator_spec'
require 'rails_helper'
require 'spec_helper'

describe WineBouncer::Generators::InitializerGenerator, type: :generator do
  destination File.expand_path("../../tmp", __FILE__)

  before do
    prepare_destination
    run_generator
  end

  it 'creates a test initializer' do
    assert_file 'config/initializers/wine_bouncer.rb', 'module WineBouncer'
  end
end

But when I run my tests, I get this error:

/home/wasd/.rubies/ruby-2.2.0/bin/ruby -I/home/wasd/.gem/ruby/2.2.0/gems/rspec-support-3.1.2/lib:/home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/lib /home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
/home/wasd/.gem/ruby/2.2.0/gems/activesupport-4.1.1/lib/active_support/values/time_zone.rb:285: warning: circular argument reference - now
I, [2015-01-05T11:24:14.030412 #9645]  INFO -- : Not reporting to Code Climate because ENV['CODECLIMATE_REPO_TOKEN'] is not set.
/home/wasd/Programs/gems/wine_bouncer/spec/lib/generators/wine_bouncer/initializer_generator_spec.rb:6:in `<top (required)>': uninitialized constant WineBouncer::InitializerGenerator (NameError)
        from /home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `block in load_spec_files'
        from /home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `each'
        from /home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load_spec_files'
        from /home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:96:in `setup'
        from /home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:84:in `run'
        from /home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:69:in `run'
        from /home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:37:in `invoke'
        from /home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/exe/rspec:4:in `<main>'
/home/wasd/.rubies/ruby-2.2.0/bin/ruby -I/home/wasd/.gem/ruby/2.2.0/gems/rspec-support-3.1.2/lib:/home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/lib /home/wasd/.gem/ruby/2.2.0/gems/rspec-core-3.1.7/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb failed

Any idea why I'm getting a NameError?

You can find a repo with the exact contents of the code here: https://github.com/whatasunnyday/wine_bouncer/tree/generator

sunnyrjuneja commented 9 years ago

Hey Steve, would it beneficial to update the README given the problem I had with the explicit require?

a-barbieri commented 6 years ago

This little thing took me 2 hours before sorting it out.

vinc commented 6 years ago

Same for me, a note in the README would be helpful.