2014-01-28 1 views
1

В настоящее время я делаю пессимистичный loking с рельсами 3 + postgresql. Но, похоже, нет способа подтвердить, что блокировка работает, если я не столкнулся с проблемой одновременного тестирования. Невозможно проверить это через консоль?Rails 3: Как просто проверить пессимистическую блокировку на консоли

Пример

User.transaction do 
    u1 = User.find(1, :lock => true) 
    u2 = User.find(1) 
    ## u2 should not be able to do anything right? 
end 

ответ

8

Открыть 2 консоли

консоли 1:

User.transaction do 
    u = User.find(1, :lock => true) 
    sleep(30) 
end 

После того, что выполняется переключатель на консоль 2, то сделать это

консоли 2:

u = User.find(1) 
u.name = "new name" 
u.save! 

После этого вы увидите, что консоль 2 не будет выполнять обновление до тех пор, пока не закончится 30 секунд спящего режима на консоли 1.

 Смежные вопросы

  • Нет связанных вопросов^_^