كيفية معرفة أي إصدار من جوهرة على القضبان التطبيق هو استخدام

StackOverflow https://stackoverflow.com/questions/1621405

  •  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'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top