Saya semacam baru ke bundler dan file yang dihasilkannya. Saya memiliki salinan repo git dari GitHub yang sedang dikontribusikan oleh banyak orang, jadi saya terkejut menemukan bahwa bundler membuat file yang tidak ada dalam repo dan tidak ada dalam .gitignore
daftar.
Karena saya telah memotongnya, saya tahu menambahkannya ke repo tidak akan merusak apa pun untuk repo utama, tetapi jika saya melakukan permintaan tarik, apakah itu akan menimbulkan masalah?
Haruskah Gemfile.lock
dimasukkan dalam repositori?
git
version-control
bundler
aarona
sumber
sumber
Jawaban:
Dengan anggapan Anda tidak sedang menulis rubygem, Gemfile.lock harus ada di repositori Anda. Ini digunakan sebagai snapshot dari semua permata yang diperlukan dan dependensinya. Dengan cara ini bundler tidak perlu menghitung ulang semua dependensi permata setiap kali Anda menggunakan, dll.
Dari komentar cowboycoded di bawah ini:
Inilah artikel yang bagus menjelaskan apa file kunci itu.
sumber
Masalah sebenarnya terjadi ketika Anda bekerja pada aplikasi Rails open-source yang perlu memiliki adaptor database yang dapat dikonfigurasi. Saya sedang mengembangkan cabang Rails 3 dari Fat Free CRM. Preferensi saya adalah postgres, tetapi kami ingin database default menjadi mysql2.
Dalam hal ini,
Gemfile.lock
masih perlu diperiksa dengan set permata default, tetapi saya perlu mengabaikan perubahan yang telah saya buat di mesin saya. Untuk mencapai ini, saya menjalankan:dan untuk membalikkan:
Ini juga berguna untuk memasukkan sesuatu seperti kode berikut di blog Anda
Gemfile
. Ini memuat permata adaptor basis data yang sesuai, berdasarkan database.yml Anda.Saya tidak bisa mengatakan apakah ini merupakan praktik terbaik yang mapan atau tidak, tetapi ini berhasil bagi saya.
sumber
Rekan kerja saya dan saya memiliki Gemfile.lock yang berbeda, karena kami menggunakan platform yang berbeda, windows dan mac, dan server kami adalah linux.
Kami memutuskan untuk menghapus Gemfile.lock di repo dan membuat Gemfile.lock.server di git repo, seperti database.yml. Kemudian sebelum menyebarkannya di server, kami menyalin Gemfile.lock.server ke Gemfile.lock di server menggunakan cap deploy hook
sumber
Setuju dengan r-dub, simpan di kontrol sumber, tetapi bagi saya, manfaat sebenarnya adalah ini:
kolaborasi dalam lingkungan yang identik (mengabaikan windoh dan hal-hal linux / mac). Sebelum Gemfile.lock, dude berikutnya untuk menginstal proyek mungkin melihat semua jenis kesalahan yang membingungkan, menyalahkan dirinya sendiri, tapi dia hanya orang yang beruntung mendapatkan versi permata super berikutnya, memecahkan dependensi yang ada.
Lebih buruk lagi, ini terjadi di server, mendapatkan versi yang belum diuji kecuali didisiplinkan dan menginstal versi yang tepat. Gemfile.lock membuat ini eksplisit, dan itu akan secara eksplisit memberi tahu Anda bahwa versi Anda berbeda.
Catatan: ingat untuk mengelompokkan hal-hal, seperti: pengembangan dan: tes
sumber
Dokumen Bundler menjawab pertanyaan ini juga:
ASLI: http://gembundler.com/v1.3/rationale.html
EDIT: http://web.archive.org/web/20160309170442/http://bundler.io/v1.3/rationale.html
Lihat bagian yang disebut "Memeriksa Kode Anda ke dalam Kontrol Versi":
sumber
Tidak ada Gemfile.lock berarti:
-> Selalu periksa di Gemfile.lock, buat travis hapus jika Anda ingin ekstra teliti https://grosser.it/2015/08/14/check-in-your-gemfile-lock/
sumber
Sedikit terlambat ke pesta, tetapi jawaban masih butuh waktu dan orang asing membaca untuk memahami masalah ini. Jadi saya ingin meringkas apa yang saya ketahui tentang Gemfile.lock.
Saat Anda membangun Aplikasi Rails, Anda menggunakan versi permata tertentu di mesin lokal Anda. Jika Anda ingin menghindari kesalahan dalam mode produksi dan cabang lainnya, Anda harus menggunakan satu file Gemfile.lock itu di mana-mana dan memberi tahu bundler
bundle
untuk membangun kembali permata setiap kali ada perubahan.Jika
Gemfile.lock
telah berubah pada mesin produksi Anda dan Git tidak membiarkan Andagit pull
, Anda harus menulisgit reset --hard
untuk menghindari perubahan file dan menulisgit pull
lagi.sumber