چند دومین بودن برنامه

سلام

آیا راهی هست که با استفاده از اون بتونیم دومین های مختلفی روی یه برنامه بزاریم.
برای مثال یک سیستم وبلاگ رو در نظر بگیرید با آدرس
www.domain.com/blog-shomare1
حالا یک دومین بتونیم به این آدرس اختصاص بدیم . شبیه قابلیتی که میهن بلاگ میده و اجازه میده کاربر دومین برای خودش بندازه روی بلاگش. با روبی آن ریلز چه جوری میشه همچین چیزی را پیاده کرد؟

یه جم نوشتیم که می تونی ازش استفاده کنی

2 پسندیده

این برای SaaS کاربرد داره یا فقط برای مدیریت دومین هست ؟

برای SaaS کاربرد داره

1 پسندیده

مستنداتش خیلی کم هست . میشه بیشتر توضیخ بدید راجبش . آیا برنامه ی سمپل وجود داره که با این جم طراحی شده باشه

کار خیلی سختی نیست

  • جم رو به پروژه اضافه کنید
  • مایگریشن‌ها رو نصب کنید
  • به هر مدل این عبارت رو اضافه کنید
site_aware(:your_model)

توی هر مدلی که این تغییر رو بدید بر اساس دامین در دسترس هست و کافیه بقیه مستندات رو ببینید که چه طور توی پروژه دامین رو تشخیص بدید و یا یه دامین تعریف کنید و …

1 پسندیده

کارش خیلی سادست همون README کفایت می کنه. یه DSL ساده برای Rotue ها داره که مشخص می کنه مسیر های سایت اصلی و سایت ها دیگه و مسیر های مشترک رو. دوتا هم مدل داره سایت و دامنه که از این دوتا زیاد استفاده می شه. هر مدلی که SiteFramework::SiteAware رو include کنه به صورت پیشفرض دیتاش برای هر سایت جدا می شه. و اسکاپ پیشفرضش دیتا رو بر اساس سایت فعلی فیلتر می کنه ( این مدل ها باید از site_aware هم تو migration مربوط به خودشون استفاده کرده باشن)

1 پسندیده

یه سوال دارم اینکه برای SaaS کدوم روش مورد علاقه ی شما است

۱- ساخت یک بانک اطلاعاتی برای هر سرویس
۲- ساخت تیبل های مجزا برای هر سرویس
۳- استفاده از یک جدول با پیشوندهای مربوط به هر سرویس
۴- استفاده از قابلیت postgres schema

روش اول که خیلی غیر منطقی هست من روش ۴ رو ترجیح می دم . حالا می خواستم بدونم چه جوری دامین که عوض میشه شما هم عوض بشه.

خیلی بستگی به محتوایی که قرار سرو بشه هست. اما من معمولا ترجیح میدم که همه چی تو یه TABLE باشه و دیتا بر اساس دامنه یا سایت فیلتر شه.

فرض کنید اگه ۱۰ میلیون رکورد توی یه تیبل باشه و اون هم گاهی با تیبل دیگه ایی در ارتباط باشه که توی اون هم ۱۰ میلیون رکورد دیگه باشه این کار سایت رو کند نمی کنه ؟
حالا اگه عملیاتی مثل محاسباتی هم رو یک ستون قرار باشه صورت بگیره

عرض کردم که به محتوا ربط داره خیلی. ولی با نکته مهم اینه که نکات مثبت هر روش رو کنار هام بگذارید و روش مناسب رو انتخاب کنین. مثلا از خوبی های روش قبلی که گفتم اینه که ایندکس رو می تونین یه جا بسازید و بر اساس همه دیتا. و روش کارش هم خیلی آسون هست.

تجربه ی شخصیتون در مورد تعداد رکورد در یک جدول و اجرای بدون مشکل و کند نبودن چه تعدادی رکورد بوده

تو این مورد خیلی فاکتور های دخیل هستن و لی ۱۰ میلیون رکورد چیز خواصی نیست. شما خیلی راحت می تونین دیتا رو بر اساس سایت ایندکس کنین.

ببینید
۱ ) مایگریش سومی ایراد داره اونی که قراره اینو بسازه
t.string :site_framework_sites, :default_template, :string, default: ''
که حالا درستش کردم

۲) به نظر من خوب مستند نکردید الان
الان من قبل اینکه بخوام روی اپلکیشنم نصب کنم یه برنامه امتحانی ایجاد کردم با دو تا مدل post , user

class User < ActiveRecord::Base
site_aware(:user)
has_many :posts
end

حالا وقتی برنامه رو اجرا می کنم

undefined method `site_aware’ for #Class:0x0000000424e1f0

ببنید من برای یوزر ها می خوام یه فیلد دومین وجود داشته باشه از نوع string وقتی اون رو وارد کنه کاربر تمام پست هاش بر اساس اون بالا بیاد.

برای جم به این پر کاربردی یه سمپل بسازید :relaxed: برای شما نیم ساعت کارم نیست :wink: