How To Unit Test Anything (almost)
18:14
Пікірлер
@bilbo1337
@bilbo1337 9 күн бұрын
is the groove tracker code base open source?
@Arkency
@Arkency 9 күн бұрын
it is (still in early development stage), check my github account maciejkorsan/vinyl-app - I can't post a link here, previous comment has been deleted.
@erinclaudio9211
@erinclaudio9211 23 күн бұрын
I signed up, but the confirmation stated I signed up for a newsletter. Just want to make sure that is accurate
@Arkency
@Arkency 23 күн бұрын
You should get 2 emails - 1st about newsletter, and 2nd about the webinar, let me know if they didn't come :)
@bilbo1337
@bilbo1337 19 күн бұрын
@@Arkencyalso having issues, I click the “are you human form” and it just refreshes the page with no indication that it worked. Have not received the emails either.
@beefyjoe
@beefyjoe 2 ай бұрын
link to full video please?
@andrzejkrzywda_official
@andrzejkrzywda_official 2 ай бұрын
kzbin.info/www/bejne/a4GQep2wq6ajnqMsi=vYGLDdx_AV3N4Wib
@erinclaudio9211
@erinclaudio9211 3 ай бұрын
Thank you for posting this! could not make the live broadcast
@RahulDhole7
@RahulDhole7 3 ай бұрын
Simple task CRUD. Is so complicated and creating too many files. It is discouraging for junior developers like me to try it for new projects. I still wanna learn more about it if there is a simple way a simple template available to get started simple CRUD app then rest I can manage tests or services or whatever additional complexity will be needed for my project I can do that, I just want pure CRUD recommendation using railseventstore. Whole rails ecosystem just talks seniors language only it’s too hard for juniors to follow.
@AlanBem
@AlanBem 3 ай бұрын
Typo in the title guys
@Arkency
@Arkency 3 ай бұрын
lol, thanks. Fixed it
@BrandonToone
@BrandonToone 4 ай бұрын
Wow, I feel like I've just uncovered a hidden (rough) gem in the archives of the internet! The insights here are still relevant, and the Q&A brings even more depth to it all. @Arkency, do you have more DDD content like this (but newer and better AV 😜)? Really glad I found this-thanks for sharing!
@Arkency
@Arkency 3 ай бұрын
Glad you enjoy it Brandon! Take a look at our latest content :)
@MateuszNaKodach
@MateuszNaKodach 4 ай бұрын
I do similar thing extracting rules (event domain rules too) like that to separated classes. But what about is_onboarding_finished? It's disappeared from the code without any explanation between your snippets. Do you cover it with one integration test and then test more cases with unit tests of the ShouldRedirectToOnboarding. Or how do you ensure that the is_onboarding_finished calculation logic is correct?
@vsamiev
@vsamiev 4 ай бұрын
User model 102 attributes 🥵
@YaroslavShmarov
@YaroslavShmarov 6 ай бұрын
Thanks so much Andrzej! I really resonate with your words
@Arkency
@Arkency 6 ай бұрын
My pleasure!
@LjuboThePro
@LjuboThePro 6 ай бұрын
I love what you're doing with this series. Thank you. Keep on keepin' on! Always looking forward to what you'll present next. I'd suggest making two optimizations to your value object. 1. You could freeze the value in constructor, and perhaps make the constructor private. 2. you could also improve the nomenclature of your public interface a bit and maybe rename the create method to build. Cheers 🍻
@Arkency
@Arkency 6 ай бұрын
Thank you for your kind words! And thank you for great suggestions. Those are great improvements that would prevent bypassing the `create` (or `build`) method. Have great day, Łukasz
@in77abhishek
@in77abhishek 6 ай бұрын
How about using view components library? Would it perform better?
@Arkency
@Arkency 6 ай бұрын
We haven't tested that in this particular context. I'll ping you if we run such experiment :)
@samuelodan2376
@samuelodan2376 6 ай бұрын
Ouu! Checking for the difference against production is an interesting find. Thanks for sharing.
@Arkency
@Arkency 6 ай бұрын
Glad you found it useful :)
@literallynoone8223
@literallynoone8223 6 ай бұрын
Where is the answer?
@Arkency
@Arkency 6 ай бұрын
Sorry, the video didn't link properly to the short. Here it is: kzbin.info/www/bejne/eWmsaZ9ro9GKf80
@literallynoone8223
@literallynoone8223 6 ай бұрын
@@Arkency Thanks for the response. Pardon my attitude, I thought it was a cliffhanger and crossing one in such channel disturbed me. I've searched and watched it already, though.
@samuelodan2376
@samuelodan2376 6 ай бұрын
Thank you.
@samuelodan2376
@samuelodan2376 6 ай бұрын
I’d love to see a part 2 😊
@samuelodan2376
@samuelodan2376 6 ай бұрын
Hi, Thanks for making this video. I really enjoy this style, and coincidentally, it relates to a concern I’ve been having lately, about the best way to communicate in intricacies of my code. If I decide to rely on commit messages, the commits will have to be smaller in scope (I like this, but some frown at it). I’m also considering documenting my entire codebase with YARD comments to improve the code editing experience. I use RubyMine too. I’ll give it a shot and see how it goes. Thanks again for the videos. I’m a fan of the blog, and I’ll be watching these videos.
@SnakeEngine
@SnakeEngine 6 ай бұрын
Yep, just the way I see it. The big idea is just message passing. Abstraction, Encapsulation, Polymorphism is just a consequence of that. But inheritance is just a tool for subclassing and implementing a limited form of polymorphism.
@MaciejKorsan
@MaciejKorsan 6 ай бұрын
love your videos - super clear & helfpful 🚀
@someuser5633
@someuser5633 7 ай бұрын
Could you add an episode about using Arkency CommandBus?
@Arkency
@Arkency 7 ай бұрын
Sure. Is there anything particular that interests you?
@someuser5633
@someuser5633 7 ай бұрын
@@Arkency I mean how commands may be used in DDD? As I understand command is a object (Dry Struct?) and we may configure handlers for it. Than we just create a command and run it in controller (instead of calling service/interactor) which produces events. Is that ok if we have command/event handlers from different subdomains for the same command/event?
@fnlvalek
@fnlvalek 7 ай бұрын
How do you usually handle that scenario with conflicting events? I mean, how do you avoid the two workers processing the 2 change name events in the wrong order?
@Arkency
@Arkency 7 ай бұрын
Hey @fnlvalek. You can do that either in a way that we (very shortly) presented in the code. You can find that implementation in the github.com/arkency/taskapp repository. It is based on Rafał's blog post: blog.arkency.com/read-model-patterns-in-case-of-lack-of-order-guarantee/ Next week we'll cover another approach which is based on projections and keeping a checkpoint.
@fnlvalek
@fnlvalek 7 ай бұрын
@@Arkency ah I see. Just keep track of the timestamp for the specific field. Great. Thanks for the detailed answer. Loving these series. :)
@someuser5633
@someuser5633 7 ай бұрын
Thanks for your great videos!
@muzammilbaloch1955
@muzammilbaloch1955 7 ай бұрын
Hey! Great work. Do you have a video on introduction to Hotwire?
@Arkency
@Arkency 7 ай бұрын
Hey! Thank you! Regarding hotwire, we only have one more video about infinite scrolling: kzbin.info/www/bejne/oZnRfItrodaGmqc What topics regarding introduction would be interesting to you?
@muzammilbaloch1955
@muzammilbaloch1955 7 ай бұрын
@@Arkency I have been working with rails on the backend and react on the frontend but haven’t ever worked with hotwire on the frontend. So I would like a beginners introduction to hotwire, how to set it up, when it’s beneficial to use that over react, the proper way to use it etc. making an app from scratch with hotwire on the frontend and then making it a bit complex/real world if time allows
@Arkency
@Arkency 7 ай бұрын
@@muzammilbaloch1955 thank you for suggestion! I’ll confront this with Tomek and I think there’s high chance that we’ll cover these topics. I’ll ping you in this comment once we have new video regarding Hotwire. Łukasz
@Arkency
@Arkency 6 ай бұрын
Hey! We just published a video on Hotwire and Turbo. Feedback appreciated :) kzbin.info/www/bejne/eWmsaZ9ro9GKf80
@davidcook1562
@davidcook1562 8 ай бұрын
Thank you for sharing, I enjoyed hearing the two points of view. I totally agree about the cost vs benefit of adding turbo stream formats (while maintaining a html format). It's usually worth it, but I think we should consider it for each case. It would be great to hear about your experiences on partial performance next!
@Arkency
@Arkency 8 ай бұрын
Thanks for your comment David! We are working on an example to record an episode on the partial performance. Stay tuned :)
@Arkency
@Arkency 7 ай бұрын
Hey David! Have you seen the video about partial performance? kzbin.info/www/bejne/oX-niJueq5trqNE
@davidcook1562
@davidcook1562 7 ай бұрын
Thank you, I just watched it. I'm glad you got to the bottom of it!
@sebastienjean76
@sebastienjean76 8 ай бұрын
Top tutorial. Is it possible for you to host the solution in order to see the results in real life? Thanks
@Arkency
@Arkency 8 ай бұрын
We'll take a look into __hobby__ hosting providers. Meanwhile, you could get the repo and populate the data by running script :) github.com/arkency/taskapp github.com/arkency/taskapp/blob/master/script/populate_projects.rb
@srinath1404
@srinath1404 8 ай бұрын
nice video 💯 More of this please.
@Arkency
@Arkency 8 ай бұрын
Thanks for your comment! We’re currently aiming at producing one video a week. Is there any subject that’s interesting for you that we could cover?
@SupeRails
@SupeRails 8 ай бұрын
👏
@KrisAndrz
@KrisAndrz 8 ай бұрын
good stuff as always!!
@Arkency
@Arkency 8 ай бұрын
Thank you Kris! :)
@Zbelarfaoui
@Zbelarfaoui 8 ай бұрын
thanks
@Zbelarfaoui
@Zbelarfaoui 8 ай бұрын
Thanks
@Arkency
@Arkency 8 ай бұрын
Did it make projections feel less mistified to you?
@SzymonFiedler
@SzymonFiedler 9 ай бұрын
11:15 shots fired!
@Arkency
@Arkency 9 ай бұрын
😅 broad imagination, that wasn't planned
@eloisefranecki
@eloisefranecki 9 ай бұрын
*promo sm* 😭
@Zbelarfaoui
@Zbelarfaoui 9 ай бұрын
Thanks, I hope you can share in the future some more complex use cases about event sourcing, like processing events coming from different bounded context
@Arkency
@Arkency 9 ай бұрын
Thanks for suggestion. We'll definitely do that.
@piotrromanczuk9636
@piotrromanczuk9636 9 ай бұрын
Greetings from Piotr 😉 Kudos to you guys and to Szymon 💪👏
@Arkency
@Arkency 9 ай бұрын
Hola amgio! 😎
@OlgaGrabek
@OlgaGrabek 10 ай бұрын
Tomek, I'm in shock 😂
@Arkency
@Arkency 9 ай бұрын
Lukasz also looks shocked in this episode ;D
@OlgaGrabek
@OlgaGrabek 10 ай бұрын
Hi guys! Can you link previous episodes in the description? :) It would be helpful to watch episodes in order. Thank you!
@Arkency
@Arkency 9 ай бұрын
Hey Olga. We'll do that. Thanks for tip :)
@israzulka
@israzulka 10 ай бұрын
I need more videos of this kind of content please!!
@marlow0conrad
@marlow0conrad 10 ай бұрын
Thanks, this is a helpful technique
@MaciejKorsan
@MaciejKorsan 10 ай бұрын
a really useful tip!
@aaronmcadam
@aaronmcadam 10 ай бұрын
This was really good, thank you! How might you deal with feedback from other engineers who might think adding a new class is too much work and not worth the effort for this logic?
@Arkency
@Arkency 10 ай бұрын
> How might you deal with feedback from other engineers who might think adding a new class is too much work and not worth the effort for this logic? I would try to find out why they're reluctant to adding new class. Adding a new class often improves readability and it might be a step into composition. However, in some environments discussion is not an option. Then I would create dedicated public method instead of class. That would do as well. The goal is to be able to make sure we can unit test the logic. //Łukasz
@andrzejkrzywda_official
@andrzejkrzywda_official 10 ай бұрын
Pairing and showing that extracting a new class is easy and fast - this may prove them it's not a big deal.
@conradtaylor29
@conradtaylor29 10 ай бұрын
I enjoyed how you first discussed the events and state machine before diving into the code. Next, I would like to see how the Ruby code can be better optimized from the current solution. I look forward to watching the next video. Bravo!!!!
@Arkency
@Arkency 10 ай бұрын
Thanks for the comment, and the idea for one of the next episodes, as we will definitely use it :). Do you mean making some kind of aggregate (as in tactical DDD) from Task, that includes those rules that we currently have in the service class?
@yogabija
@yogabija 10 ай бұрын
Thanks, great video. I just replied on the linkedin post with some specific feedback. Appreciate you making this approach to development more accessable.
@MaciejKorsan
@MaciejKorsan 11 ай бұрын
🔥🔥🔥
@aljunior1281
@aljunior1281 Жыл бұрын
Any idea on how to scale the creation of schemas in Rails in production, i.e., make the creation of new clients or tenants more dynamic, perhaps with Kubernetes or what strategies do you know?
@misterhtmlcss
@misterhtmlcss Жыл бұрын
I can't find a video in your library that says "Polymorphic" in the title. BUT your stuff is awesome, just pointing it out that it's non-obvioius.
@andrzejkrzywda_official
@andrzejkrzywda_official Жыл бұрын
Yeah, it’s part of the (paid) Rails Architect Masterclass. Thanks for kind words!
@JoseGarcia-r8g3j
@JoseGarcia-r8g3j Жыл бұрын
Great content
@pging8328
@pging8328 Жыл бұрын
tomasz i think your girlfriend is calling you? I think it would be good for your safety if you stopped your screencast and immediately answered the phone. please let us know if you are still alive and have full use of your limbs. thx.
@benjamin-lieb
@benjamin-lieb Жыл бұрын
I enjoyed forcing my mind to think of new ways to envision building rails apps. That said, I still don't think I would implement this like this. First of all, I'd have a a JS component on the front and send ajax calls back to the server. Secondly, I don't quite get the "command" you made. It doesn't seem to be a command at all. It doesn't apply the code, it just validates the code. Am I missing something? Is this a DDD thing? I think a PORO called ApplyOrderCode would make a lot more sense here, using a result object for reporting. Then the controller just calls it. That's what I would call a "command", but it may be just a semantic issue. It takes all the logic outside of the controller, even the error handling. I'd probably reach for the Interactor Gem for something like this, or some kind of service object, but a PORO would be fine. I like the use of the Dry library and need to look more in to that. Thanks for sharing your thoughts.
@siyaram2855
@siyaram2855 2 жыл бұрын
You channel is gem, not everyone has te eye to recognize a diamond. Please don't care about the view, those who have eyes will see and recognize the value of your content
@AchmasSmati
@AchmasSmati 2 жыл бұрын
Yeah this doesn't answer the question, but this is actually relevant to what we're going through in starting our development firm