File tree Expand file tree Collapse file tree 2 files changed +36
-5
lines changed Expand file tree Collapse file tree 2 files changed +36
-5
lines changed Original file line number Diff line number Diff line change @@ -614,11 +614,11 @@ def get_loaded_model(model_path, file)
614614
615615 # Handle Rails apps with collapsed model paths
616616 model_paths = model_paths
617- . select do |model_path |
618- defined? ( Rails ) &&
619- Rails . autoloaders . main . collapse_dirs . any? &&
620- Rails . autoloaders . main . collapse_dirs . select { |path | path . match ( model_path ) }
621- end . map { |model_path | model_path . sub ( /\/ models/ , '' ) }
617+ . select do |mpath |
618+ defined? ( Rails ) &&
619+ Rails . autoloaders . main . collapse_dirs . any? &&
620+ Rails . autoloaders . main . collapse_dirs . select { |path | path . match ( mpath ) }
621+ end . map { |mpath | mpath . sub ( /\/ models/ , '' ) }
622622
623623 model_paths
624624 . map { |path | get_loaded_model_by_path ( path ) }
Original file line number Diff line number Diff line change @@ -1892,6 +1892,37 @@ class FooInsideBar < ActiveRecord::Base
18921892 expect ( klass . name ) . to eq ( 'Bar::FooInsideBar' )
18931893 end
18941894 end
1895+
1896+ context 'when class Bar::Foo is defined in Rails collapsed directory' do
1897+ before do
1898+ Rails = double ( 'Rails' )
1899+ # rubocop:disable RSpec/MessageChain
1900+ allow ( Rails ) . to receive_message_chain ( :autoloaders , :main , :collapse_dirs ) { Set . new ( [ "bar/models" ] ) }
1901+ # rubocop:enable RSpec/MessageChain
1902+ $LOAD_PATH. unshift ( dir )
1903+ end
1904+
1905+ let :dir do
1906+ AnnotateModels . model_dir [ 0 ]
1907+ end
1908+
1909+ let :filename do
1910+ 'bar/models/foo.rb'
1911+ end
1912+
1913+ let :file_content do
1914+ <<~EOS
1915+ module Bar
1916+ class Foo < ActiveRecord::Base
1917+ end
1918+ end
1919+ EOS
1920+ end
1921+
1922+ it 'works' do
1923+ expect ( klass . name ) . to eql ( 'Bar::Foo' )
1924+ end
1925+ end
18951926 end
18961927
18971928 context 'when class is defined inside module and class name is not capitalized normally' do
You can’t perform that action at this time.
0 commit comments