Буду очень признателен за несколько советов по следующему.
Ниже приведен упрощенный пример нашей настройки.
Я определил некоторые модули Helper в нашем тесте RSpe c suite:
## spec/rails_helper.rb
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
RSpec.configure do |config|
config.include ViewHelpers
end
### spec/support/view_helpers/base.rb
# frozen_string_literal: true
module ViewHelpers
class Base
# class content
end
end
### spec/support/view_helpers/admins/payments/new.rb
# frozen_string_literal: true
module ViewHelpers
module Admins
module Payments
class New < Base
# class content
end
end
end
end
С этой настройкой спецификации работают идеально локально; подкласс New
наследуется от Base
, как и ожидалось. Однако, когда тесты выполняются на Travis CI, мы получаем следующую ошибку:
NameError:
1433 uninitialized constant ViewHelpers::Admins::Payments::Base
1434# ./spec/support/view_helpers/admins/payments/new.rb:6:in `<module:Payments>'
1435# ./spec/support/view_helpers/admins/payments/new.rb:5:in `<module:Admins>'
1436# ./spec/support/view_helpers/admins/payments/new.rb:4:in `<module:ViewHelpers>'
1437# ./spec/support/view_helpers/admins/payments/new.rb:3:in `<top (required)>'
1438# ./spec/rails_helper.rb:34:in `block in <top (required)>'
1439# ./spec/rails_helper.rb:34:in `each'
1440# ./spec/rails_helper.rb:34:in `<top (required)>'
1441# ./spec/controllers/admins/billpayers_controller_spec.rb:3:in `<top (required)>'
Я также пытался наследовать с явным пространством имен:
# frozen_string_literal: true
module ViewHelpers
module Admins
module Payments
class New < ViewHelpers::Base
# class content
end
end
end
end
Опять же, это успешно выполняется локально но ошибки Travis CI:
NameError:
1433 uninitialized constant ViewHelpers::Base
1434# ./spec/support/view_helpers/admins/payments/new.rb:6:in `<module:Payments>'
1435# ./spec/support/view_helpers/admins/payments/new.rb:5:in `<module:Admins>'
1436# ./spec/support/view_helpers/admins/payments/new.rb:4:in `<module:ViewHelpers>'
1437# ./spec/support/view_helpers/admins/payments/new.rb:3:in `<top (required)>'
1438# ./spec/rails_helper.rb:34:in `block in <top (required)>'
1439# ./spec/rails_helper.rb:34:in `each'
1440# ./spec/rails_helper.rb:34:in `<top (required)>'
1441# ./spec/controllers/admins/billpayers_controller_spec.rb:3:in `<top (required)>'
Я довольно озадачен тем, почему это работает локально, но не на CI. Был бы очень признателен за любую поддержку и понимание.
Спасибо Сэм