إنشاء جماعي للمستخدمين باستخدام rails وغيرها

أريد إضافة أسماء مستخدمين مجمعة (لإنشاء مستخدمين وهميين مبدئيين لإنشاء منشورات).
لذلك كنت أحاول إنشاء ملف rake، وتحميله ثم تشغيله. لكن لم أنجح. ملف rake لا يتم تحميله أحيانًا، وعندما أستخدم طريقة أخرى يتم تحميله ثم يتم طرح خطأ "لا أعرف كيفية إنشاء … " خطأ تم طرحه بواسطة rails c (لا أستطيع حتى تذكر رسالة الخطأ لأنني جربت ألف طريقة مختلفة لساعات لجعلها تعمل دون نجاح)

ما فعلته
إنشاء ملف users.rake

cd /var/www/discourse
mkdir -p lib/tasks
touch lib/tasks/users.rake

تحريره باستخدام nano

cd /var/www/discourse/lib/tasks
sudo nano users.rake

ثم لصقت الكود التالي في المحرر وحفظته

namespace :users do
  desc "Create users from a list"
  task :create, [:usernames, :password, :domain] => :environment do |task, args|
    usernames = args[:usernames].split(',')
    password = args[:password]
    domain = args[:domain]

    User.transaction do
      usernames.each do |username|
        next if User.exists?(username: username)

        email = "#{username}@#{domain}"
        user = User.new(username: username, email: email, password: password)

        unless user.save
          puts "Failed to save user #{username}: #{user.errors.full_messages.join(", ")}"
          raise ActiveRecord::Rollback
        end
      end
    end
  end
end

تم تحميله في rails c وتم تحميله في المهام

rails console
load 'lib/tasks/users.rake'
exit

ثم حاولت إنشاء المستخدمين

./launcher enter app
rake users:create["username1,username2", "password", "domain.com"]

هل هناك أي طريقة أخرى يمكنني تجربتها عبر الطرفية دون استخدام أشياء طرف ثالث.

استخدم rake dev:populate لملء البيانات التجريبية الجاهزة - بسهولة!

3 إعجابات

شكرا لتعليقك.

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

هذا لبيئة إنتاجية. سيكون للمستخدمين الوهميين مواضيع ذات معنى بالفعل. الغرض من هذا ليس تقديم موقع فارغ للجمهور.

لذا، تفضل بإعلامي بحل يتعلق بالسؤال الذي ذكرته.
أحتاج فقط إلى إدراج المستخدمين (لدي قائمة أسماء المستخدمين)، في قاعدة البيانات الرئيسية لـ discourse.

شكرا لك.

يمكنك استخدام هذه التقنية لتثبيتات التطوير المحلية أيضًا (هذا هو الغرض الأساسي منها).

لماذا لا تقرأ الكود الخاص بمهمة rake هذه وتعدلها كيفما تراه مناسبًا؟

إعجاب واحد (1)

أوصي بالاطلاع على نصوص الاستيراد البرمجية في script/import_scripts والبحث عن نص يقرأ ملفات CSV.

كنت أخطط لنص برمجي أو إضافة تسمح لك بإنشاء أشياء من جدول بيانات، لكن كان لدي عمل آخر يعيقني.

إعجاب واحد (1)

لقد قمت بتعديل الكود، ولكن مناقشة الإنتاج في حاوية دوكر، لقد أنشأت ملف rake باستخدام touch وقمت بتحريره في nano، ثم دخلت التطبيق باستخدام ./launcher enter app، ثم دخلت rails وتحققت من rake -T ولم يتم تحميل ملف rake. هذا هو شاغلي الرئيسي. لا يمكنني حتى اختبار الملف في بيئة الإنتاج.

ومع ذلك، على الجهاز المحلي، لا توجد مشكلة، لقد قمت بنسخ ولصق الملف في lib/tasks ويعمل بشكل جيد. هذه الحاوية دوكر وحاوية دوكر هي عذاب عندما تحتاج إلى الوصول إلى الأشياء مباشرة. ولا يمكنني حتى معرفة سبب عدم تحميلها تلقائيًا في قائمة مهام rake.

لذلك، ما زلت عالقًا في بيئة الإنتاج حيث لا يتم تحميل ملف rake تلقائيًا، لذلك لا يمكنني تشغيل الأمر.

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

عادةً ما يتم اختبار مهام rake في بيئة التطوير ويمكن نشرها كجزء من إضافة.

إعجاب واحد (1)

إذا كان لديك يعمل محليًا، يمكنك النسخ الاحتياطي هناك والاستعادة إلى الإنتاج.

هل وضعت ملفك في /var/www/discourse/lib/rake داخل الحاوية؟

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

وقد وضعت الملف في lib/tasks، والنسخة المحلية تعمل، وليس النسخة المباشرة. سأجرب lib/rake أيضًا.

إعجاب واحد (1)

لا ينبغي لك التطوير على موقع مباشر.

تقوم بالتطوير محليًا، وتُعبئ التغييرات في مكون سمة (Theme Component) أو إضافة (plug-in) ثم تنشرها على الموقع المباشر.

إليك مثال لمهمة rake في إضافة:

إعجابَين (2)

أعتقد أنه لا ينبغي لك تطوير Rails أو Ember على تثبيت قياسي، ولكني أقوم بانتظام بالاستيراد في حاوية إنتاج. نظرًا لأنه مجرد مهمة rake، فلن تحتاج حتى إلى إعادة تشغيل الخادم لتطبيق التغييرات.

نظرًا لأنه ليس عامًا، فيجب أن يكون آمنًا للتراجع عن نسخة احتياطية إذا حدث خطأ ما. من المحتمل أن يكون هذا هو المكان الذي سأقوم فيه بذلك.

يمكنك عمل نسخة احتياطية من الموقع المباشر واستعادتها إلى موقع التطوير، والقيام بالعمل، ثم عمل نسخة احتياطية/استعادة مرة أخرى إلى الموقع المباشر.

3 إعجابات