Pengantar
Seiring pertumbuhan aplikasi Ruby, jumlah perpustakaan eksternal yang digunakan aplikasi ini dapat bertambah pada tingkat yang sama—jika tidak lebih cepat, dalam beberapa kasus. Pertumbuhan ini dapat menimbulkan masalah ketika permata menginstal dependensinya. Jika dua permata bergantung pada versi berbeda dari perpustakaan yang sama, maka menginstal kedua permata berisiko membuat skenario kesalahan karena ketidakcocokan permata. Bundler, permata Ruby, memberi Anda cara mudah untuk mengelola permata ini dan menghindari konflik, memungkinkan Anda untuk fokus pada kode aplikasi Anda daripada memecahkan masalah dengan pustaka dukungan..
Prasyarat
- Versi Ruby – 2.2.1 atau lebih baru
Catatan:artikel ini menggunakan vim untuk mengedit teks. Ganti "vim" dengan editor pilihan Anda jika Anda lebih suka menggunakan alat pengeditan teks yang berbeda. (Dan jika Anda secara tidak sengaja menemukan diri Anda terjebak dalam vim, berikut adalah beberapa tips untuk membantu Anda melepaskan diri.)
.
Mengelola Interdependensi Kompleks
Saat aplikasi Anda semakin kompleks, Anda mungkin melihat konflik versi di kumpulan permata aplikasi Anda. Konflik ini dapat mencegah aplikasi Anda berfungsi dengan benar karena jumlah permata yang Anda gunakan–dan jumlah interdependensi permata–bertambah. Anda mungkin mempertimbangkan untuk menggunakan RVM dengan cara yang lebih ketat, tetapi solusi ini hanya memberi Anda kesempatan untuk mengontrol versi Ruby saat ini dan permata yang terkait–ini tidak menangani masalah ketergantungan permata, yang dapat terjadi di antara versi permata yang berbeda menggunakan versi dasar yang sama dari bahasa Ruby. Menelusuri dependensi semua permata untuk menemukan konflik ini dan mengunduh versi permata yang kompatibel adalah proses yang panjang dan membosankan. Untungnya, kita dapat menggunakan permata Bundler untuk mengelola kumpulan permata kita dan menghilangkan dugaan penggunaan perpustakaan bersama.
.
Memasang Bundler untuk Mengelola Permata
Untuk memulai Bundler, pertama-tama kita harus menginstal permata:
gem install bundler
Catatan, beberapa versi Ruby mungkin menggunakan formulir
gem2.2 install bundler
.
Perintah ini menginstal Bundler ke dalam lingkungan eksekusi Ruby saat ini. Selanjutnya, Anda perlu membuat Gemfile untuk mengelola permata aplikasi Anda. Tambahkan file baru di direktori root aplikasi Anda dan buka untuk diedit:
vim Gemfile
Catatan:Bundler, secara default, mencari nama file
Gemfile
, dikapitalisasi persis seperti yang ditunjukkan. Ini akan gagal, misalnya, jika Anda menamai file Andagemfile
.
Anda dapat menambahkan permata Anda pada saat ini, atau membiarkan file kosong jika Anda tidak memiliki dependensi permata eksternal. Bundler menggunakan Gemfile ini saat mengunduh dan memasang permata untuk aplikasi Anda.
.
Anatomi Gemfile
Gemfile memberi Anda banyak cara berbeda untuk mengelola kumpulan permata aplikasi Anda. Anda dapat, misalnya, menentukan sumber permata baru di Gemfile Anda, yang akan dicari saat menjalankan instalasi:
source 'https://rubygems.org'
Anda dapat dengan mudah menambahkan dependensi permata baru dengan meletakkannya di baris individual, didahului dengan kata gem
. Misalnya, baris berikut menentukan nokogiri
sebagai dependensi permata untuk aplikasi Anda:
gem 'nokogiri'
Anda juga dapat menentukan versi permata tertentu dengan menggunakan sintaks RubyGems yang sudah dikenal. Baris berikut menambahkan permata Rails, tetapi membatasinya ke Rails versi 3.0.0.beta3:
gem 'rails', '3.0.0.beta3'
Anda juga dapat menentukan grup permata yang hanya berjalan di lingkungan tertentu. Misalnya, blok berikut menginstal rspec
, guard
, dan factory_girl
ketika lingkungan Rails adalah test
atau development
:
group :test, :development do gem 'rspec' gem 'guard' gem 'factory_girl' end
Contoh-contoh ini hanyalah permulaan. Ada sejumlah fitur berguna lainnya dari Gemfile di bundler.io.
.
Menginstal Semua Permata Dengan Bundler
Setelah Anda mengisi Gemfile Anda dengan permata untuk dipasang, Anda dapat menginstal semua permata lingkungan Anda saat ini dengan perintah berikut:
bundle install
Perintah ini mem-parsing Gemfile Anda dan melacak semua permata yang ditunjukkan dari sumber yang tersedia baik di sistem Anda maupun di Gemfile itu sendiri. Ini memeriksa semua permata untuk dependensi bersama, dan kemudian menghasilkan file baru (Gemfile.lock
) yang berisi semua permata yang kompatibel dan versinya. Akhirnya, ia bergerak melalui Gemfile.lock
yang dibuat file, menginstal setiap permata yang relevan. Setelah selesai, permata aplikasi Anda akan tersedia untuk digunakan dalam kode aplikasi Anda.
.
Perintah Bundler Berguna Lainnya
Selain menghilangkan semua sakit kepala dalam mengelola permata dengan dependensi bersama, Bundler juga memberi Anda beberapa alat lain yang dapat digunakan untuk mengelola kumpulan permata aplikasi Anda. Berikut adalah beberapa contoh perintah yang mungkin berguna bagi Anda selama pengembangan:
Untuk memperbarui semua permata di Gemfile ke versi terbaru yang kompatibel:
bundle update
Di lingkungan produksi, alih-alih menyelesaikan permata secara dinamis dari semua sumber yang tersedia, Anda mungkin ingin menginstal hanya permata yang ditentukan di Gemfile.lock.
bundle install --deployment
Untuk menjalankan perintah dalam konteks Gemfile aplikasi:
bundle exec XXXX
Tanpa penambahan bundle exec
, perintah XXXX akan dijalankan dalam konteks Ruby sistem, yang mungkin berisi permata yang tidak kompatibel.
Anda dapat meninjau perintah lain yang tersedia, dan tujuan penggunaannya, di sini.
.
Kesimpulan
Masalah umum di antara bahasa pemrograman adalah konsep "neraka ketergantungan", yang muncul ketika dua atau lebih perpustakaan pihak ketiga bergantung pada versi berbeda dari perpustakaan bersama yang sama. Bundler memberi pengembang Ruby alat yang mudah digunakan untuk menginstal dan mengelola kumpulan permata yang kompleks. Ini membantu untuk menyelesaikan semua masalah ketergantungan dan memberi Anda catatan kompatibilitas untuk semua dependensi aplikasi Anda. Melalui penggunaan Bundler, Anda dapat dengan cepat menyelesaikan konflik pada permata yang Anda konsumsi, dan kembali mengerjakan inti dari kode aplikasi Anda.
Atlantic.Net
Atlantic.net menawarkan hosting VPS serta layanan hosting terkelola yang mencakup lapisan layanan terkelola penting bisnis untuk paket hosting Anda. Hubungi kami hari ini untuk informasi lebih lanjut.
.
.