Current section

Files

Jump to
mishka_installer README_FA.md
Raw

README_FA.md

# _سیستم مدیریت پلاگین ها و نصب کتابخانه های الیکسیر به صورت ران تایم_
فرض کنید می خواهید یک نرم‌افزار قابل توسعه درست کنید و همینطور این امکان را بدهید تا دیگر افراد نیز بتوانند بیرون پروژه شما امکاناتی را درست کرده و به سادگی به پروژه شما الحاق کنند. برای پیاده‌سازی چنین سیستمی شما نیازمند به یک رویکرد ماژولار دارید که تمامی بخش های سیستم شما را تبدیل به رویداد های مختلف بکند و همینطور هر پلاگینی که برای این رویداد ها درست شده است را بدون ریست کردن نرم‌افزار اصلی نصب و مورد استفاده قرار بدهد بدون هیچگونه `Downtime`.
**_توجه: از شاخه `master` استفاده نکنید جز برای تست آخرین تغییرات یا توسعه این پروژه. این کتابخانه در حال توسعه شدید است._** نسخه 0.0.3 در حالت توسعه می باشد، و برای استفاده از ویژگی های جدید، لطفا صبر کنید تا نسخه جدید منتشر شود.
### _ویدیو معرفی و آموزش کتابخانه `Mishka Installer` :_
---
در این ویدیو یک پلاگین ساده می سازیم و همینطور آن را در زمانی که پروژه در حال اجرا می باشد نصب می کنیم.
**ویدیو به زودی ....**
### _برخی از امکانات کلیدی کتابخانه الیکسیر `Mishka Installer` :_
---
1. _ایجاد رویداد های مختلف در پروژه و امکان فعال سازی پلاگین با تنظیمات بسیار انعطاف‌پذیر._
2. _نصب پلاگین و کتابخانه های [الیکسیر](https://github.com/elixir-lang/elixir) به صورت ران تایم بدون نیاز به `downtime` از جمله ریست کردن پروژه._
3. _بررسی و مدیریت به روز رسانی کتابخانه های نصب شده روی پروژه._
4. _مشخص کردن ساختار بر اساس رفتار های مختلف معرفی شده از طرف `MishkaInstaller` یا سفارشی برنامه شما._
5. _مدیریت خطا های احتمالی در استفاده از پلاگین ها._
6. _مدیریت تنظیمات در رانتایم._
### _هدف ساخت_
---
فرض کنید شما قرار است یک نرم افزاری را ارائه کنید که برای آن افزونه های زیادی تولید خواهد شد ولی اینکه در کد اصلی شما هر بار دستبرده شود باعث تداخل و همینطور نگهداری سخت این نرم‌افزار می شود. به صورت مثال شما یک سیستم مدیریت محتوایی را برای کاربران خود منتشر می کنید حال آن ها به این نیاز دارند تا برای بخش ثبت نام ارسال پیامک را فعال کنند؛ به وسیله Hook های ایجاد شده شما می توانید به برنامه نویسان بیرون از هسته اصلی نرم‌افزار خود این امکان را بدهید تا این پلاگین را به راحتی بسازند و بر اساس یک استاندارد از پیش تعریف شده به سادگی با یک کلیک آن روی پروژه اصلی نصب و فعال سازی کنند. تمامی این موارد بدون ریست کردن انجام می گیرد.
لازم به ذکر است که [Mishka Installer](https://github.com/mishka-group/mishka_installer) فریم ورک [Phoenix](https://github.com/phoenixframework/phoenix_live_view) را به صورت کامل پشتیبانی می کند
> شروع این پلاگین بر اساس نیازمندی [**سیستم مدیریت محتوای میشکا**](https://github.com/mishka-group/mishka-cms) بوده است که این امکان را فراهم می کرد کاربران افزونه های اختصاصی خودشان را بسازند و به نرم افزار خودشان اضافه کنند. بعد از مدتی بخاطر داینامیک بودن و همینطور کاربردی بودن برای دیگر پروژه ها تصمیم به جدا کردن و همینطور توسعه کاملا مستقل از cms گرفتیم.
**_برای مطالعه مستندات این کتابخانه [کلیک](https://hexdocs.pm/mishka_installer/) کنید._** **_و همچنین برای پیگیری لیست آخرین تغییرات می توانید [اینجا کلیک](https://github.com/mishka-group/mishka_installer/blob/master/CHANGELOG.md) کنید._**
### _گراف استفاده از بخش های مهم این پروژه_
---
در گراف زیر می توانید بخش های مهم و کلیدی این کتابخانه را مشاهده کنید. لازم به ذکر است تمامی این بخش ها مستقل می تواند اجرا شود و بر اساس نیازمندی های شما در توابع درخواستی قرار بگیرند ولی یک سری توابع `action` آماده شده است که این روند را خودکار کند تا استفاده از آن آسان تر شود.
**گراف به زودی ....**
### _نصب کتابخانه:_
---
قدم اول برای نصب، فقط کافی می باشد در `mix.exs` خود در تابع `deps` به صورت زیر این کتابخانه را اضافه کنید.
```elixir
def deps do
[
{:mishka_installer, "~> 0.0.3"}
]
end
```
بعد از نصب این کتابخانه نیاز دارید برخی از جداول بانک اطلاعاتی موردنیاز را به پروژه خودتان اضافه کنید به همین منظور در کنسول خود دستور زیر را اجرا کنید.
```elixir
mix mishka_installer.db.gen.migration
```
و همینطور تنظیمات زیر را در فایل کانفیگ خود قرار بدهید.
```elixir
config :mishka_installer, :basic,
repo: YOUR_Repo,
pubsub: YOUR_PUBSUB or nil,
html_router: YOUR_WEBSITE_ROUTER_MODULE
```
شما می توانید پیشنهاد های ما و دیگر همکاران را در ریپازیتوری [Proposals](https://github.com/mishka-group/Proposals) ببنید و اگر خودتان درخواستی یا ایده ای دارید در آن جا با توضیحات کامل برای ما ارسال کنید. **لطفا با همکاری در ارائه پیشنهادها و بررسی پروژه کمک کنید تا گروه [میشکا](https://github.com/mishka-group) بتواند محصولات بیشتری را تولید و در اختیار برنامه نویسان و مدیران سایت ها و نرم‌افزار های آنلاین قرار بدهد**.