Add to Watchlist

Trailblazer: A new Architecture for Rails

2 views

Citation of segment
Embed Code
Purchasing a DVD Cite video

Automated Media Analysis

Beta
Recognized Entities
Speech transcript
and and and and I think that this person will have to clarify that the torque title in the program is wrong the talk is cultural a new architecture for rails and not see you on the trail because of not gonna talk about hiking have no idea how this and I'll get into the rose from program but anyway you hear that's cried thank you the and the how you get you started no it's sigh and I have a question before we start the actual talk it's
a serious questions I have a problem with Active Record um so I have this post class and I have this comment that model and they have a has the most too many and has and belongs to many relationship so the post can have a lot of common so many comments and then my problem is when I create a post here at the post is um the post is persistent already and then I add comments to that post
how do I prevent Active record from from automatically assisting the new state of this post because I don't want this the comments to be persisted yet so I have tried this and it um saves the comment I've tried this and it a a comments and I've tried this and it says the commons to can anyone he explains how I can prevent Active Record from saving the comments the like called safe that but don't but that build called start new internally doesn't the the problem is that the problem is and that that's a serious question has because we have this problem in form that when we set up their collections internally and then assign them to the to the collection attribute like comments it saves the entire the entire object and I don't want this so if anyone has an idea how to prevent this please hit me up after the talk because a desperate and don't wanna read through all the active records of human entation I could just ask Aaron popular somewhat traders
um so before I came to Atlanta I
was struggling a little bit um to conferences so this last up before and then Eliza Venice in Lee and M. at the end of Section that's wrong and I was in Minsk so that's that's a regular maps in Belarus it was a
great conference migrates because those who
had a couple of drinks and was fantastic
about the fact that I was in the Himalayan just could use the slides so the fact that I was in that is that in Lithuania the becomes was a great conference on some
speakers and we a couple of drinks was also
all of the things that I was in Poland ad
and the rest laughter conference um brothers beautiful there's
churches and cathedrals all cathedrals and judges have no idea was a difference beautiful city was a great
conference grades speakers there was a couple of drinks was
also before that I was in Brazil and the tropical really conference as the money you have been to brazil yet it looks like this the it was
a the so that that's that's beach like palms and stuff I can then how but the shy I don't buy it no and the Brazilian government because was it also conference
we had have also speakers a couple of drinks was
great before that I was in Mexico at all Harker of oil great place I give it a the target at
a user-group double Trebizond this was amazing the community is incredibly cool
we've had some good speech as a couple of
drinks Thailand had against command was awesome and
before that I was in Australia because I to live in Australia I'm from Germany that's where the extant come from and that show you photos of Australia because it's beautiful and you should all come visit me there focus on what
traders note that some rails we all don't
e-mails right yes yes this is a relative rest comes so and Ramses um the famous web framework to think is it in no is famous for its monolithic up sort integrated system architecture the and this is a among the and this is a
service-oriented architecture whatever so
rails comes with a where you play you doing here stage by the way but was children cold-shouldered Welcome to Atlanta thank you OK let's get back trails and rails NBC we all know would like it gives us 3 official as to implement applications the so-called model the so-called control and the so called you and that's awesome because them it is quite a simple set up a simple some level of abstraction so you can get up and running and applications within minutes you can build a block application in an of 15 minutes or what's the what's the was you know official selling part of red whatever so you can get 10 minutes thank you yeah so you can get up and the uh navigation pretty fast you can you can them you can implement stuff without thinking too much about encapsulation about like and not that might that we have for a job analysis so that's actually greater grossly you get up and running in minutes the problem
is that you only have 3 affection as and all your code interviews analytical those individuals and only could goes into models and that is usually ends up like this and them the problem here is that the origin of selling point of rails was hey let's have conventions and let's have standards but once the application gets a little bit more complex you have no idea where to put this code so 1 of the major problems in rails is programmers asking whether put this kind of coded rails and what ends was so we end up with like huge models that skinny controllers but still have 7 levels of indentation and all that kind of stuff and M. nightmare views with its and L. additional so as staff to make them reusable so the problem is um this monolithic M architecture for me is not enough the this is the moment of that which showed
in his also keynote I couldn't find the original photos like draw a picture this is a camera on the right hand side the but they have undergone and I'm not artist right I shouldn't talk about cutting it should be paid to the living on not work with this guy but you already have leader by the way if you fall asleep we have stuff to throw at you so please stated bear with me and stay awake as so the minus the monolith in rails about is I don't have a problem with monolithic architectures at all like I don't want to plus 7 restaurants when I just wanted when it just wanna solve 1 problem OK so so the thing is and I think age age get this wrong is that monolith at that the here the only M um alternative tomorrow it is not to service architecture this we have we have them I don't like them monolithic architecture doesn't mean put all put all the code into them into 1 into 1 M into 1 Rails application and that is a model if can be a service oriented architecture itself like you can have so is inside of a model it's just about it's just about abstraction layers animal and so when I say more with arms and talk about 1 rails but it can be a beautiful object oriented well destruction architecture in a monolithic so please when we talk about mode with micro-services don't think of this as a physical at this is 5 physical ABS because you can have so this is in a moment and the problem but the problem here is I was
just talking about having objects and so this is in a model of the problem is in rails on the rest community when you when you come when you start adding new abstraction layers to NBC people parliamentary them blame you for being
too enterprise or you all
engineering and this is too many objects I don't like this can't be good at this this has to be slow because objects are really expensive I mean every string is an object in Ruby cell em microorganism that rails use that then we say rather simple and areas of of that actually it's easy because simple is subjective and easy is object if something that so that I got tortured in Lithuania that this is wrong statement so rest is easy that's every resident however prezzies easy it allows me to structure complex applications easily that's that no 1 ever because it is not true so funny and so what happens in rails in in a class
here as I just walk you through the class symptoms as seen in a lot of rails applications my job has been refactoring reservation for the last 10 years it was have a tough job loftiest blood but also to use a giant so let's
check out the class control in males M. we got filters that enter logic for pending different contexts for Henley authentication or the kind of stuff that we have a model coat you every control actions he has a lot of model codes instantiating creating Leadenhall and changing attributes then we have them again contextual Logic decide as is is some insight into this summer's not signed into that so there's côte handling different contexts in in the control action then we have a call that logic like do this if that happened and after this to this so is like it's it's a it's a lot of business logic and in the control action and then we also have rendering code sitting sitting in a control of and this is a control makes this is a beautiful control action I've seen control reactions with like as I said earlier 7 levels of if then else and do this and that so this is what happens because we we we chat in all the code into the control or my favorite part into the
model so in models we have them we have them configuration for false I mean I know we don't use as accessible anymore but you know we we define fields for forms and we have the acceptance attributes to handle 10 of them form submissions and to handle and the serialization but we only have 1 form the model because we don't have context and then people Atkinson else due to to configure that Delaney this form in that context and indeed this fall in that context when an admin so in a horrible designers in in in active model and and also we have called x sitting in the model and colleagues that get triggered at them so that they could trigger and you don't want it and sometimes you want them but they don't get triggered and it is smells and it is a nightmare because we collect all code in 1 in 1 s acid in 1 class and of course there's also termed this logic in the most everything sits in the model
and I mean you know just to run through that because there's I think part of red obligations we have
help us and access to models and access to a 7 levels of attributes of models and we have decided as that to decide about the context and if if it's an admin render this if it's not an admin render that so lots of code and then we have help us that that are supposed to help but
they you nightmare because if they pass around 200 wait the it was supposed to your head of but he plays baseball OK so helpers II is that was never had helped me because what what and others that has a million variables and objects to 2 nested helper calls and we have a again deciders due to decide the context we have rent part of this peasant local so that it it is it is and nightmare so when you when you look at it when you look at Plessey web application a doesn't editors rails it's natural what it boils down to the following requirements that we have program the request so the 1st thing is we have to dispatch the we had a requester Mr. dispatch if it is is additional to this is adjacent to that in case you have document API the then we it to authorization is it OK to run this request is it OK to run this logic that we we validate the incoming data and is it OK is it is it all and that this format that I want is is a user allowed to run this task and so on then we actually run the business logic so this is where I am the when you run your you're actually domain code and then this usually stuff gets persisted after you after you run the business logic and in the end we render a result so it's not that hard as the 1 2 3 4 5 6 steps of some of things that we handling request but in rails the controller handles the autonomic parts of that and then the model of renders the higher handles part of this stack and they they also overlap so you have model that should be in the control and you for control a group that should be modeled and then they viewed as a little bit here and there and as of yet something there's a little more so there's a lot of overlapping code this is not the and rails when I put my cold wet what what's what's that was the place for this kind of logic and travel as that which is a cool new
framework and an open source but when you can trigger and it's got the best book cover ever do you recognize people but I just got taught that this 1 is geared to hate that like this the so in Chernobyl is a we have a the Banditron is is take these them with we get this the 6 steps of logic and an application and now take this and structure give me a structured help me structuring my Rails application and
basically this is trailblazers I could just go only so this diagram took me about 10 hours to
do it was a lot of work has been viewed ranks I had a couple doing that you so am and that we have that we we introduce a couple of new abstraction layers that shown in this diagram and water quickly through the EM through the concept after this we're going have a life demonstration by my friend I were jails to new the public privacy last name he re Huey and you can learn a little bit about and how to structure recipes using the trouble is approached so as the 1st thing I
mention is that the old layers are still there so we still have control of a set of models and we still have old fashioned views if you want that travels a non intrusive so you can use it you can use apostrophe you don't have to use every layer and you can use it we feel you need more abstraction so you don't have to use trade as across your application of course I would love to see that but whatever
so in is come on we got em
we get the following and layering so now it is clearly visible which layer is responsible for which task so what we do in is we introduce operations operations are your business logic in operation it is not a monolithic beast and operation internally uses forms uses represent us for that use fossil validation dieselisation use represent as you you run your you're neuron manual business logic in an operation and operations also have access to models but controllers only access operations and use only exist operations and model so there is a clear layering in in Trebizond which layer is supposed to do what it I have this some
new technique in my talks with the where whenever this slide comes we do unit breathing exercise very simple so you inhale as much as possible you keep for 2 seconds at thanks it's great the that but how does it work I have
no idea the and the controller in
Trebizond ends up as a really really slim dispatching acid so there's no business logic no persistence logic note know validation now called x in all play in controllers the controller simply dispatches to the operation so this and up was really really slim controllers
and this is my favorite part the model trade there an is nt although the model dust and readily is it defined associations and it defines so scopes so basically we use such a bore models the way models was supposed to be this this is active record this is active record by Martin follow because per definition and I don't care what definitions patterns usually but active record was supposed to be and persistence layer without business logic and this is what we have in Trebizond you can still happen that in a moment you want that but the definition we say don't put it in the mall and we also have to use we
still use Rails using a number of traders as I
can still use them Hamelin yummy and all that kind of stuff because is also I don't know some people don't like Hamilton that people on the EIB but that's another story them you can still use help as you can still use the apostles all the set but but we offer you some
something new it's called cells actually not use 10 years old it's and the cells of you model so you won't have you to
encapsulate pass all the interview into objects we call it the widget in software engineering and this is what is and missing in rails in the neural stack so a cell ironically is called using a help yet but all that happens is a dispatch to the cell class I'm not gonna go into the detail cells but if you have a class that represents a part of and this class can render a partial view itself we we call we we call posses use because there is no difference between views impossible because everything is a possible the parcel is logic less as I call it so you still use Hamel histories give you can still use help us but you only call methods in your view and the cool thing is if you call a method like body all other top this method is called on the cell instance so we don't have this problem that we have in rails with view context anymore because the cell is the view context so if use if you call methods in the cell it's get it's getting called on the on the instance it's really really helpful to replace help us and to have an object oriented approach to any of you and as you can see it you can still use
image tag and your L on all those great help a simple form whatever in in in cells because that's what makes rails also that the view help that actually help but we don't have this distinguishing between like this is the controller context is a view anymore because everything is just an object enter the brand new thing drovers is
the business logic called Operation the domain name and operation is a class began
minus so many classes I don't know where to put all the classes an operation is consists of a um yeah a contract
to is this 0 as invalid input and business code and so the contract
is defined in the operation of the contract is just a reform class you know which of you know reform reform a form object jam for rails and we use reform in travel to deserialize and validated Diana without touching the model so operation is always have a formal object yeah the
actual business logic happens in 1 method called process and that should be the only public method in that class and that in that process methods I mean we we're probably gonna walk through that In the light among which is so in proper operation and the result is the business logic the actual logic you you EU domain consists of happens in the operate in the process method and them so you you still excess models is still safe models by them a lot of work is already done by the operator for example validating and assigning the data to the actual model is done in the valley they call if you want that you don't have to use it but I like
it began with the they want to read as they should start doing yoga and other the professional voice OK so I am the
last thing in this introduction is I would really wanna talk about high level architecture because where the people of the what is trained as a state it is a high-level architecture for for rails what is a high-level architecture well a high-level architecture everything that sits between the request to dispatch and the persistence that is what I call a high-level architecture this is whereas the leaves you completely and include clueless because there is no high-level architecture there's a control there's a model in this view end of what we have to learn
we have to think in our domain and not in controllers and not in models so as an example every application has functions functions the user can perform like you've you the way to shop like you've used shop and then you can add a comment to the shop and then you can follow the shop to stuff when you click through an application that's functions yet and in them and in domain-driven design I have never read the book but apparently this is what we call a use case and in Cq are as I have no idea what it stands for but it's great this is called a command Bensalem apparently this existing science about this before but this concept so any rails what we have is use cases and commands get implemented in control actions a little bit a little bit in a model and live in view and maybe a little bit in your hand made service object and maybe a little bit in I don't know you presented object and this is the mask and when I when I people tell me rails so simple you can handle the project in the next program is going understand everything if this is not true this is wrong but has seen lots of rest projects every project looks different the great at all with the controller sitting right and over the model sit and I know whether we use a lot but where's busily how structure because it is a nightmare and what trend is
that is it introduces the operation so you you clearly know where is my business logic and what's the structure because every operation should have the same structure validation he civilization business logic call that and them also in operation is not just 1 cracked thing that has 1 models and operation have multiple models and an operation is also not to M and monolithic beast as I said earlier in mind and operation is a composition of objects that help you to em handle your request but and it's it's in orchestrating an instance in your in your em out in the architecture the the coolest thing
about trailers is bad and it has a new structure so instead of clattering a files into at control about and I have you probably have more little you have 1 level of folder in this called the concept so we structure in trailers we structure coat into concepts comment thing um I don't know and in invoice generation that's all concepts and them all the code goes into that folder that has a couple of them benefits for example if you rename something you don't have to rename fought directors you only have to renew 1 directory but that's only 1 of 1 benefit I find it way more intuitive to go through that directories see OK we have you models OK we got operations a here's my model OK here's my and unlike help us and as and also the views for the you must sit in this directory sites it's way more intuitive to to to grasp what what a cone and what a concept is doing tremors yeah them
Austin that she would write a book I I do want to show some some Trebizond action right likewise you got that you only get 10 minutes all thanks to you have the this is a really unprofessional I usually prepare every slide so I don't have to do this kind of stuff but he wanted to be part of the talk so it's all his fault if things go wrong that's all year after the isolated ah yes
so as I said a is actually I
it sits on top rails and as we know is the 1 thing I like about as it gets he said you don't have to abandon your typical reals architectures that the way that you like doing things on so what I did was I basically build a personal blog OK because it's a blog everybody knows that works you know it's you know class example so if the thing will do what I want to do it's not moving window stick technology or most molecular weight you anyway but because I'm full screen of that OK so lost the
ability also water loss this because they are on anyway so the idea obviously it's very simple you know you just for a blog post you know type information title Paul laws and just for fun and said you know this is marked enable he's extremely proud of this marked on feature I I like more down it renders all the front and so is it's implemented in revealing it of the city it's public Nolan here anyway so I presuppose
lot done Greta editorial edges anyway so that's the basic idea that I'm only here now we've all done this in real this is very simple from you know prospective real it's you know molecule of but i in terms of how we do this in trailblazer as they said the controllers are really skinny very tiny as the father of this thing but I don't think you think you are so OK big deal here was controller obviously we have you know you're index all stuff of new OK so funding to create new for new of your post object or doing here saying work on this form method on post create was this post create analysis right this comes from the concepts directory and of course in the process of just got post on a file called which pre of the week so I in here is required from laser operation growing most cited by the way on next so what refers to the wiki and you have project trouble is and in the book that information in a minute yeah yeah he was vise book but but anyway so so that from a sweet obviously reducing here's were subclassing here to be opposed to his racked record effect create class hints form post create and 1 thing I have to mention is just because we reuse the post namespace which is an active record model class does not mean that that operation create does know anything about active fricatives just reusing and Rubina space is a big have confusion there's a lot of confusion traversing in the community people think that create now is inherits from Active Record or something no we just reuse routine space so this is how you create new spaces in a in so I can have classes in classes it's great right trick to have readable and right it's also heard this as well so that there is a question that I'm beginning might have given the fact that would you say we need this in this way but what is the potential of future for separating trailblazer from active records lot of the or em more no or in all what do you think any assessment you know horizon was well Chavez is not limited to Active Record but in an ideal world you had opposed space that's not a model and you had your operations in in that namespace in it and yet the model that's called for example persistence they had post comical common persistence that's my ideal vision but in rails models are on the global namespace so that's my trick to reuse this next but ideally it in a separate it's it's amazing to really space and you have the position sitting in that space and then you can replace it with them in any kind of or and you want to write on OK this is just of that explanation away here basically wikis and you can look over the documentation is scabbard ordering here's this is a contract and this is kind of neat of a public provides some of the stuff you you promising acknowledge example usually goes model but in this case for telling it what you know you have property of a title body teaser which no offer air force catering nested relationships because the post has 1 author and the post 30 the author belongs to the post in terms active records macros here so you see here has 1 author what about OK so we've seen these associations for MT models exactly in the models of know what they're it's the that's pretty pretty all so of course for doing properties here inside the cell this block so what's going on here is this is how we tell us a trailblazer that hey by the way you get this thing called offer and by the way is that these 2 different properties Name e-mail this is what gives us the ability to put this inside the form notion that could foresee reevaluations underselling presidency you know FIL filled out now this is kind of a big bigger the big deal right here this process method II is going to as you see here is that this validate blocked by insisting nature that's all you know princes you pass into it R&D knowledge if so it will call saving so that is how we manage the persistence in this case and now there are a couple things that I'm going to ask me to then we had over right you Active Record of methods as well so we were looking at doing the here the we call a thing is so so that the operation doesn't know anything about having a dozen about the structure of the nesting but the operation does not know how to create and for example how to grade the Knesset off of the common so you have to provide that manually I mean there's ways travel that actually implement this for for you and you can just configured it but um in this example we explicitly create the to add to have this nested models set up exactly so we tell details explained in the book right so in other words this this community is a little tricky around some stuff that record anyway so that is exactly how that piece work for here something inside updates were so inside the post class or it worse idea yeah so the the POS class and will it is my view Nice through the area and I was saying the same thing but then you get 3 more minutes OK for the year so that they were are so anyhow were so inside or pose class here we've got a class called update inherits from create so we can also call up the action this later from 1 to the right that the actual architecture for a forms knowledge as we know the the idea so we also call so small here I in over but it's in the states so moving on here as you can see the QoS controller that use the word is a form of post create done create runners operation post create do OK and that's what I think is only executed when it's when the validation was successful so so that's the only information the operation exposes I'm I was run and I was successful I was not successful so the controller does not know anything else unless you do that and as you and extend their operation right trying to enforce OK so anyway I were basically running this run was create and antimony variables and all acts on it redirects here is not model so in other words this could be you know there's no hard coding of OK post war you know whatever might else might be here just call model that's it so we got for in this case cost of adding and that of course the return parents don't want anything to happen if you know this actually works so as opposed to when new action here shows you see 1 line presented post update OK cool of the actual update method as well same thing I added all that stuff so it cost I'd like a student in and we're all different this is so the point is that the control really just delegates to the the to the operation and handles HTTP specific stuff like redirects because that's not just a concern of the the operation does know anything about HDP and the control doesn't anything about the business logic that's the whole point about this and structuring right so it's say what the if the when the up it fails then and there the block is not hit so you don't have this return redirect to the block is only executed when is valid and that the followers rear ended that doesn't just as you do your control actions and rails for the whole point is that the the block is only executed for successful operations exactly so this this thing doesn't work in the light of the on out of all of this next piece of code 0 here we are retraction new new of it so we got the object accessible inside the former instead of you and we can then look at the errors on the object is like at record In fact show you fighting actually see the screen and of use so I don't have a near you with right is unprofessional right are so and that posts on their use growing posts in 3 simple stuff right OK we've all seen this before here is our form of OK the same if the number of errors objects you know that 0 then I you we are problems wall what we seen this before now in this case using simple form I basically I saw some of the extracted features like units and you tolerances it work the like that so as you see very simple or compared to existing Active Record existing rails very much the same thing you gotta inputs you got all this stuff inheritance fields for author or so of course the form object represent you know the supposed and now we have the the author object of pose and so on so there's the inheritance at 3 simple well just you you know this kind in a nutshell there's a few other things but underline it take this bag others little bit of configuration might have to do you know much of which is documented let's get back on such upon it a POT ON C K and you for the trouble is really just a little troopers acoustic do rocks yeah yeah do that yeah I think your much the fact
so that was awesome like you imagine just wrapping up in the next 2 minutes I'm from the so the thing is we have that is
we can travel we have like negative easily have nested set of like the nested we had you know you
nest the all the into a common and all that kind of stuff so that's really really helpful and all based on the reform jam said nested validations as well clean implemented and I this
great you have a lot of things and travels are based
on inheritance so it you we we use object orientation the way it was supposed to be yes so
we so by inheritance I did not you know that that if you can roll the town and you sibling content is not a sibling but
so this is my sister had apparently unaware that different patterns whether this somewhat inheritance
and so am a is you can operations inherit from from from other operations and you inherit the contract inherit the represent all that kind of stuff is clean inherited into these subclasses and you can also have is made to makes it really easy to alright specific aspects of the inherited stuff like you can override properties in the contract they can over can also already nested attributes in the country you can override the stuff and configuration from the representer you can overwrite your business logic it's just using and plane Ruby inheritance and the way called X in
trade work is also very straightforward
so you remember this ability that we reset the model so usually this goes into like the common model in in in rails in trailblazer this goes into the actual prevalence it'll processed method so you can call them called X explicitly I can use the dispatched define which comics to call
and the cool thing is the so get about inheritance is that we also added no that M like if you
have a gap achieve your siblings are supposed to have a gap as well I don't have a photo to prove it but this is also wrong because my sister's son have a gap and that cheese and that's about 100 solar something is a little thing is you can also the activate and and callbacks in inherited inherited and operations for example in update I might not wanna have the check spelling and call that to be called so I just am skip it so it's really declarative and simple to all right behavior and
also areas words with represent as policies we also have policies in authentication Travis and not talk about this today and I'm sorry and it is also good to inherit configurations
represented also they render and pass stuff so this is helpful for operations when you when
in operation does have Jason there so that the Intel them contract can them build and a representative the represent helps you to work with Jason or the kind of stuff and operation can pass and render Jason as well the 1 that is also and then they can others is not a monolithic piece
it is an orchestration off all objects handling every aspect of your of your request and them because they would only that we
we do this on our own I agree but Petrobras is an attempt to establish a stand up again so
we get also stuff in journalism like polymorphic abrasions and policies and Alliance it's great
to check it out classic often on the impact that comes less Trailblazer the impact that counts slashed trailblazer the part that comes less trailblazer or you can google it we also get stickers
because thing about the because you don't like Trailblazer just cut off here and then you have free Ruby sticker you have how how how how lies a litany I'll give you a circuit maybe and the the
decoding is them and yacht sponsored me to come and give this talk so they basically pay everything they also they're really nice I'm not affiliated with them but I find it a great thing and other companies should adopt this to support open source of this because it is great if you can speak at a conference and and you meet all some people and a great company stays behind you and support you so thank ng out and just to wrap up yes Trevor they give you new
especially as use operations because they help you
structure business logic use all my gems
and a and B and the less each other thank you very much but
the use of arms and hands in
Computer programming
Architecture
Computer animation
State of matter
Scientific modelling
Object (grammar)
Row (database)
Social class
Form (programming)
Attribute grammar
Human migration
Slide rule
Mapping
Sheaf (mathematics)
Bit
Regular graph
Computer animation
Gradient
Family
Subtraction
Speech synthesis
Web 2.0
Digital photography
Email
Computer animation
Meeting/Interview
Architecture
Software framework
Quicksort
Physical system
Game controller
Process (computing)
Block (periodic table)
Scientific modelling
Mathematical analysis
Energy level
Service-oriented architecture
Cartesian coordinate system
Mereology
Abstraction
Point (geometry)
Game controller
Standard deviation
Service (economics)
Code
View (database)
Scientific modelling
Moment (mathematics)
Staff (military)
Bit
Cartesian coordinate system
Programmer (hardware)
Arithmetic mean
Digital photography
Exterior algebra
Computer animation
Architecture
Energy level
Right angle
Object (grammar)
Abstraction
Asynchronous Transfer Mode
Enterprise architecture
Goodness of fit
Computer animation
Scientific modelling
String (computer science)
Cellular automaton
Statement (computer science)
Object (grammar)
Cartesian coordinate system
Abstraction
Social class
Authentication
Filter <Stochastik>
Context awareness
Game controller
Group action
Code
Scientific modelling
Cartesian coordinate system
Mereology
System call
Code
Attribute grammar
Process (computing)
Computer animation
Logic
Subtraction
Social class
Context awareness
Serial port
Code
Scientific modelling
System administrator
ACID
Mereology
Field (computer science)
Subset
Computer animation
Logic
Form (programming)
Social class
Domain name
Computer programming
Context awareness
Game controller
Code
System administrator
Scientific modelling
Decision theory
Mereology
Attribute grammar
Authorization
Energy level
Task (computing)
File format
Bit
Variable (mathematics)
System call
Local Group
Web application
Logic
Personal digital assistant
Volumenvisualisierung
Text editor
Object (grammar)
Resultant
Open source
Logic
Software framework
Online help
Diagram
Data structure
Cartesian coordinate system
Game controller
Video game
Scientific modelling
View (database)
Ranking
Water vapor
Diagram
Set (mathematics)
Information privacy
Cartesian coordinate system
Abstraction
Game controller
Computer animation
Validity (statistics)
Logic
Scientific modelling
Transport Layer Security
Task (computing)
Form (programming)
Slide rule
Game controller
Computer animation
Validity (statistics)
Meeting/Interview
Logic
ACID
Units of measurement
2 (number)
Computer animation
Logic
Scientific modelling
Moment (mathematics)
Pattern language
Mereology
Associative property
Row (database)
Number
Context awareness
Software engineering
Computer animation
GUI widget
Logic
Cellular automaton
View (database)
Online help
Instance (computer science)
Object (grammar)
Subtraction
Social class
Medical imaging
Domain name
Context awareness
Game controller
Logic
View (database)
Cellular automaton
Design by contract
Online help
Object (grammar)
Form (programming)
Social class
Domain name
Process (computing)
Code
Logic
Scientific modelling
Design by contract
output
Object (grammar)
Resultant
Social class
Form (programming)
Game controller
Meeting/Interview
State of matter
Architecture
Scientific modelling
View (database)
Energy level
Computer programming
Domain name
Game controller
Group action
Service (economics)
Validity (statistics)
Civil engineering
Scientific modelling
View (database)
Transport Layer Security
Projective plane
Bit
Instance (computer science)
Cartesian coordinate system
Functional (mathematics)
System call
Twitter
Personal digital assistant
Auditory masking
Logic
Architecture
Object (grammar)
Data structure
Slide rule
Game controller
Group action
Electric generator
Computer file
Cone penetration test
Code
Scientific modelling
View (database)
Online help
Directory service
Mereology
Website
Energy level
Right angle
Data structure
Touchscreen
Computer animation
Blog
Real number
Window
Social class
NP-hard
Group action
Code
State of matter
Scientific modelling
View (database)
Design by contract
Quality of service
Traverse (surveying)
Wiki
Error message
Position operator
Social class
Area
Email
Touchscreen
Process (computing)
Spacetime
Block (periodic table)
Namespace
Gradient
Sound effect
Bit
Variable (mathematics)
Category of being
Architecture
output
Configuration space
Right angle
PRINCE2
Data type
Row (database)
Point (geometry)
Game controller
Computer file
Code
Field (computer science)
Number
Latent heat
Term (mathematics)
Natural number
Authorization
Ideal (ethics)
Data structure
Macro (computer science)
Associative property
Subtraction
Units of measurement
Form (programming)
Information
Inheritance (object-oriented programming)
Validity (statistics)
Cellular automaton
Machine vision
Forcing (mathematics)
Physical law
Projective plane
Mathematical analysis
Horizon
Line (geometry)
Directory service
Vector potential
Subject indexing
Word
Computer animation
Logic
Personal digital assistant
Blog
Object (grammar)
Separation axiom
Computer animation
Validity (statistics)
Meeting/Interview
Inheritance (object-oriented programming)
Content (media)
Design by contract
Attribute grammar
Category of being
Plane (geometry)
Computer animation
Object-oriented programming
Meeting/Interview
Logic
Configuration space
Representation (politics)
Pattern language
Digital photography
Computer animation
Inheritance (object-oriented programming)
Scientific modelling
System call
Area
Authentication
Word
Computer animation
Configuration space
Design by contract
Representation (politics)
Polymorphism (materials science)
Computer animation
Object (grammar)
Mereology
Digital electronics
Computer animation
Open source
Freeware
Computer animation
Logic
Data structure

Metadata

Formal Metadata

Title Trailblazer: A new Architecture for Rails
Title of Series RailsConf 2015
Part Number 76
Number of Parts 94
Author Sutterer, Nick
Hughey, J Austin
License CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
DOI 10.5446/30713
Publisher Confreaks, LLC
Release Date 2015
Language English

Content Metadata

Subject Area Information technology
Abstract Trailblazer introduces several new abstraction layers into Rails. It gives developers structure and architectural guidance and finally answers the question of "Where do I put this kind of code?" in Rails. This talk walks you through a realistic development of a Rails application with Trailblazer and discusses every bloody aspect of it.

Recommendations

Loading...
Feedback
AV-Portal 3.5.0 (cb7a58240982536f976b3fae0db2d7d34ae7e46b)

Timings

  634 ms - page object