firetonton
firetonton

Reputation: 323

Rails 3, app/lib not loaded with rspec

I have a controller "A" which requires a file in a subdirectory of app/lib (ex: app/lib/a_folder/my_class.rb).

So I did something like this :

require 'a_folder/my_class'

class AController < ApplicationController
  # Some stuff using MyClass
end

It works well when I use the application, but doesn't work when I launch RSpec.

This is how my RSpec file looks:

require 'spec_helper'
require 'lib/import_functions' # Rails.root/spec/lib/import_functions.rb

RSpec.describe AController, type: controller do
  # My tests routines
end

When I start rspec it tells me the require in the controller file doesn't found the file (`require': cannot load such file), while it works well when I start the app.

I've added a puts $LOAD_PATH just before the require and it appears that Rails.root/app/lib is not present.

I use Rails 3.2 and rspec-rails 3.2.

Does anyone have any idea why it happens and how to fix it please ?

Thank you for your future answers.

Upvotes: 0

Views: 449

Answers (1)

Rokibul Hasan
Rokibul Hasan

Reputation: 4156

lib files are not auto loaded. You can put the following configuration in your application.rb, it has a problem also it will load all files under lib directory.

config.autoload_paths += "#{Rails.root}/lib/"

Or you can load your lib files in your RSpec as following code

require_relative "../../lib/a_folder/my_class.rb"

or

require 'lib/a_folder/my_class.rb'

Upvotes: 2

Related Questions