Saya sedang menyelidiki aplikasi rel - server prod memiliki dua versi dari permata tertentu yang terpasang, bagaimana cara mengetahui versi mana yang digunakan aplikasi prod?
ruby-on-rails
rubygems
Steve Brewer
sumber
sumber
Jawaban:
Di Rails 3 dan Rails 4, gunakan
bundle show
Di Rails 2,
rake gems
akan mencetak permata, dependensi, dan versi apa yang diinstal, dibekukan, dll.sumber
bundle show | grep gem_name
, contoh untuk kompas:bundle show | grep compass
Jika Anda menggunakan bundler, maka Anda bisa mendapatkan versinya dari
sumber
bundle info [gemname]
sebagai gantinya.Saya membutuhkan waktu lebih lama dari yang diharapkan untuk menemukan dan memilah-milah informasi ini, jadi saya ingin mempostingnya di sini di satu tempat agar dapat dilihat orang lain. Saya juga ingin menjelaskan ini sedikit untuk Rails 3:
script / about telah diganti dengan
rake about
Detailnya ada di sini . Jika Anda tertarik, daftar semua perubahan baris perintah untuk Rails 3 dapat ditemukan di sini .rake gems
tidak bekerja di Rails 3. Sebaliknya, Anda harus menggunakanbundle show
Sebagai contoh, Anda dapat menyimpan semua versi permata Anda ke file untuk dilihat dengan:
gem list > all_gems.txt
dan Anda dapat melihat versi apa yang digunakan aplikasi Rails Anda dengan:
bundle show > project_gems.txt
Menggunakan editor seperti Vim Anda dapat dengan mudah menggunakan vimdiff untuk melihat perubahannya
sumber
Mungkin ada cara yang lebih langsung untuk mengetahuinya, tetapi jika Anda memuat konsol dan memerlukan versi tertentu seperti:
Ini akan memberi tahu Anda versi apa yang sudah diaktifkan:
sumber
Di terminal
atau
Sebagai contoh:
sumber
Ada juga daftar di
Gemfile.lock
, terletak di direktori root aplikasi Anda.Untuk alasan ini saya meninggalkan
Gemfile.lock
keluar dari saya.gitignore
. Ini telah menyelamatkan saya lebih dari sekali ketika saya lupa menentukan versi permataGemFile
, dan permata diperbarui dengan perubahan yang melanggar.sumber
Coba gunakan
script/about
. Andaconfig/environment.rb
juga memiliki informasi tentang itu.Di Anda,
config/environment.rb
Anda dapat menentukan versigem
aplikasi tertentu yang harus digunakan. Namun jika Anda memiliki beberapa versi yanggem
terinstal di mesin Anda dan Anda tidak menentukan versinya, versi terbaru dari permata itu akan digunakan oleh aplikasi.sumber
Ini akan menampilkan semua permata yang cocok misalnya jika ada yang melakukannya
Maka outputnya adalah sebagai berikut
sumber
script/about
akan memberi tahu Anda versi permata inti Rails dan Rack yang Anda gunakan, tetapi tidak yang lainnya. Idealnya, jika Anda melihat ke dalamconfig/environment.rb
, seharusnya ada bagian yang terlihat seperti ini:Dengan sedikit keberuntungan, pembuat aplikasi akan memasukkan permata dan versi yang diperlukan di sana. Namun, versinya adalah opsional dalam file ini, dan pada akhirnya tidak ada yang menghentikan pengembang yang tidak berpengalaman untuk hanya menampar
require 'rubygems'; require 'some_random_thing'
di bagian atas file yang diberikan.Jika Anda melihat bahwa permata diperlukan, tetapi tidak ada versi yang ditentukan, Anda dapat mengetik
gem list
untuk melihat semua versi dari semua permata di sistem. Secara default, ini akan menggunakan yang terbaru yang tersedia.sumber
Mungkin itulah yang dapat Anda gunakan:
sumber
gem which gem_name
bundel menunjukkan nama permata Ie untuk merancang Anda harus menulis seperti
dan itu akan mencetak versi permata saat ini.
sumber
coba yang ini untuk permata lokal:
Jika Anda menggunakan bundel:
sumber
Dalam versi yang lebih baru, digunakan
bundle show gem_name
sumber
Jika Anda menggunakan bundler, maka Anda bisa mendapatkan versinya menggunakan:
sumber
Di Gemfile, seharusnya ada jawabannya:
sumber
Gemfile
tidak akan selalu secara eksplisit menyatakan nomor versi.