Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Private pods - best practices

Private pods - best practices

A pretty opinionated talk for CocoaPods state of the union (WWDC) event.

The talk is a result of some practices applied after dealing with private pods in a bigger team for quite awhile. Opinions are my own and you shouldn't take them as facts.

Marin Usalj

June 09, 2014
Tweet

More Decks by Marin Usalj

Other Decks in Programming

Transcript

  1. LOCAL PODS
    BEST PRACTICES

    View Slide

  2. MARIN USALJ
    @SUPERMARIN

    View Slide

  3. MARIN USALJ
    @SUPERMARIN

    View Slide

  4. DEVELOPER! DEVELOPER!
    DEVELOPER!
    @YAMMER

    View Slide

  5. Alcatraz
    Kiwi
    xcpretty
    Objective[Sugar,Record]
    ...

    View Slide

  6. REDACTED

    View Slide

  7. MAGIC TRICK

    View Slide

  8. 11? TOO BAD

    View Slide

  9. DITCH THE SPEC SERVER
    WRITE MODULAR CODE
    TEST COMPONENTS TOGETHER

    View Slide

  10. WHY

    View Slide

  11. DITCH THE SPEC SERVER

    View Slide

  12. PRIVATE SPEC SERVER
    edit source
    commit
    tag
    publish podspec

    View Slide

  13. NO PRIVATE SPEC SERVER
    edit source
    commit
    tag

    View Slide

  14. NEW DEVELOPERS NEED TO
    ADD THE PRIVATE SERVER
    WHERE DOES THE POD COME FROM?

    View Slide

  15. NO PRIVATE SPEC SERVER
    USE :GIT
    pod 'SiliconKit', :git => 'pods.local/siliconkit.git'
    OPTIONALLY, USE :TAGS
    pod 'SiliconKit', :git => '...', :tag => '1.0.3'

    View Slide

  16. MODULAR CODE

    View Slide

  17. !"" Source
    # !"" Data
    # !"" Investors
    # !"" Networking
    # # !"" Authentication
    # # !"" Companies
    # # !"" Investitions
    # $"" Presenters

    View Slide

  18. VALUES AS
    BOUNDRIES
    TAKE A VALUE, RETURN A VALUE. NO DEPS.

    View Slide

  19. SCDTHREAD -> SCDFORMATTER ->
    NSSTRING

    View Slide

  20. SCDTHREAD.RECIPIENTS -> NSARRAY ->
    SCDFORMATTER -> NSSTRING

    View Slide

  21. TESTING
    DHH IS DEAD. LONG LIVE TDD

    View Slide

  22. HOW DO WE RUN
    THEM?

    View Slide

  23. XCPROJCEPTION

    View Slide

  24. TWO PODSPECS
    SILICONKIT.PODSPEC
    SILICONKITTESTS.PODSPEC

    View Slide

  25. CAN WE DO BETTER?

    View Slide

  26. EXCLUSIVE PODSPECS
    s.subspec 'ARC' do |arc|
    arc.source_files = 'SiliconKit/**/*.{h,m}'
    arc.requires_arc = true
    end
    s.test_spec do |test|
    test.source_files = 'SiliconKitTests/**/*.{h,m}'
    test.framework = 'XCTest'
    test.dependency 'Kiwi/ARC'
    test.dependency 'Kiwi/NonARC'
    end

    View Slide

  27. CONTINUOUS
    INTEGRATION
    TEST ALL THE COMPONENTS SEPARATELY
    TEST ALL THE COMPONENTS TOGETHER

    View Slide

  28. View Slide

  29. SEPARATELY
    QUICK FEEDBACK
    EASY TO SPOT A PROBLEM

    View Slide

  30. TOGETHER
    SLOWER
    SLEEP WELL

    View Slide

  31. THANKS
    @ORTA
    TWILIO
    ALTCONF

    View Slide