Skip to content

Commit

Permalink
Don't swallow mongo exceptions in the create_indexes rake task. Fixes
Browse files Browse the repository at this point in the history
…#1592
  • Loading branch information
durran committed Jan 14, 2012
1 parent 714d92b commit 41e8ed4
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 9 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
17 changes: 8 additions & 9 deletions lib/rails/mongoid.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 20 additions & 0 deletions spec/unit/rails/mongoid_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 41e8ed4

Please sign in to comment.