我有一个控制器" a ",它需要一个文件在app/lib的子目录(例如:app/lib/a_folder/my_class.rb)。
所以我这样做了:
require 'a_folder/my_class'
class AController < ApplicationController
# Some stuff using MyClass
end
当我使用应用程序时,它工作得很好,但当我启动RSpec时,它不起作用。
这是我的RSpec文件的样子:
require 'spec_helper'
require 'lib/import_functions' # Rails.root/spec/lib/import_functions.rb
RSpec.describe AController, type: controller do
# My tests routines
end
当我启动rspec时,它告诉我控制器文件中的require没有找到文件(' require':不能加载这样的文件),而当我启动应用程序时它工作得很好。
我在require之前添加了一个puts $LOAD_PATH,看起来Rails。目录/app/lib不存在
我使用Rails 3.2和respect - Rails 3.2。
有谁知道为什么会发生这种情况以及如何修复它吗?
谢谢你以后的回答
lib文件不是自动加载的。您可以在应用程序中放入以下配置。Rb,它有一个问题,它会加载lib目录下的所有文件。
config.autoload_paths += "#{Rails.root}/lib/"
或者你可以在你的RSpec中加载你的lib文件,如下代码
require_relative "../../lib/a_folder/my_class.rb"
或
require 'lib/a_folder/my_class.rb'