تشغيل عمليات ترحيل قاعدة البيانات من التطبيق

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

  •  09-06-2019
  •  | 
  •  

سؤال

لدي تطبيق Rails حيث يكون لكل مستخدم قاعدة بيانات منفصلة.(أخذًا بنصيحة جويل سبولسكي في هذا الشأن).أرغب في تشغيل عمليات ترحيل قاعدة البيانات من تطبيق Rails لإنشاء قاعدة بيانات وجداول جديدة لهذا المستخدم.

ما هي أسهل طريقة للقيام بذلك؟

ربما لا يكون ترحيل قاعدة البيانات هو الأفضل لهذا النوع من الأشياء.شكرًا!


سيكون من الرائع أن تكون عملية مؤتمتة بالكامل.ستكون العملية التالية مثالية.

  1. يقوم المستخدم بالتسجيل على موقعنا لاستخدام تطبيق الويب هذا
  2. يتم تشغيل عمليات الترحيل لإنشاء قاعدة بيانات المستخدمين هذه والحصول على إعداد الجداول بشكل صحيح

هل هناك طريقة لاستدعاء مهمة أشعل النار من تطبيق روبي؟

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

المحلول

للإجابة على جزء من سؤالك، إليك كيفية تشغيل مهمة Rake من داخل كود Rails:

require 'rake'
load 'path/to/task.rake'

Rake::Task['foo:bar:baz'].invoke

ضع في اعتبارك أنه ليس لدي أي فكرة عن كيفية (أو لماذا) الحصول على قاعدة بيانات واحدة لكل مستخدم.

نصائح أخرى

نحن نستخدم ملفات تكوين منفصلة لكل مستخدم.لذلك في config/ dir، سيكون لدينا roo.database.yml الذي سيتصل بقاعدة بياناتي الشخصية، وسأقوم بنسخه عبر ملف data.yml الذي تستخدمه Rails.

كنا نفكر في توسيع ملف Rakefile الخاص بـ Rails حتى نتمكن من تحديد المطور كمتغير بيئة، والذي سيحدد بعد ذلك تكوينًا محددًا لقاعدة البيانات، مما يسمح لنا بالحصول على ملف data.yml واحد فقط.لم نقم بذلك على الرغم من أن الطريقة المذكورة أعلاه تعمل بشكل جيد بما فيه الكفاية.

لقد اكتشفت بالفعل طريقة جيدة لتشغيل عمليات ترحيل قاعدة البيانات من أحد التطبيقات:

ActiveRecord::Migrator.migrate("db/migrate/")

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