diff --git a/CHANGELOG.md b/CHANGELOG.md index f29ff59956..1eba9d4ad9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,6 +47,9 @@ For instructions on upgrading to newer versions, visit ### Resolved Issues +* \#1592 Don't swallow exceptions from index generation in the create_indexes + rake task. + * \#1589 Allow assignment of empty array to HABTM when no documents are yet loaded into memory. diff --git a/lib/rails/mongoid.rb b/lib/rails/mongoid.rb index 7f9455a31d..bb561b032d 100644 --- a/lib/rails/mongoid.rb +++ b/lib/rails/mongoid.rb @@ -15,22 +15,21 @@ module Mongoid #:nodoc: # # @since 2.1.0 def create_indexes(pattern) - logger = Logger.new($stdout) Dir.glob(pattern).each do |file| logger = Logger.new($stdout) begin model = determine_model(file) - if model - model.create_indexes - logger.info("Generated indexes for #{model}") - else - logger.info("Not a Mongoid parent model: #{file}") - end rescue => e - logger.error %Q{Failed to create indexes for #{model}: + logger.error(%Q{Failed to determine model from #{file}: #{e.class}:#{e.message} #{e.backtrace.join("\n")} - } + }) + end + if model + model.create_indexes + logger.info("Generated indexes for #{model}") + else + logger.info("Not a Mongoid parent model: #{file}") end end end diff --git a/spec/unit/rails/mongoid_spec.rb b/spec/unit/rails/mongoid_spec.rb index ebf09240b2..0d5af13ad4 100644 --- a/spec/unit/rails/mongoid_spec.rb +++ b/spec/unit/rails/mongoid_spec.rb @@ -8,6 +8,26 @@ describe ".create_indexes" do + context "when an exception is raised" do + + let(:model) do + stub + end + + before do + Rails::Mongoid.expects(:determine_model).with( + "spec/app/models/account.rb" + ).returns(model) + model.expects(:create_indexes).raises(Mongo::MongoArgumentError) + end + + it "is not swallowed" do + expect { + Rails::Mongoid.create_indexes("spec/app/models/**/*.rb") + }.to raise_error(Mongo::MongoArgumentError) + end + end + context "with ordinary Rails models" do let(:model_paths) do