سؤال

أرغب في تحميل المستندات إلى Googledocs في كل مرة يسمع فيها نظام التشغيل أنه تمت إضافة / تم إضاف / حفظ / المحفوظ في مجلد معين، فقط قم بتحميل Dropbox ملف عند حفظه في مجلد Dropbox.

ماذا سيستغرق هذا في روبي، ما هي الأجزاء؟

  • كيف تستمع إليه عند حفظ ملف؟
  • كيف تستمع إليه عند إضافة ملف إلى مجلد؟

أفهم كيفية استخدام API Googledocs وتحميل الأشياء بمجرد الحصول على هذه الأحداث، لكنني لست متأكدا من كيفية عمل ذلك.

تحديث

بينما ما زلت لا أعرف كيفية التحقق مما إذا تمت إضافة ملف إلى دليل، فإن الاستماع لأنه يتم حفظ ملف الآن الأوساخ بسيطة، وذلك بفضل حارس ل ruby.

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

المحلول

لا يشمل Ruby طريقة مدمجة "الاستماع" للحصول على تحديثات إلى الملفات. إذا كنت ترغب في الالتصاق ل Ruby النقي، فسيكون أفضل رهان لأداء التحميل على جدول محدد (قل كل 5 دقائق) بغض النظر عن وقت حفظ الملف.

إذا لم يكن هذا بديلا مقبولا، فيمكنك تجربة كتابة التطبيق (أو أجزاء معينة على الأقل) في جافا، والتي تدعم هذا النوع من الأشياء. ألق نظرة على Jruby لإدماج أجزاء Ruby و Java من تطبيقك.

نصائح أخرى

إذا كنت قد تواجه ذلك، فسأستعب شيئا مثل GIT أو BZR للتعامل مع فحص الإصدار واستدعاء إضافة ثم الالتزام من البرنامج النصي ومراقب الملفات التي تغيرت (وبالتالي تحتاج إلى تحميلها).

يضيف هذا فائدة التحكم الكامل بالإصدار عبر الملفات وغالبا ما يكون منصة عرضية (إذا قمت بتضمين الثنائيات لكل منصة).

ملاحظة هذا لا يتعامل مع مشكلة الاستماع الخاصة بك، فقط ما تفعله عندما تعرف شيئا قد تغير. يمكنك جدولة المهمة (عبر طرق مختلفة) ولكن ما زلت أحب فكرة VCS المناسبة تحت غطاء محرك السيارة.

أنا فقط وجدت هذا: http://www.codeforpeople.com/lib/ruby/dirwatch/

كنت بحاجة إلى أن تقرأها كما لا أستطيع أن أشهد كفاءتها أو موثوقيتها. يبدو أنه يستخدم SQLite، لذلك قد يكون من الأفضل التحقق يدويا مرة واحدة كل 10 ثوان (أو شيء على طول هذه الخطوط).

هنا هو جوهرة روبي النقية:

http://github.com/twp/directory_watcher.

أنا لا أعرف الطريقة الصحيحة للقيام بذلك، لكن اختراق بسيط سيكون لديه برنامج نصي يعمل في الخلفية التي تتحقق من محتويات مجموعة من المجلدات كل دقيقة وتستخدم الطوابع الزمنية المرتبطة بتحديد ما إذا كان الملف تم تعديله في ذلك الوقت من الوقت

بالتأكيد ستحتاج إلى بعض رمز نظام التشغيل الأصلي هنا، لكتابة خدمة المراقبة / العميل. سأختار C ++ إذا كنت تريد أن تكون منصة عبر. إذا قررت الذهاب مع .NET، على سبيل المثال، يمكنك استخدام فئة FileSystemWatcher لتحقيق ما تحتاجه (توثيق وهنا مقالات لها صلة).

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

الجانب السلبي هو أن إعداد برنامج نصي ل Ruby يعمل باستمرار (أو كخدمة) مؤلمة إلى حد ما. لكنها ليست مهمة ساحقة، تحتاج فقط إلى التفكير بشكل صحيح.

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

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