1. Ruby / Говнокод #13029

    −85

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    def self.process(site, object = nil, &block)
        dont_unblock = false
        block_res = true
    
        site.lock!
        if site.assets_blocked?
          dont_unblock = true
          raise Asset::BlockedException
        end
        site.assets_blocked = true
        site.save!
    
        block_res = yield if block_given?
    
        return false unless block_res
        return object.save if object
    
        true
      ensure
        site.update_attribute(:assets_blocked, false) unless dont_unblock
      end
    
      # во всех местах, где с ассетами делалось хоть что-нибудь, копипастился такой кусок:
    
          result =
          begin
            @asset = @site.assets.new
            @asset.process do
              @asset.attached = params[:file]
              @asset.folder_path = params[:path]
            end
          rescue Asset::BlockedException
            render json: { errors: [I18n.t("layout.assets.errors.assets_blocked")] } and return
          end

    По мотивам http://govnokod.ru/13027: транзакции изобретены не нами, давайте сделаем их сами!

    Запостил: whitequark, 21 Мая 2013

    Комментарии (2) RSS

    Добавить комментарий