I've just done the same thing a couple minutes ago,
tracking into source code to find out what's wrong with it.
I notice that in merb-core.rb: 497
def load_config(options = {})
Merb::Config.setup({ :log_file => STDOUT, :log_level
=> :warn, :log_auto_flush => true }.merge(options))
Merb::BootLoader::Logger.run
end
Here Merb make default :log_file to be STDOUT,
which is an IO instance, and in merb-core/bootloader.rb: 294
Merb::Config[:log_stream] = File.open(Merb::Config[:log_file], "w
+") if Merb::Config[:log_file]
It suppose :log_file should refer a String, not an IO.