سؤال

لقد كنت قاضيا اليسار واليمين مع القضبان 3 والغفل. هناك عدد قليل من الأحجار الكريمة التي لا تعمل بشكل صحيح إذا لم يتم تحميل تطبيق القضبان بعد. Factory_Girl و Anda هي أمثلة، حتى على فرع Rails3. أخذ يجب على كمثال، عند محاولة تشغيل rake test:units أحصل على الخطأ التالية:
DEPRECATION WARNING: RAILS_ROOT is deprecated! Use Rails.root instead. (called from autoload_macros at c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:40) c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'join': can't convert #<Class:0x232b7c0> into String (TypeError) from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'block in autoload_macros' from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'map' from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'autoload_macros' from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/rails.rb:17:in '<top (required)>'

حفر أعمق قليلا في Lib / Anda / Rails، أرى هذا:
root = if defined?(Rails.root) && Rails.root
Rails.root
else
RAILS_ROOT
end
# load in the 3rd party macros from vendorized plugins and gems
Shoulda.autoload_macros root, File.join("vendor", "{plugins,gems}", "*")

لذلك ... ما يحدث هنا في حين يتم تعريف القضبان. وروح، القضبان. من الواضح أن تطبيق القضبان لم يتم تهيئة بعد. مع Rails3 باستخدام BONDLER الآن، كان هناك بعض Hubub على الجانب الحيوي حول القدرة على تحديد أمر مطلوب فيه الأحجار الكريمة، لكنني لست متأكدا مما إذا كان هذا من شأنه أن يحل المشكلة في متناول اليد.
في نهاية المطاف أسئلتي هي: عند التعرف بالضبط على ملف البيئة.روب (الذي تهيئة التطبيق بالفعل) هل هناك أي ضرر لتهدئة عند تهيئة التطبيق وحدثه قبل خط Bundler.Require في التكوين / التطبيق. لقد حاولت اختراق BOUNDLER لتحديد الأمر بنفسي، ولديه جوهرة القضبان تم سحبه أولا، لكنه لا يبدو لي أن تتطلب جوهرة القضبان تهيئة التطبيق بالفعل.
كما يتم استدعاء هذا الخط (في التكوين / التطبيق

# Auto-require default libraries and those for the current Rails environment. Bundler.require :default, Rails.env

هل كانت مفيدة؟

المحلول

حسنا، كان من السهل إلى حد ما أن تتبع هذا إلى أسفل. يتم سحب جميع مكتبات القضبان في application.rb. وبعد يتم تهيئة التطبيق نفسه في environment.rb.

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