كيفية معرفة أي إصدار من جوهرة على القضبان التطبيق هو استخدام
-
06-07-2019 - |
سؤال
انا التحقيق القضبان التطبيق - prod الملقم اثنين نسخة من معين جوهرة تثبيت, كيف يمكنني معرفة أي إصدار من همز التطبيق هو استخدام ؟
المحلول
في القضبان 3 و 4 القضبان، واستخدام bundle show
في القضبان 2، وسوف rake gems
بطباعة ما الأحجار الكريمة، والتبعيات، والإصدارات المثبتة، المجمدة، وما إلى ذلك.
نصائح أخرى
إذا كنت تستخدم محزم، ثم يمكنك الحصول على نسخة من
bundle show [gemname]
استغرق مني وقتا أطول من المتوقع العثور على فرز من خلال هذه المعلومات إذا أردت بعد ذلك هنا في مكان واحد من أجل الآخرين لعرض.أنا أيضا أرغب في توضيح هذا قليلا عن القضبان 3:
النصي/عن تم استبدال مع
rake about
التفاصيل هنا.إذا كنت مهتما قائمة من كل سطر الأوامر التغييرات القضبان 3 ويمكن العثور عليها هنا.rake gems
لا يعمل في القضبان 3.بدلا من ذلك يجب عليك استخدامbundle show
وعلى سبيل المثال ، يمكنك حفظ جميع الإصدارات من الأحجار الكريمة الخاص بك إلى ملف للعرض مع:
gem list > all_gems.txt
و يمكنك أن ترى ما هي الإصدارات الخاصة بك القضبان التطبيق يستخدم مع:
bundle show > project_gems.txt
باستخدام محرر مثل همة يمكنك بسهولة استخدام vimdiff لمشاهدة التغييرات
وربما هناك طريقة أكثر مباشرة لمعرفة ذلك، ولكن إذا قمت بتحميل ما يصل وحدة وتتطلب إصدار معين مثل ذلك:
gem 'RedCloth', '3.0.4'
ووسوف اقول لكم ما هو إصدار تنشيط بالفعل:
=> Gem::LoadError: can't activate RedCloth (= 3.0.4, runtime) for [], already activated RedCloth-4.2.2
وهناك أيضا قائمة في Gemfile.lock
، وتقع في الدليل الجذر من التطبيق الخاص بك.
لهذا السبب أترك Gemfile.lock
من بلدي .gitignore
. لقد أنقذ هذا لي أكثر من مرة عندما كنت قد نسيت لتحديد النسخة جوهرة في GemFile
، والأحجار الكريمة حصلت على تحديث مع كسر التغييرات.
في محطة
bundle show [gem-name]
bundle show | grep [gem-name]
أو
gem list | grep [gem-name]
[جوهرة اسم] ينبغي الاستعاضة كاسم جوهرة أنت ذاهب للبحث عن.
وحاول استخدام script/about
. له config/environment.rb
الخاص أيضا معلومات عن ذلك.
في config/environment.rb
الخاص بك يمكنك تحديد أي نسخة من gem
وجه الخصوص يجب أن تستخدم التطبيق. ولكن إذا كان لديك إصدارات متعددة من gem
المثبتة على الجهاز الخاص بك وأنت لم تحدد الإصدار، وسيتم استخدام أحدث إصدار من هذا الأحجار الكريمة من قبل التطبيق.
gem list <gemname>
ووسوف تظهر جميع الأحجار الكريمة مطابقة منها مثلا إذا كان بعض واحد يفعل
gem list rack
وبعد عشر الناتج سيكون على النحو التالي
*** LOCAL GEMS ***
rack (1.6.4)
rack-mount (0.6.14)
rack-test (0.6.3, 0.6.2, 0.5.7)
وscript/about
سوف اقول لكم ما إصدارات القضبان الأساسية والأحجار الكريمة الرف الذي تستخدمه، ولكن ليس أي شيء آخر. من الناحية المثالية، إذا نظرت في config/environment.rb
، يجب أن يكون هناك المقطع الذي يبدو مثل هذا:
# Specify gems that this application depends on and have them installed with rake gems:install
# config.gem "bj"
# config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
# config.gem "sqlite3-ruby", :lib => "sqlite3"
# config.gem "aws-s3", :lib => "aws/s3"
ومع أي حظ، والمؤلف من التطبيق سيكون قد تضمن أي الأحجار الكريمة والإصدارات المطلوبة هناك. ومع ذلك، فإن الإصدارات اختيارية في هذا الملف، ولا شيء يتوقف في النهاية مطور عديم الخبرة من مجرد الصفع على require 'rubygems'; require 'some_random_thing'
في الجزء العلوي من أي ملف معين.
إذا كنت ترى أن جوهرة يتم المطلوب، ولكن لم يتم تحديد الإصدار، ويمكنك كتابة gem list
أن نرى جميع الإصدارات من جميع الأحجار الكريمة على النظام. افتراضيا، فإنه سيتم استخدام أحدث واحد المتاحة.
bundle exec gem which gem_name
هل ربما ما يمكنك استخدامها:
$› bundle exec gem which rails
/Users/xxxx/.rvm/gems/ruby-2.1.2@gemset/gems/railties-4.1.7/lib/rails.rb
وهذه محاولة واحدة للجوهره المحلية:
gem list gemname | grep -P '(^|\s)\Kgemname(?=\s|$)'
إذا كنت تستخدم حزمة:
bundle exec gem list gemname | grep -P '(^|\s)\Kgemname(?=\s|$)'
وعرض حزمة gemname أي بمعنى لابتكار لديك لكتابة مثل
bundle show devise
ووسوف طباعة النسخة جوهرة الحالي.
في Gemfile، ينبغي أن يكون هناك الجواب:
gem 'rails', '4.0.0.rc1'