Window.pipedriveLeadboosterConfig = { القاعدة: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', الإصدار: 2, } ؛(الدالة () { var w = نافذة إذا كان (w.LeadBooster) { console.warn('LeadBooster موجود بالفعل') } وإلا { { w.LeadBooster = { q: [], على: دالة (ن، ح) { { هذا.q.push({ t: 'o'، n: n، n: n، h: h }) }, الزناد: الدالة (n) { هذا.q.push({ t: 't'، n: n: n }) }, } } })() تطبيق روبي بسيط من الصفر مع السجل النشط - The Codest
The Codest
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • الصناعات
    • التكنولوجيا المالية والمصرفية
    • E-commerce
    • أدتك
    • التكنولوجيا الصحية
    • التصنيع
    • الخدمات اللوجستية
    • السيارات
    • إنترنت الأشياء
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
السهم الخلفي العودة إلى الوراء
2021-07-07
تطوير البرمجيات

تطبيق بسيط من روبي بسيط من الصفر مع السجل النشط

The Codest

داميان واتروبا

Software Engineer

MVC هو نمط تصميم يقسم مسؤوليات التطبيق لتسهيل التنقل فيه. يتبع Rails هذا النمط التصميمي حسب الاصطلاح.

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

قد يحدث أن يحتاج تطبيقنا إلى M (نموذج) فقط من نمط MVC بأكمله وحدة التحكم في الطراز. هل يستحق الأمر البدء في المشروع في القضبان إذا علمنا أنه لن تكون هناك حاجة إلى جزء V-C (وحدة التحكم في العرض)؟

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

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

الهيكل

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

 ملف جيمفيل القط

# frozen_string_literal: صحيح

المصدر 'https://rubygems.org'

روبي '2.7.2'

اختياري README.md الملف هو لوصف كيفية عمل تطبيقنا وكيفية مواصلة العمل عليه، سواء لنا أو للمطورين الآخرين الذين سيرغبون في تطوير المشروع معنا في المستقبل.

cat README.md

تطبيق #

للقيام بذلك: احذف هذا والنص أعلاه، وقم بوصف تطبيقك

التطبيق الدليل مع تطبيق.rb الذي سيكون مسؤولاً عن تكوين وتحميل المكتبات والملفات التي سنضيفها في تطبيقنا. تذكّر تشغيل تثبيت الحزمة لتوليد ملف Gemfile.lock. يجب أن تبدو بنية تطبيقنا في هذه المرحلة على النحو التالي:

شجرة
 .
 ̄ ̄ ملف الأحجار الكريمة
 ̄ ̄ ملف Gemfile.lock
 ̄ ̄ README.md
 التطبيق
     ─التطبيق.rb

قاعدة البيانات

مع إعداد مثل هذا الهيكل، يمكننا التفكير في محرك قاعدة البيانات الذي يجب اختياره وتكوينه. بالنسبة لهذه المقالة، اخترت PostgresQL، الذي لديّ خبرة كبيرة به. يمكن أيضًا أن يكون MySQL أو SQlite3، أو أي محرك آخر يعمل مع السجل النشط. عند اختيار التقنية، من الجيد أن تسترشد بالغرض من التطبيق، وما الذي سيستخدم من أجله وما هو الغرض منه. 

للحصول على تكوين سريع وبسيط لقاعدة البيانات، استخدمت docker و docker-compose. لا أريد أن أشرح بالتفصيل تكوين هذه الأدوات وإيجابياتها وسلبياتها، ولكن إذا لم تكن قد استخدمت أداة docker من قبل، فسأحيلك إلى الوثائق الرسمية ل دوكر و تركيب Docker Compose للمزيد من المعلومات

# docker-compose.yml

الإصدار: '3.7'
الخدمات:
  Postgresql:
    الصورة: postgres:12.0-alpine
    الموانئ
- 5432:5432
    البيئة:
- PGDATA=/postgresql
- كلمة مرور POSTGRESPASSWORD = بوستجرس
- POSTGRESPASSER=postgres
    وحدات التخزين
- مجلد db-volume: /postgresql
وحدات التخزين:
  مجلد db-volume:

سنحتاج أيضًا إلى إضافة ملف الجوهرة

جوهرة "pg

وإلى تطبيق.rb الملف

# التطبيق/التطبيق.rb

يتطلب 'pg'

الوحدة النمطية تطبيق

  صنف خطأ <خطأ قياسي؛ انتهى

# يذهب الرمز الخاص بك هنا...

نهاية

الترحيلات المستقلة، أشعل النار

الخطوة التالية في تكوين تطبيقنا هي إضافة الترحيلات_المستقلة و أشعل النار الأحجار الكريمة، والتي ستسمح لنا بإدارة عمليات الترحيل الخاصة بنا تمامًا كما هو الحال في Rails والوصول إلى rake db: الأوامر. 

  1. تحديث ملف الجوهرة بالأحجار الكريمة اللازمة، وقم بإجراء تثبيت الحزمة
جوهرة # المستخدمة في التطبيقات غير القضبان وغير الروبي

جوهرة 'الترحيلات_المستقلة'

# تحتاج الترحيلات_المستقلة إلى أداة "راك" لتتمكن من إنشاء الترحيلات وتشغيلها، كما هو الحال في Rails

جوهرة 'أشعل النار'

# جوهرة مطلوبة لتحميل متغيرات البيئة

جوهرة 'dotenv'
  1. دعنا نضيف راكيفيل إلى مشروعنا في الدليل الجذر، حيث سنقوم بتحميل دوتينف و الترحيلات_المستقلة التي أضفناها سابقًا 
# frozen_string_literal: صحيح

يتطلب 'dotenv'

Dotenv.load

يتطلب 'الترحيلات_المستقلة'

الترحيلات المستقلة::Tasks.load_tasks

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

تطبيق روبي
  1. قبل أشعل النار db:إنشاء، ما زلنا بحاجة إلى ملف تهيئة في مشروعنا للاتصال بمثيل Postgres. للقيام بذلك، نحن بحاجة إلى إنشاء دليل db مع ملف config.yml الذي يجب أن يبدو مثل الملف أدناه:
# db/config.yml

افتراضي: &افتراضي

  المحول: postgresql

  الترميز: يونيكود

  تجمع: 

  قاعدة البيانات: 

  اسم المستخدم: 

  كلمة المرور: 

  المضيف: 

  المنفذ: 

التطوير:

  <<: *افتراضي

اختبار

  <<: *افتراضي

التدريج:

  <<: *افتراضي

الإنتاج:

  <<: *افتراضي

كما ترون، لقد استخدمت متغيرات البيئة لتهيئة الاتصال بـ Postgres الخاص بنا، حيث سنحتفظ بالبيانات الحساسة التي لا ينبغي أن تكون في المستودع. لهذا استخدمت متغير البيئة المضاف سابقًا جوهرة دوتينفوالذي تمت إضافته أيضًا في راكيفيل إلى جانب الترحيلات_المستقلة. إذا كنا نستخدم Git لإدارة التحكم في إصدار تطبيقنا، دعنا نتذكر إضافة .gitignore حيث سنقوم بتعطيل إمكانية تعقب ملف .env ملف من مشروعنا.

 # .gitignore .gitignore
.env*
.env.example

وإضافة.env يحتوي على ملف ENV المهيأ بشكل صحيح

#.env

DATABASE_NAME="التطوير"

DATABASE_USER="postgres"

DATABASE_PASSWORD="postgres"

DATABASE_HOST="المضيف المحلي"

منفذ_قاعدة_بيانات="5432"
  1. في هذه المرحلة، يجب أن نكون قادرين على تشغيل أشعل النار db:إنشاء الأمر الذي سينشئ قاعدة البيانات

    تطبيق ويب روبي

  2. دعنا نحاول إضافة ترحيل جديد عبر أشعل النار db:new_migration name=حيث نقوم بإنشاء المنشورات الجدول الذي يحتوي على :: العنوان العمود

    تطبيق الويب Rails

# frozen_string_literal: صحيح

فئة CreatePosts < ActiveRecord::Migration[6.0]

  تعريف التغيير

    إنشاء_جدول :المشاركات تفعل |t|

      سلسلة t.string :العنوان

    النهاية

  النهاية

النهاية
تطبيق الويب Ruby on Rails

يجب أن تلاحظ أن د ب/الترحيل تمت إضافة الدليل تلقائيًا و schema.rb بعد نجاح عملية الترحيل. ويبدو هيكل مشروعنا حالياً على النحو التالي:

 الشجرة
.
ملف الأحجار الكريمة
ملف الأحجار الكريمة.
̄ README.md
̄ ㅤ ㅤ ㅤ ㅤ ㅤ ㅤ
」 .gitignore .gitignore
通 ➔─ .env.example
تطبيق
│علم-التطبيق.rb
」」📚 🌹db
التكوين.yml ─ تكوين.yml
الترحيل
202104135128_Create_posts.rb
│التعليم ─ schema.rb
تعريف docker-compose.yml

السجل النشط

أخيرًا وليس آخرًا، هناك خطوة أخرى في إنشاء تطبيقنا وهي إضافة السجل النشط وتكوينه. لهذا، سنحتاج إلى تحديث ملف Gemfile الخاص بنا بـ 3 جواهر أخرى:

جوهرة 'Activerecord'
جوهرة 'erb'
جوهرة 'yaml'

لماذا نضيف إرب و يامال موضح أدناه في التعليقات. كامل السجل_النشط سيكون التكوين في التطبيق/التطبيق.rb الملف.

دعونا نستعرض ما يحدث هنا واحداً تلو الآخر:

# frozen_string_literal: صحيح

# إذا أردنا أن نكون قادرين على تشغيل التطبيق في بيئات مختلفة,
# مثل الاختبار أو الإنتاج، فمن الجيد تعيين قيمة ENVIRONMENT
# في البداية، والتي يتم أخذها من متغير البيئة
# أو 'التطوير' افتراضيًا.

ENV['ENVIRONMENT'] ||= 'تطوير'

# لاستخدام الأحجار الكريمة المضافة، نحتاج إلى تحميلها باستخدام طريقة Kernel#require,
# الذي يقوم بتحميل الملف أو المكتبة التي تم تمريرها كمعامل

طلب 'pg'
يتطلب 'Active_record'
يتطلب 'dotenv'
يتطلب 'yaml'
يتطلب 'erb'

# افتراضيًا يصل Dotenv.load لتحميل متغيرات البيئة إلى
# إلى ملف 'env'، لذا إذا أردنا استخدام بيئات أخرى فمن المفيد
# توسيع هذا إلى الطريقة أدناه، والتي ستبحث أولاً عن مجموعة تطوير
# عن ملف ينتهي بـ 'env.development.local',
# ثم 'env.development' وأخيرًا 'env'.

Dotenv.load(".env.#{ENV.fetch.fetch('ENVIRONMENT')}.local"، ".env.#{ENV.fetch('ENVIRONMENT')}"، ".env")

# طريقة مطلوبة لتحميل إعدادات قاعدة البيانات
تعريف db_configiguration
  # تقوم الطريقة أدناه بإرجاع المسار إلى الملف الذي يحتوي على التكوين الخاص بنا
  db_configuration_file_path = File.join(File.expand_path('..'، __dir__)، 'db'، 'config.yml')

  # بوجود المسار إلى الملف، يمكننا قراءة قيمه. لأن ملف config.yml
  يحتوي ملف # على متغيرات البيئة، وكما لاحظتَ
  # على صيغة erb ، نحتاج أيضًا إلى استخدام جوهرة erb. بدون هذا
  لن تتم قراءة قيم المتغيرات بشكل صحيح ولن يتم قراءة قيم المتغيرات بشكل صحيح ولن يتمكن Activerecord
  1TPTP63T لن يكون قادرًا على الاتصال ب Postgres.
  # التكوين كسلسلة

  نتيجة db_configuration_result = ERB.new(File.read(db_configuration_file_path)).result

  1TPTP63T باستخدام الجوهرة 'yaml' المضافة سابقًا، يمكننا تحميل التكوين الخاص بنا بأمان

  YAML.safe_load(db_configuration_result, aliases: true)
إنهاء

# أخيرًا، نحتاج إلى إنشاء اتصال بين activerecord و postgres
# باستخدام طريقة "إنشاء_الاتصال
ActiveRecord:::Base.establish_connection(db_configuration[ENV['ENVIRONMENT'])

الوحدة النمطية التطبيق
  فئة خطأ <خطأ قياسي؛ انتهى
  # يذهب الرمز الخاص بك هنا ...
نهاية

لدينا التكوينات بالفعل، لذا يمكننا إضافة نموذج المنشور في الياقوت التطبيق. 

تطبيق "̄ ̄ التطبيق

'│علم النماذج'

'│التطبيق ─ post.rb'
app/models/post.rb
# frozen_string_literal: صحيح

صنف منشور <أكتيف ريكورد::قاعدة؛انتهى

وتذكر تحميل الملف في تطبيق.rb

تتطلب 'التطبيق/النماذج/النشر'

تذكّر أيضًا أن تضيف طلب 'التطبيق/المشغل' إلى التطبيق/التطبيق.rb

إذا أردنا إضافة ملفات جديدة في تطبيقنا أو خدماتنا أو المزيد من النماذج، نحتاج إلى تحميلها في تطبيق.rb.

ملخص

حاليًا، تطبيق روبي الخاص بنا جاهز للمتابعة. لقد قمنا بتهيئة

  • اتصال قاعدة البيانات,
  • السجل النشط,
  • عمليات الترحيل المستقلة مع أشعل النار

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

المكافأة

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

#!/usr/bin/env ruby
# frozen_string_literal: صحيح

يتطلب 'bundler/إعداد'

$P62TLOAD_PATH.unshift File.expand_path(..'، __dir__)
يتطلب 'التطبيق/التطبيق'

Runner.start
# frozen_string_literal: صحيح

فئة عداء
  يعرف self.start
    يضع 'ابدأ'
  ينتهي
النهاية
تطوير تطبيقات روبي

تذكر أيضًا أن تضيف تتطلب 'التطبيق/المشغل' إلى التطبيق/التطبيق.rb

يمكن العثور على الكود على GitHub:

– https://github.com/dwatek/simpleالياقوتالتطبيق

قراءة المزيد

GraphQL روبي. ماذا عن الأداء؟

السكك الحديدية ووسائل النقل الأخرى

تطوير القضبان باستخدام TMUX و Vim و Fzf + Ripgrep

مقالات ذات صلة

تطوير البرمجيات

إنشاء تطبيقات ويب مستقبلية: رؤى من فريق خبراء The Codest

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

ذا كوديست
تطوير البرمجيات

أفضل 10 شركات لتطوير البرمجيات في لاتفيا

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

thecodest
الحلول المؤسسية وحلول التوسعة

أساسيات تطوير برمجيات جافا: دليل للاستعانة بمصادر خارجية بنجاح

استكشف هذا الدليل الأساسي حول تطوير برمجيات جافا outsourcing بنجاح لتعزيز الكفاءة والوصول إلى الخبرة وتحقيق نجاح المشروع باستخدام The Codest.

thecodest
تطوير البرمجيات

الدليل الشامل للاستعانة بمصادر خارجية في بولندا

إن الطفرة في outsourcing في بولندا مدفوعة بالتقدم الاقتصادي والتعليمي والتكنولوجي، مما يعزز نمو تكنولوجيا المعلومات والمناخ الملائم للأعمال.

ذا كوديست
الحلول المؤسسية وحلول التوسعة

الدليل الكامل لأدوات وتقنيات تدقيق تكنولوجيا المعلومات

تضمن عمليات تدقيق تكنولوجيا المعلومات وجود أنظمة آمنة وفعالة ومتوافقة. تعرف على المزيد حول أهميتها من خلال قراءة المقال كاملاً.

The Codest
ياكوب جاكوب جاكوبوفيتش CTO وشريك مؤسس CTO

اشترك في قاعدة معارفنا وابقَ على اطلاع على آخر المستجدات في قطاع تكنولوجيا المعلومات.

    نبذة عنا

    The Codest - شركة دولية لتطوير البرمجيات لها مراكز تقنية في بولندا.

    المملكة المتحدة - المقر الرئيسي

    • المكتب 303 ب، 182-184 شارع هاي ستريت نورث E6 2JA
      لندن، إنجلترا

    بولندا - مراكز التكنولوجيا المحلية

    • مجمع مكاتب فابريتشنا المكتبي، أليجا
      بوكوجو 18، 31-564 كراكوف
    • سفارة الأدمغة، كونستروكتورسكا
      11, 02-673 02-673 وارسو، بولندا

      The Codest

    • الصفحة الرئيسية
    • نبذة عنا
    • الخدمات
    • دراسات الحالة
    • اعرف كيف
    • الوظائف
    • القاموس

      الخدمات

    • استشاري
    • تطوير البرمجيات
    • تطوير الواجهة الخلفية
    • تطوير الواجهة الأمامية
    • Staff Augmentation
    • مطورو الواجهة الخلفية
    • مهندسو السحابة
    • مهندسو البيانات
    • أخرى
    • مهندسو ضمان الجودة

      الموارد

    • حقائق وأساطير حول التعاون مع شريك خارجي لتطوير البرمجيات
    • من الولايات المتحدة الأمريكية إلى أوروبا: لماذا تقرر الشركات الأمريكية الناشئة الانتقال إلى أوروبا؟
    • مقارنة مراكز تطوير التكنولوجيا في الخارج: تك أوفشور أوروبا (بولندا)، آسيان (الفلبين)، أوراسيا (تركيا)
    • ما هي أهم التحديات التي تواجه CTOs ومديري تكنولوجيا المعلومات؟
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • شروط استخدام الموقع الإلكتروني

    جميع الحقوق محفوظة © 2025 بواسطة The Codest. جميع الحقوق محفوظة.

    arArabic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek arArabic