لدي جوهرة تثبيت ولكن تتطلب 'gemname' لا يعمل.لماذا ؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

السؤال أنا حقا يسأل هو لماذا تتطلب لا تأخذ اسم gem.أيضا ، في حال لم يحدث ذلك, ما هو أسهل طريقة للعثور على سر الرقية تتطلب الشيء اللعين!?

كمثال إذا كان لدي memcache-client تثبيت ثم يجب أن يتطلب ذلك استخدام

require 'rubygems'
require 'memcache'
هل كانت مفيدة؟

المحلول

لا يوجد معيار ما الملف تحتاج إلى تضمين هو.ومع ذلك هناك بعض يتبع عادة الاتفاقيات التي يمكنك أن تتبع محاولة الاستفادة من:

  • في كثير من الأحيان يسمى ملف نفس اسم gem.لذلك require mygem سوف تعمل.
  • في كثير من الأحيان الملف فقط .rb الملف في ليب فرعي من الأحجار الكريمة, حتى إذا كنت يمكن الحصول على اسم gem (ربما أنت itterating من خلال بائع/الأحجار الكريمة في مرحلة ما قبل 2.1 القضبان المشروع) ، ثم يمكنك أن تفقد #{gemname}/lib ل .rb الملفات ، إذا كان هناك واحد فقط ، جميلة أراهن هذا هو واحد تتطلب

إذا كان كل من يعمل ، ثم كل ما يمكنك القيام به هو أن ننظر إلى جوهرة دليل (التي يمكنك أن تجد من خلال تشغيل gem environment | grep INSTALLATION | awk '{print $4}' و البحث في دليل ليب, وربما كنت سوف تحتاج إلى قراءة الملفات و نأمل ان يكون هناك تعليق شرح ماذا تفعل

نصائح أخرى

نظام بلدي أيضا لا يبدو أن تعرف عن جواهر روبي' الوجود - إلا إذا كنت أقول ذلك.إن 'مطلوب' الأمر يحصل الكتابة بواسطة جواهر روبي بحيث يمكن تحميل الأحجار الكريمة, ولكن لم يكن لديك جواهر روبي المطلوبة بالفعل ليس لديها أي فكرة عن كيفية القيام بذلك.لذلك إذا كنت تكتب الخاصة بك ، يمكنك القيام به:

require 'rubygems'
require 'gem-name-here'

إذا كنت تقوم بتشغيل رمز لشخص آخر ، يمكنك أن تفعل ذلك على سطر الأوامر:

ruby -r rubygems script.rb

أيضا هناك متغير بيئة روبي يستخدم لتحديد ما ينبغي أن تصل حمولة على بدء التشغيل:

export RUBYOPT=rubygems

(من http://www.rubygems.org/read/chapter/3.متغير البيئة شيء ذكر لي من قبل أوريون إدواردز)

(إذا كان "تتطلب 'جواهر روبي' لا يعمل بالنسبة لك ، غير أن هذه النصيحة من مساعدة محدودة :)

تتطلب أن الخريطة إلى ملف في روبي المسار.يمكنك معرفة أين الأحجار الكريمة تثبيت قبل تشغيل 'جوهرة البيئة' (ابحث عن دليل التثبيت):

kburton@hypothesisf:~$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.2.0
  - RUBY VERSION: 1.8.7 (2008-08-08 patchlevel 71) [i686-linux]
  - INSTALLATION DIRECTORY: /usr/local/ruby/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/local/ruby/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/ruby/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /usr/local/ruby/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
kburton@editconf:~$ 

ثم يمكنك أن تبحث عن معين .ملفات rb كنت تحاول تتطلب.بالإضافة إلى ذلك ، يمكنك طباعة محتويات $:من irb لرؤية قائمة من المسارات التي روبي سيتم البحث عن وحدات:

kburton@hypothesis:~$ irb
irb(main):001:0> $:
=> ["/usr/local/ruby/lib/ruby/site_ruby/1.8", "/usr/local/ruby/lib/ruby/site_ruby/1.8/i686-linux", "/usr/local/ruby/lib/ruby/site_ruby", "/usr/local/ruby/lib/ruby/vendor_ruby/1.8", "/usr/local/ruby/lib/ruby/vendor_ruby/1.8/i686-linux", "/usr/local/ruby/lib/ruby/vendor_ruby", "/usr/local/ruby/lib/ruby/1.8", "/usr/local/ruby/lib/ruby/1.8/i686-linux", "."]
irb(main):002:0>

أيضا القضبان الناس يجب أن نتذكر أن قم بإعادة تشغيل خادم القضبان بعد تثبيت الأحجار الكريمة

تحتاج إلى تضمين "جواهر روبي" فقط إذا قمت بتثبيت جوهرة باستخدام جوهرة .وإلا سر الرقية أن تصل النار irb و محاولة تركيبات مختلفة .كما يمكنك تمرير -أنا خيار مترجم روبي بحيث تشمل التركيب الدليل من الأحجار الكريمة ، LOAD_PATH .علما بأن $LOAD_PATH هو مجموعة , مما يعني أنك يمكن أن تضيف الدلائل إلى أنه من ضمن السيناريو الخاص بك.

السؤال أنا حقا يسأل هو لماذا تتطلب لا تأخذ اسم gem.

تثبيت جوهرة يحصل الملفات على النظام الخاص بك.فإنه لا يجعل من أي مطالبات إلى ما تلك الملفات سوف يطلق.
كما لوري نقطة هناك العديد من الاتفاقيات كيف وهم اسمه, ولكن لا يوجد شيء لفرض أن العديد من جوهرة الكتاب للأسف لا تلتصق بهم.

أيضا ، في حال لم يحدث ذلك, ما هو أسهل طريقة للعثور على سر الرقية تتطلب الشيء اللعين!?

قراءة المستندات الخاصة بك gem ؟
أجد بالبحث عن rdoc gemname سوف تجد عادة الرسمية rdocs الخاص بك جوهرة, التي عادة ما تظهر لك كيفية استخدامها.

Memcache هو ربما ليس أفضل سبيل المثال ، كما أنها تفترض سوف يكون استخدامه من القضبان ، و 'تحتاج' سيكون قد تم بالفعل بالنسبة لك ، ولكن معظم تلك الأخرى رأيت الأمثلة التي تبين الصحيح 'مطلوب' الطلاسم

قضية جريت إلى أن الفعلية بني جوهرة لا بما في ذلك كافة الملفات التي يجب أن يكون.

هذه المسألة مع files أنه كان هناك خطأ في بناء الجملة في gemspec ، ولكن عدم وجود أخطاء ألقيت خلال بناء.

فقط إضافة هذا هنا في حالة أي شخص آخر يعمل في نفس القضية.

أنا أيضا عانيت من هذه المشكلة منذ تثبيت OS X الأسد ، وجدت أنه حتى إذا ركضت البرمجية التالية سوف لا يزال الحصول على رسالة تحذير.require 'rubygems' require 'nokogiri'

لقد جربت الكثير من الحلول التي نشرت هنا و على شبكة الإنترنت, ولكن في النهاية عملي حول الحل ببساطة اتبع الإرشادات التي تظهر في http://martinisoftware.com/2009/07/31/nokogiri-on-leopard.html إلى إعادة تثبيت LibXML & LibXSLT من المصدر, لكن ضمان إصدار LibXML أنا ركبت يقابل التي كان من المتوقع من قبل Nokogiri.

مرة واحدة كنت قد فعلت ذلك ، فإن التحذيرات ذهبت بعيدا.

كان لي هذه المشكلة بسبب استخدام rvm و كان يحاول استخدام إصدار خاطئ من روبي.جوهرة في السؤال اللازمة 1.9.2 و أنا قد وضعت 2.0.0 كما الافتراضي الخاص بي!ربما غبية خطأ ولكن أن شخص آخر وصوله إلى هذه الصفحة ربما جعلت.

مشاهدة مصدر جوهرة وتحقق lib الدليل.إذا كان هناك أي rb الملف ثم يجب أن نشير إلى جوهرة الرئيسية rb الملفات في دليل فرعي:

require 'dir/subdir/file'

بالنسبة /lib/dir/subdir/file.rb.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top