Skip to content
This repository has been archived by the owner on Jun 16, 2021. It is now read-only.

Dokku'da yanlış ruby versiyonu kuruluyor #216

Closed
ecylmz opened this issue Aug 15, 2018 · 10 comments · Fixed by #219 or #223
Closed

Dokku'da yanlış ruby versiyonu kuruluyor #216

ecylmz opened this issue Aug 15, 2018 · 10 comments · Fixed by #219 or #223
Assignees

Comments

@ecylmz
Copy link
Member

ecylmz commented Aug 15, 2018

Bunun nedeni, Gemfile'dan ruby versiyonunun kaldırılması. Eğer Gemfile'da ruby versiyonu olmazsa ön tanımlı 2.3.1 kuruluyor. Mevcut deployda sıkıntı yok çünkü daha önce 2.5.1 kullanıldığını biliyor. Bu sorun yalnızca ilk deployda ortaya çıkıyor.

Kısacası Gemfile'a ruby versiyonu yazmak zorundayız.

@roktas
Copy link
Member

roktas commented Aug 15, 2018

Tek yolu Gemfile'a ruby versiyonu yazmak değil. CI tarafında bu iş .ruby-version dosyasıyla kontrol ediliyor, ayrıca Gemfile'a versiyon eklenirse testler ne olur bilmiyorum (muhtemelen ruby-version kazanır). ruby-version deklarasyonu rubocop tarafından da dikkate alınıyor. Bu durumda "ön tanımlı Ruby versiyonu budur" manasında bir .ruby-version dosyası bana daha iyi bir çözüm gibi geliyor. CI gördüğüm kadarıyla zaten versiyonun üzerine basarak test yapıyor, yani o taraf bundan etkilenmez.

@roktas
Copy link
Member

roktas commented Aug 15, 2018

@ecylmz
Copy link
Member Author

ecylmz commented Aug 15, 2018

şu anda https://github.com/omu/nokul/blob/develop/.ruby-version dosyası var ama 2.3.1. kuruyor.
https://devcenter.heroku.com/articles/ruby-support#ruby-versions burada da Gemfile'a yazın dediği için yazmak zorundayız demiştim.

@roktas
Copy link
Member

roktas commented Aug 15, 2018

Yukarıdaki issue'dan dolayı öyle yapıyor. Önerdikleri Gemfile içinde ruby File.read(".ruby-version") satırı. Ama emin olamadım. Gemfile'a doğrudan versiyon yazmak CI testlerini aksatmayacaksa öyle yapalım, aksi halde önerilen workaround kullanılarak .ruby-version üzerinden gidilebilir. Bunun için bir buildpack bile var, ama kullanmayalım lütfen.

@roktas
Copy link
Member

roktas commented Aug 15, 2018

@roktas
Copy link
Member

roktas commented Aug 15, 2018

@msdundar Heroku'nun önerdiği yol şu: https://devcenter.heroku.com/articles/ruby-versions#specifying-a-ruby-version-via-the-environment: Gemfile'da ruby ENV['CUSTOM_RUBY_VERSION'] || '2.5.1' satırı

Bu yöntemle ruby File.read('.ruby-version') yöntemi benzer aslında. İlkinde ortamdan alıyor, ikincisinde dosyadan. İlk yöntem bana daha az invazif geldi, CI'da ortam değişkeni set ediyoruz. Ama lokal geliştirmelerde ruby-version dosyasını dikkate alan araçlar da var (Rubocop gibi). Onları da bir inceleyip nihai kararı verelim derim.

@roktas
Copy link
Member

roktas commented Aug 15, 2018

Son sürümlerde Rubocop Ruby versiyonunu Gemfile.lock'tan alıyor: rubocop/rubocop#5632

@roktas
Copy link
Member

roktas commented Aug 15, 2018

Buna göre 2 yol:

  1. Gemfile ile

    • .ruby-version dosyasını kaldır
    • Ruby versiyonunu ruby ENV['CUSTOM_RUBY_VERSION'] || '2.5.1' olarak Gemfile'da gir
    • CI testlerinde CUSTOM_RUBY_VERSION ortam değişkenini set et
  2. .ruby-version

    • Gemfile'da ruby File.read('.ruby-version') satırı.
    • CI'da değişiklik yok.

Her iki yol da: (1) Dokku'yu memnun ediyor, (2) CI testleri çalışıyor, (3) Tooling sorunsuz (en azından Rubocop, diğerlerini bilmiyorum; .ruby-version kullanmak bir parça daha avantajlı olabilir gelecek durumlar için)

Benim oyum ilk yönteme gider. Bir dosyadan kurtuluyoruz, daha parametrik bir çözüm. Karar her ne olacaksa buna uygun PR yapılmalı.

@roktas
Copy link
Member

roktas commented Aug 15, 2018

@ecylmz senin için de uygunsa ilk çözüm için (Gemfile) bir PR hazırlar mısın bu issue'yu kapatan?

@roktas
Copy link
Member

roktas commented Aug 16, 2018

bk #219

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants