سلام شهریار جان، بنظرم اسم کتاب خونه DSL نیست، Canada هست. اما این کتاب خونه یک DSL به سیستم اضافه میکنه که شبیه CanCan در روبی عمل میکنه.
راستش من استفاده نکردم اما حالا که مطرح کردی بنظرم جالب اومد و باید یه نگاهی بندازم.
من با کتاب خونه های declarative permissions دیگه کار کردم و خودم هم دوتا یا بیشتر پیاده کردم. اگر در حالت کلی نیاز به تجربه اینطوری داری شاید بتونم کاری بکنم اما در مورد Canada هنوز چیز زیادی نمیدونم، هرچند در نگاه اول خیلی ساده و روان بنظر میاد. اگر فیت خوبی با Guardian باشه شاید خیلی به کار بیاد.
درود توماج جان. بیشتر منظورم این بود که چرا چرا در توضیحاتش کلمه DSL رو آورده . احتمالا چون تقریبا ساختار خودشو در آورده مثل یک زبان برنامه نویسی در توضیحات خودش DSL رو آورده. همون منظور metaprogramming فکر کنم باشه !
راستش متاپروگرمینگ میتونه برای نوشتن DSL کمک کنه اما لازم ملزوم هم نیستند، DSL در واقع زبانیه که ما برای موضوع خاص و در دامنه کاربردی کاملا مشخصی میسازیم. مثلا در همین پروژه ای که معرفی شد، الیکسر زبان جنرال این پروژه هست ولی لایه ای که این پروژه برای ساختن permisson ها اضافه کرده در واقع زبان کوچکی هم در خودش که همون DSL هست.
به عنوان مثال Plug ها مجموعه ای از DSL ها هستند، مثلا برای routing در phoenix شما از زبان Plug.Router استفاده می کنید حتی اگر در بطن elixir باشه. https://hexdocs.pm/plug/Plug.Router.html
یا HTML و SQL هم DSL هایی هستند برای کار کاملا مشخص خودشون
متاسفانه Canary مدتهاست که توسعه داده نمیشه و نمیتونه گزینه قابل اعتمادی باشه.
آخرین کامیت ۲۷ جون ۲۰۱۷ بوده و از اون زمان تا حالا هم الیکسر و هم فینکس چندتا ریلیز داشتند اما مثلا آخرین کامیت CanCan همین دیروز بوده. راستش من شخصا خیلی علاقه ای به این جور کتابخونه ها ندارم چون پیاده کردنشون خیلی کار سختی نیست.