Лично я бы немного разбил вещи - объект, представляющий запись журнала, действительно не должен беспокоиться о том, как он должен его сохранять, поэтому я, вероятно, создал бы MySQLObjectStore и FileObjectStore, которые вы можете настроить отдельно, и получает объект для сохранения. Вы можете дать вашему классу Object переменную класса, которая содержит тип хранилища, который будет вызываться при сохранении.
class Object
cattr_accessor :store
def save
@@store.save(self)
end
end
class MySQLObjectStore
def initialize(connection_string)
# Connect to DB etc...
end
def save(obj)
# Write to database
end
end
store = MySQLObjectStore.new("user:password@localhost/database")
Object.store = store
obj = Object.new(foo)
obj.save