كيف يجب أن هيكلة بلدي روبي جوهرة خدمة سطر الأوامر?
-
10-12-2019 - |
سؤال
أنا أكتب جوهرة روبي التي يمكن للمستخدمين تثبيت واستخدام أداة سطر الأوامر روبي للتفاعل مع الخدمة.يمكنك بدء وإيقاف الخدمة (سوف تفرخ قبالة عملية الطفل).
لقد فعلت الكثير من البحوث في أفضل الأشياء لاستخدامها لكتابة خدمة الشبكة ، مثل أورممق/إيفنتماشين وأحصل على كيفية إنشاء جوهرة روبي التي سيتم تثبيت ثنائي يمكنك استخدامها في سطر الأوامر ، ولكن أنا تكافح من أجل وضع بنية رمز جيد.
سوف تأخذ أداة سطر الأوامر الخاصة بي وسيطات مختلفة (سأستخدمها ترولوب) وسوف تستخدم فئات مختلفة للقيام بالأشياء ، واستخدام مختلف الأحجار الكريمة روبي الأخرى.
لست متأكدا من المكان الذي يجب أن أضع فيه ملفات الفصل ، وكيفية طلبها في الملف الثنائي الخاص بي حتى تكون المسارات صحيحة.
المحلول
إلى حد كبير ، سوف روبيجيمس رعاية هذا بالنسبة لك.ستحتاج إلى تضمين الملف التنفيذي الخاص بك في files
القائمة ، ووضعها في executables
في جيمسيك الخاص بك.من الشائع وضع الملف القابل للتنفيذ في bin
في الدليل الخاص بك ، على سبيل المثال.:
$ ls
bin/ myapp.gemspec lib/ Rakefile
$ ls bin
bin/myapp
سوف جيمسيك الخاص بك ثم تبدو وكأنها:
Gem::Specification.new do |s|
s.name = 'myapp'
# whatever else is in your gemspec
s.files = ["bin/myapp","lib/myapp.rb"] # or whatever other files you want
s.executables = ["bin/todo"]
end
في هذه المرحلة ، عندما يقوم المستخدمون بتثبيت تطبيقك عبر روبيجيمز, myapp
سيكون في طريقهم ، و lib
سيكون في لوادباث التطبيق الخاص بك ، لذلك يمكن للتنفيذ الخاص بك ببساطة تبدأ مع:
#!/usr/bin/env ruby
require 'myapp'
# whatever other requires
المشكلة الوحيدة في هذا هو أنه أثناء التطوير ، لا يمكنك القيام بذلك فقط bin/myapp
ويكون تشغيل التطبيق الخاص بك.بعض المطورين يتلاعبون بمسار التحميل عبر $:
أو $LOAD_PATH
, ، لكن هذا يعتبر شكلا سيئا.
إذا كنت تستخدم بوندلر ، فمن الأسهل تشغيل تطبيقك محليا باستخدام bundle exec
, ، على سبيل المثال. bundle exec bin/myapp
.يمكنك استخدام بالتناوب RUBYLIB
متغير البيئة ، على سبيل المثال. RUBYLIB=lib bin/myapp
, ، والتي سوف تضع lib
في مسار التحميل.
نصائح أخرى
يمكنك إنشاء هيكل مشروع جوهرة مع bunder .
لفترة وجيزة:
تثبيت bunder giveacodicetagpre.
استخدم BUNDLER لتوليد مشروع GEM giveacodicetagpre.
إضافة ملف قابل للتنفيذ giveacodicetagpre.
تثبيت جوهرك giveacodicetagpre.
قم بتشغيل البرنامج النصي الخاص بك giveacodicetagpre.
مشاركة فائدة الخاص بك على rubygems.org giveacodicetagpre.
المزيد من المستندات على موقع الويب
نظرا لأن جميع الأحجار الكريمة مفتوحة المصدر بطبيعتها ، يمكنك دائما إلقاء نظرة على بعض من أفضلها للحصول على أمثلة.باستخدام منشئ الأحجار الكريمة مثل jeweler
أو hoe
سوف تقوم أيضا بإعداد مع بعض الهيكل الأساسي من الناحية التنظيمية.