Как я могу заставить Rspec не ошибочно думать, что другой модуль вложен в родительский? - PullRequest
0 голосов
/ 01 июля 2019

У меня есть проблема, которая появляется только при запуске rspec, мое приложение загружается и отлично работает локально и в работе

rspec, кажется, считает, что камень JWT принадлежит моему модулю BACKBONE

An error occurred while loading spec_helper.
Failure/Error: JWT.encode(payload, ENV['APP_SECRET'], 'HS256')

NameError:
  uninitialized constant BACKBONE::JWT
# ./lib/jwt.rb:6:in `encode'
# ./lib/backbone/policies.rb:7:in `<class:Policy>'
# ./lib/backbone/policies.rb:5:in `<module:BACKBONE>'
# ./lib/backbone/policies.rb:3:in `<top (required)>'
# ./init.rb:10:in `load'
# ./init.rb:10:in `block in <module:CrewManagement>'
# ./init.rb:10:in `glob'
# ./init.rb:10:in `<module:CrewManagement>'
# ./init.rb:4:in `<top (required)>'
# ./spec/spec_helper.rb:16:in `require'
# ./spec/spec_helper.rb:16:in `<top (required)>'

файлы перечислены в порядке их загрузки в память, может быть полезно отметить, что у меня есть несколько других приложений с такой же настройкой, которые не сталкиваются с этой проблемой

/ спецификация / spec_helper.rb

require 'bundler'
require 'simplecov'
SimpleCov.start

Bundler.require :default
Dotenv.load("./.env.#{(ENV['RACK_ENV'] || 'development')}")

require 'rack/test'
require './init'

# ...

/ init.rb

module CrewManagement
  ## ...
  Dir.glob('./lib/**/*.rb') { |file| load file }
  ## ...
end

/ Библиотека / jwt.rb

module BACKBONE
  def self.encode(payload)
    JWT.encode(payload, ENV['APP_SECRET'], 'HS256')
  end

  def self.decode(token)
    JWT.decode(token, ENV['APP_SECRET'], true, algorithm: 'HS256')
  end
end

/ Библиотека / магистральная / policies.rb

module BACKBONE
  headers = { 'Authorization' => BACKBONE.encode(app: '...') }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...