خطأ TZInfo::DataSourceNotFound في بدء تشغيل خادم Rails v4.1.0 على نظام التشغيل Windows

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

سؤال

لقد قمت بإنشاء تطبيق جديد باستخدام Ruby on Rails v4.1.0.عند محاولة بدء تشغيل خادم أو وحدة تحكم على نظام التشغيل Windows، أواجه الخطأ التالي:

$ rails server
Booting WEBrick
Rails 4.1.0 application starting in development on ....

Exiting
c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/tzinfo-1.1.0/lib/tzinfo/data_source.rb:199:
in `rescue in create_default_data_source': 
No timezone data source could be found. To resolve this, either install 
TZInfo::Data (e.g. by running `gem install tzinfo-data`) or specify a zoneinfo 
directory using `TZInfo::DataSource.set(:zoneinfo, zoneinfo_path)`.
(TZInfo::DataSourceNotFound) 
from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/tzinfo-1.1.0/lib/tzinfo/data_source.rb:196:
in `create_default_data_source'

كيف يمكنني حل هذا الخطأ؟

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

المحلول

حل الخطأ

لحل هذا الخطأ، ستحتاج إلى التأكد من تضمين جوهرة tzinfo-data في ملفك Gemfile.

أولا وقبل كل شيء، تحقق من الخاص بك Gemfile لمعرفة ما إذا كان هناك مرجع موجود ل tzinfo-data.إذا لم يكن هناك مرجع بالفعل، فقم بإضافة السطر التالي:

gem 'tzinfo-data'

قد تجد أن هناك بالفعل سطرًا مثل ما يلي:

gem 'tzinfo-data', platforms: [:mingw, :mswin]

إذا كنت تستخدم إصدار 64 بت من Ruby على نظام التشغيل Windows، فقم بإضافة :x64_mingw إلى قائمة المنصات على النحو التالي:

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]

وبدلاً من ذلك، يمكنك إزالة platforms الخيار تماما.

بعد القيام بذلك، تشغيل bundle update في سطر الأوامر لتثبيت جوهرة tzinfo-data وستتمكن بعد ذلك من بدء تشغيل خادم Rails أو وحدة التحكم.


خلفية

ال TZInfo::DataSourceNotFound يتم إثارة الخطأ بواسطة TZInfo، وهو تابع لمكون الدعم النشط في Rails.تبحث TZInfo عن مصدر لبيانات المنطقة الزمنية على نظامك، لكنها تفشل في العثور عليه.

في العديد من الأنظمة المستندة إلى Unix (على سبيل المثال.Linux)، TZInfo قادر على استخدام النظام معلومات المنطقة الدليل كمصدر للبيانات.ومع ذلك، لا يتضمن Windows مثل هذا الدليل، لذا يجب تثبيت جوهرة tzinfo-data بدلاً من ذلك.تحتوي جوهرة tzinfo-data على نفس بيانات Zoneinfo، وقد تم تجميعها كمجموعة من وحدات Ruby.

تُنشئ Rails قيمة افتراضية Gemfile عند إنشاء التطبيق لأول مرة.إذا تم إنشاء التطبيق على نظام التشغيل Windows، فسيتم تضمين تبعية بيانات tzinfo.ومع ذلك (اعتبارًا من الإصدار 4.1.0 من Rails)، يتم حذف هذا :x64_mingw من قائمة الأنظمة الأساسية، لذلك لا يعمل بشكل صحيح على إصدارات Windows 64 بت من Ruby.هذا يجب ان تصلح في إصدارات ريلز المستقبلية.

نصائح أخرى

اضطررت إلى إضافة جواهرين للحصول على الخادم للبدء ..

gem 'tzinfo-data'
جوهرة 'tzinfo'

ثم تثبيت حزمة.

فقط ضع هذا في محطة التطبيق الخاصة بك:

giveacodicetagpre.

ثم قم بتغيير خط GemFile إلى:

giveacodicetagpre.

ثم مرة أخرى في المحطة الخاصة بك:

giveacodicetagpre.

ستحل المشكلة مباشرة.

أضف السطر التالي إلى ملف GEM الخاص بك

بيانات GEM 'TZINFO-Data'، المنصات: [: x64_mingw،: mingw،: mswin]

لقد حدث لي هذا الخطأ عند محاولة تثبيت Redmine في حاوية Docker:

RAILS_ENV=production bundle exec rake db:migrate

أعطاني الخطأ لأن package tzdata لم يتم تثبيته في صورة Ubuntu الخاصة بي.

apt-get update && apt-get install tzdata -y

فعلت الحيلة.

ربما لم يتم تثبيت Tzinfo على نظامك، حاول تثبيته:

giveacodicetagpre.

لقد واجهت هذه المشكلة أيضًا وقمت بإصلاحها عن طريق إضافة كل من :x64_mingw إلى قائمة المنصات ل tzinfo-data, ، والجوهرة "tzinfo" إلى ملف Gemfile.ثم تثبيت الحزمة

لقد واجهت هذه المشكلة على نظام التشغيل macOs Mojave 10.14.5 واكتشفت أن الأمر يتعلق بكيفية عدم قراءة الرابط الرمزي الخاص بي في نظام التشغيل macOs لملفات معلومات المنطقة المتوفرة الصحيحة.

لقد تمكنت من تتبع ذلك من خلال المكان الذي يجب أن تكون فيه الملفات باستخدام الأمرTZInfo::ZoneinfoDataSource.search_path والتي قدمت مخرجات ["/usr/share/zoneinfo", "/usr/share/lib/zoneinfo", "/etc/zoneinfo"].

بدأت أبحث في /usr/share/zoneinfo وكانت هناك ملفات متاحة للقراءة.ومع ذلك، لم تتمكن ريلز من العثور عليها وقراءتها وتنفيذها..؟لذلك قمت بعد ذلك بإنشاء رابط رمزي من الملف الآخر في /usr/share/zoneinfo.default/ ل /etc/zoneinfo (المسار الأخير الذي تبحث عنه TZInfo)

أخيرًا، كان الأمر الذي ساعدني في حل هذه المشكلة هو ln -s /usr/share/zoneinfo.default /etc/zoneinfo

نأمل أن تكون هذه المعلومات مفيدة لشخص ما في المستقبل.

لذلك، لم يبدو أن الأحجار الكريمة تثبت تماما بشكل صحيح، اضطررت إلى القيام بما يلي

gem 'tzinfo-data' جوهرة 'tzinfo'

ثم

Bundle Show لرؤية جميع الأحجار الكريمة

gem gem tzinfo سوف تحصل عليك دليل الأحجار الكريمة

بعد ذلك، انتقل إلى هذا الدليل.ستحتاج إلى لصق بيانات Tzinfo في Tzinfo. في ملف Tzinfo-Data، انتقل إلى .. local_pathname / tzinfo-data-1.2014.5 / lib / tzinfo انسخ جميع محتويات هذا الدليل إلى ... local_pathname / tzinfo-1.2.1 / lib / tzinfo (بالنسبة لي هذا يعني نسخ "بيانات" الملف "و" بيانات "الدليل)

ثم اذهب إلى local_pathname / tzinfo-1.2.1 / lib وفتح الملف، Tzinfo، (وليس الدليل) وإضافة هذا الخط تتطلب "tzinfo / البيانات"

كان هذا الألم لمعرفة

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