Я создал алгоритм сокращения URL с помощью Ruby + MongoMapper
Это простой алгоритм сокращения URL с максимум 3 цифрами
http://pablocantero.com/###
Где каждый # может быть [a-z] или [A-Z] или [0-9]
Для этого алгоритма мне нужно сохранить четыре атрибута на MongoDB (через
MongoMapper)
class ShortenerData
include MongoMapper::Document
VALUES = ('a'..'z').to_a + ('A'..'Z').to_a + (0..9).to_a
key :col_a, Integer
key :col_b, Integer
key :col_c, Integer
key :index, Integer
end
Я создал еще один класс для управления ShortenerData и создания уникального
идентификатор
class Shortener
include Singleton
def get_unique
unique = nil
@shortener_data.reload
# some operations that can increment the attributes col_a, col_b, col_c and index
# ...
@shortener_data.save
unique
end
end
Использование Shortener
Shortener.instance.get_unique
Я сомневаюсь, как я могу синхронизировать get_unique, мое приложение будет
развернут на героку, по параллельным запросам можно звонить
Shortener.instance.get_unique