Въпроси за Git и Github, bundle update и Gemfile.lock

  1. Слагам началото на тема, в която да задаваме въпроси за Git. Ако кажете, че не е уместно тук, а направо в Stackoverflow, тогава да я закрием. Та конкретния ми въпрос:

    Имам репо ruby-lectures с 2 remote-а - origin, който е форкнатото репо в моя акаунт в Github и upstream, което е оригиналното репо на fmi. Днес направих следното: навигирам в конзолата в папка ruby-lectures и пускам git pull upstream master, за да сваля последните промени от официалното репо. Понеже имах някои проблеми с компилацията на лекции пуснах bundle update, като bundler-a обнови някои gem-ове. В следствие на това се промени леко и Gemfile.lock файла. Сега въпросът ми е - как да го изключа този файл от бъдещи PR-и без да го слагам в .gitignore? Единственото, което ми идва на ум е да checkout-вам комита на master-бранча преди тази промяна на Gemfile.lock и от там да правя нов бранч, в/у който да правя промените, които искам, но това ми се струва не много правилно.

    Редакция: Доуточняване на заглавието (Петко)

  2. Здравей,

    1. Gemfile.lock файлът осигурява използването на едни и същи версии на нужните gem-ове от всички разработчици на проекта. Така че в никакъв случай не бива да се игнорира и е гадно да не е в синхрон с публичното repo -- това може да доведе до неочаквани резултати.

    2. Какви проблеми имаше с компилацията на лекциите и bundle update реши ли ги? Ако да, как точно ги реши – в кой gem беше проблемът? Коя беше проблемната версия и коя версия работи? На кои gem-ове точно дойдоха нови версии (git diff Gemfile.lock трябва да ти подскаже)? Обновяването на gem-овете има ли някакви други странични ефекти?

    Та, след като отговориш на въпросите от 2, би трябвало да решиш дали да си checkout-неш upstream версията на Gemfile.lock или да направиш PR с новата му версия.

  3. Ами получи се много странен bug. Като run-на bundle exec thor lecture 4 в компилираната лекция текста в някои слайдове просто липсваше и по-конкретно частите, които бяха ruby код. Например слайд 7 при изглеждаше така:

    Анонимни функции в Ruby се дефинират с lambda. Имат три начина на извикване:
    
    За нещастие, не може да извиквате така: double(2). Това е несъвместимо с изтърваването на скобите при извикването на метод.
    

    т.е. всичко м/у тези 2 изречения липсваше. Затова преди да ви питам какъв е проблемът, реших да update-на всички gem-ове, за да съм сигурен, че нещо не се е счупило. Проблемът засега не знам дали се реши, защото сега пък след update-а като run-вам thor lecture излиза нова грешка:

    ARNING: unable to load thorfile "/Users/XXX/rails_projects/ruby-lectures/Thorfile": uninitialized constant Slim::EmbeddedEngine
    /Users/XXX/rails_projects/ruby-lectures/lib/slides.rb:20:in `<top (required)>'
    

    но това ще си го debug-вам допълнително. Може би ще пробвам следното:

    1. rvm gemset empty
    2. checkout на upstream
    3. bundle install
  4. Подобни неща не се правят на сляпо – първо намираш бъга, после установяваш какво го причинява. Ако това, което го причинява е бъг в някой gem, тогава гледаш дали този бъг не е поправен в нова версия. Ако е, чак тогава преминаваш към ъпдейтване на gem-а.

    Добър план за действие, действай по него.

Трябва да сте влезли в системата, за да може да отговаряте на теми.