Closed Asherlc closed 6 years ago
Hi Asher
It's certainly possible to have models autoloaded - in my own gems, I find I need to make sure I have Rails being loaded, and the gem I'm developing to have a subclass of Rails::Engine
which is also loaded as part of the gem setup. Are both of these things the case in your own code?
Some examples:
Thanks for the quick response! I've added both lines to their respective files in my engine, but I'm still getting the same error. I notice your model is scoped to the Visa
namespace: https://github.com/inspire9/visa/blob/master/app/models/visa/token.rb.
My model however is in the global namespace (extracted from a previous app where it still depends on the naming). Is it possible that would cause problems?
For reference, here's my current spec_helper.rb:
require 'bundler'
Bundler.require :default, :development
require 'rails'
require 'combustion'
# If you're using all parts of Rails:
Combustion.initialize! :all
# Or, load just what you need:
# Combustion.initialize! :active_record, :action_controller
require 'rspec/rails'
# If you're using Capybara:
# require 'capybara/rails'
RSpec.configure do |config|
config.use_transactional_fixtures = true
end
Ah! I needed to add require <my_engine>
to the spec_helper. Mystery solved!
Good to know you got it figured out :)
For what it's worth, I think you should have the require statement for your engine in your actual gem's code, so it's available in Rails apps, not just in your tests.
Is there anything special required to autoload models in the 'app/models' directory of an engine? I've got spec/internal setup according the readme, but I'm getting
uninitialized constant MyModelName
when I try to run any model specs. Are there any special configs required? I've gotCombustion.initialize! :all
in my spec_helper.