Uninitialized constant (NameError) problem – how to include a class?
Here is my directory structure:
/features/ninja.feature /features/step_definitions/ninja_steps.rb /src/ninja.rb
When I run
- Rails 4 error when runnning the rails server command on console
- What's in the .gem specs marshal stuff in my local personal dir?
- Ruby: problem installing EventMachine under Windows 7
- Group by specified column in PostgreSQL
- Update route in rails doesn't respond well to after_action?
- Nested field ruby
in the root of my project, I get an
uninitialized string constant Ninja (NameError) error. I’ve determined it’s caused by this line in my
@ninja = Ninja.new :belt_level => belt_level
class Ninja def initialize (belt_level) end end
Do I need to add some sort of
require at the top of my ninja_steps.rb file, or what? I can’t seem to figure out how to do that so that it doesn’t bomb out.
2 Solutions collect form web for “Uninitialized constant (NameError) problem – how to include a class?”
Did you try adding an include at the top of the ninja_steps? Something like
require File.expand_path(File.dirname(__FILE__) + "/../../src/ninja")
should do the trick. Otherwise, cucumber has no idea what a Ninja is. 🙂
To load all those files in a slightly different way than Bill Turner suggests, taking a hint from projects like cucumber/aruba:
# env.rb # add your src dir to the load path $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../src') require 'ninja'