دو سوال در مورد پروژه چتری و action_fallback در فونکیس 1.3

با درود خدمت شما من امروز هم نسخه الکسیر خودمو به 1.5.1 به روز رسانی کردم و همینطور phoenix رو به 1.3 که تغییرات فونیکس را در لینک زیر می توانید مشاهده کنید
http://phoenixframework.org/blog/phoenix-1-3-0-released

و همینطور یک ویدیو نیز در مورد روند تغییر مسیر ها و چرایی این کار

حالا یک سوالی برای بنده پیش اومده مهمترینش مورد زیر هست :

action_fallback

من این مورد رو حتی با یک نمونه کد در این بخش نیز دیدم ولی بازم هم متوجه نشدم این اصلا چی هست برای چی درست شده ؟ خیلی ها در اینترنت گفتن با این کد های تمیز تر و همینطور با جواب های بهتر می نویسند ولی خوب اگر دوستان اطلاعاتی نسبت به این ویژگی دارند بفرمایند
https://hexdocs.pm/phoenix/Phoenix.Controller.html#action_fallback/1

مورد بعدی در مورد پروژه های چتری هست . در ویدیو بالا که از یوتیوب هست خود فونیکس هم آمبرلا مثل اینکه داره و اضافه کرده . این طور ساختن با قبلا یک پروژه آمبرلا می ساختیم چه فرقی داره ؟ که در فونیکس این مورد اضافه شده . آخه من چیز زیادی تغییر در نحوه فایل بندی ندیدم ولی خوب در ویدیو بخشی نیز توضیح داد که متوجه نشدم

راستی دوستان من این چند وقت کد های زیادی رو می بینیم که با With نوشته می شوند

مثل :

def create(params) do
    with {:ok, dob} <- parse_dob(params["dob"]),
         {:ok, name} <- parse_name(params["name"])
    do
      %User{dob: dob, name: name}
    else
      # nil -> {:error, ...} an example that we can match here too
      err -> err
    end
  end

تها چیزی که تونستم پیدا کنم این مطلب هست

انگار یک شرط را انجام می دهد و چندین کار رو با هم اگر در این مورد نیز اطلاعاتی دارند در صورت امکان اشتراک بزارید چرا در فونیکس ۳ داره این همه استفاده می شه در داکیومنت بیشتر منظورمه !! و همینطور ویدیویی که در بالا قرار دادم

با تشکر از دوستان

#به روز رسانی

دوستان بلخره with رو تونستم یاد بگیرم کدهای تست رو هم در زیر به همراه رفرنس هایی که ازش دیدم قرار دادم فقط یک سوال در این مورد که الان با این مورد خیلی کد ها کوتاه تر می شه و نیاز به |> های زیادی نداره و چندین شرط رو می شه همزمان تست کرد آیا موردی در استفاده از این شرط نیست ؟

Action_fallback یک کنترلر که وقتی هیچ pattern در کنترل اصلی match نشه در این controller دنبال pattern میگرده فینکس مثله default در case statement هستش برای اینکه کارهای عمومی بین همه کنترلر هارو در یک جا تعریف کنیم مثلا خطا ها
With فقط بعد اینکه تمام pattern ها در زنجیره تغیف شده match بشن عبارت در do رو اجرا میکنه اگه هرکدام match نشن از زنجیره میادبیرون
استفاده ازش و خیلی پیشنهاد میکنم
من وقتی الیکسیر مینوسم هر. عبارت و فانکشن و unit test مینوسیم براش بعد برای کل زنجیره with
integration test
و کلا زنجیره with در تنها فانکشن public ماژول میگذارم

1 پسندیده

تشکر مهندس . بله از with جدیدا خیلی استفاده می کنم چون برخی از کد هام و شرط ها به شدت خوانا تر و همینطور کم خط تر می کنه . بسیار سنتکز جالبیه .

۱. ولی جسارتا من Action_fallback رو متوجه نشدم می شه یک مثال بزنید در صورتی که امکان دارد ؟ در ویدیو در موقعی که این رو می یاورد اس plug هم می آورد که من متوجه نشدم.

۲. یک سوال هم در پست اول در مورد فرق بین آمبرلا اضافه شده در فونیکس ۱.۳ با آمبرلایی که قبلا می زدیم به صورت زیر چی هست ؟

 mix new kv_umbrella --umbrella

1. اینجا نمونه کد هستش
۲. آمبرلا اضافه شده در فونیکس ۱.۳ میتونه بدون ecto باشه یا فقط elixir app خالی باشه directory structure هم کلا عوض شده و model ها deprecate شده

1 پسندیده