Merken

Curly - Rethinking the View Layer

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
the the the so in the and the and and provides I they go becoming here to us and to hear me speak and I'm very honored that I know here it's the and to see me and many nostalgia back I go by cash on the internet so you can find me on the traders in the get up and all that and I
came always from Copenhagen to be here i and comments I use like that's usually disarranged but I think you can use Buddha that so that the set of
OK so 1st Islamic suddenly in a JavaScript here the I'm very sorry I thought that I will have something that the look a bit like must act so you look malaria looking what does get unsure how many years like mainly like just define ending this up in a lot of a k right so this is all server side of regenerated views spread out a lot more like classical earpiece so all into all that later this is don't want to disappoint too many people I work
at a place called CERN that's what we do customer support software I rear coaster platform so look at any not just that people can complain to and will give you like and you Isere employees can manage that support repressed all that stuff out
this title curly you be thinking the viewer I'm going to get into book early it's really is an open-source project at that helps you write reviews Herrera but FIL this nice story behind some the design decisions from white curly looks the way it does and i want start out by sort of telling you that story and then I'll talk about early and how it will make the lights bodies
so it all started with how we came to bold new template language and why we did that so something yet but they did typically set out to do it's sort of pain in the ass and once did that you have to like right actual templates in that language and what it could then decide that it was a stupid language then you have to write all the template so is something you really think long and hard about before you do it and there are lots of options already so when we do bowl the
last 3 4 years of working on a product that we call helps but it complements the means and this functionality which is to get support and it's a hose knowledge in human is a site and integrates with sentence but it's sort of its own product on this last but version to basically of an older product that we have there was also was not Committee's site but it had social comics and 1 of the big shortcomings was that it was very difficult to customize we allowed our of customers logo and change some background colors but when usually is entry in the knowledge base it all looks sort of a light right arm and the differ within local like the brain to our customers and our customers were not happy with that of course so we then made the choice to allow them to inject JavaScript into their knowledge base and Jewish site and and that words like you know a lot of stuff just gets arm and he did it the added custom widgets the added text on the removed features the data like I can be reordered stuff the change colors of bonds everything so this will look like their bread I was greater and they were somewhat happy but that implantation had some shortcomings are mainly we looked at the side need 1st to render but the fold field and then once downloaded the a bunch of jobs could be rendered like would render the things change everything and things like move around and jump it's all sold readers and didn't feel that professional want to know the problem was that since all customers using job scripts to change things the could depend on anything like the used In the last name in a sort of tap name to high behavior and to do selectors moves up around and that in winter remember that we could really change anything about the each mole without breaking lots of customers sites and we had tens of thousands of customers so it was impossible for us know what would break for we made a change then in the end demand that we didn't really of the that side and then we just let it sort of stagnated because we just too much pain tract may change so it looks like something from like the early 2 thousands which sort of that we're trying to sell to customers also so we decided that version to among other things I want to address the problem wanted to have a proper fix for and we had lost discussions but finally agrees we suddenly wanted
a direct support for the evening and customizable templates wanted all customers to help define how such actually rendered when rendered things intuition among and should happen upfront not that sort of thing that happens after we deliver the site so we have lost discussions about how that feature should work like what kind of access should people have and how much responsibility should should be have and you know we have like 1 extreme was that just have a drag and drop things and other extreme What city did everything themselves of and we ended up somewhere in the middle
so the idea was that b of provide a set of pre-defined components and we have people templates that they can just use a really nice and then the customers can go in and change all lational around we want as long as the mess with components so the components are just something that we can move and removing the monster maybe they can have multiple instances of the body can actually make changes to them and this allowed us to minimize sort of the EPI surface that we had to support to just those components and in many things but more manageable for us since then with warned of the things and it's got a bit more complex but in the beginning that's what we want to do so at that point we already written most of us site it was functioning we have a knowledge base on maybe the thing is there what so we sat down to talk about how we wanted to actually implement like how should customers actually do this we knew that we wanted to actually use albeit ask some of them and and there's no reason it shouldn't have access melts also likely just for sorted out yet begin with that so look at what we have and what we had
was QP or use words written in your B and abuse of the intended for the customers to customize it also read and here B so know the simple thing would be to just allow customers to in open a text field with the unit and dislikes hyper hadn't save and we would use that it was thought that other 3rd sentence and I realize I was stupid so he ever had really been 1 do that so earlier on we
decided that terms like position right templates we shouldn't be programming they're not necessarily programmers to maybe some web developers but mostly in terms of which male success and maybe a sprinkle chopped to use the adjacent the so we start looking at saved template languages and there are a few of we already
using liquid in all parts of replication and so he thought whether we followed by using it here to so they were few reasons that's why we didn't do that on the liquid supercool this Altenburg grammar it feels almost like a programming language it's safe to execute but still have to provide very granular data structures for it to be useful so we would have to define and this you JDI of nested objects that we pass the customers and their belief functions and their loops and all the stuff that was just too powerful to advance what we want and we want something of a simple and portable was look-in mustache so mustache that if you do reprogramming polynome no mustache or handle parts which I think and Bergius uses of it has a very simple syntax of least mustached us here words has had a lot of both of muscles and it was actually pretty close what we wanted and it's very declarative additional logic no for loops is just a simple the the main problem was that it was not well suited for EPs it was the Ruby implementation that was completed the couple programs so we would have to go all land on mustache we appear to that of the 1 is something that we could use images the outer layer of our use just the things that our customer should be able to customize and nothing else so lots of small partials and other use it we want to convert just want to keep them active work well someone something that was sort of begin into rails and use some of the niceties of rail such as caching and what not which also was a big deal for us so we came up with a list
on of things that we wanted but because really refining a language of provided all and the to 110 was to be safe course because we're running them in executing them on our service also wanted to be very to want our customers to signal their intent in terms of where they want to place of not you were not supposed like construct advanced stuff the you want to keep all logic in a separate place within wants to expose that to our customers to should just this Sabra put stuff but already and stuff in terms of generating that I know you related output all that stuff conditional stuff you want to keep that out of you know the products so we can have a simple product and the complete status in 1 of the test of this would be an API would have people who dependent on it that's to be stable so if you made a change and it's only through of something per customer who get complaints of the be unhappy if you want to have a regression test place and can make sure that we respect that our and that work and 1 of also wanted to integrate well with our existing results so we decided to build
a currently and it's heavily inspired by mustache but is different in the place of you keep all your ECML in templates any use the curly bracket notation to place around components where we want all logic is kept in presenters campus centers or just plain MMI classes that reside in actors those presented have full access to all thing to know from your have link all the path helpers form culprits are you can render of partials you can do whatever and he can use alongside the and Hamel so if you have existing apartments or partial so you can just ring of those directly from within curly and the other way around set in space and leave montreal cells variable 1st this is what
the a pretty simple but also the to the whole curly template would look like you have your components as call them which just name surrounded by curly brackets and then you have additional this is very readable unreasonable an old presenters replace in actress centers and it just normal the the classes that inherit from crude so they all tend errands keynote this morning yes this them the head of so in he talked about not knowing like the problem of not knowing which locals locals view of if you think so to render a partial template in rails that the person may use a local parables and difficult no front but that starts at the top right hand part about actually in in curly we decided early on they wanted an explicit list of variables that at a given template should accepts and wanted to just crashed plane didn't provide that because we had run into issues previously were we would like hit by the issues of from that the answer is I wanted to be explicit so actually is very easy in curly to just ask for center you know what you need and you get a list so here we say all of we expect there to be an article variable passing I'm % in an article and then you just have a number of public methods you see that article is available as an instance variable this mismatch the so each component maps to a public methods on the presenter class this is all done automatically for you was that you could do manually but curly removes all the all played in all low overhead it ensures that easy public method there also has access to all the holders to need to rendering stuff and there's a symbol naming
conventions for each template maps directly to a Personal ch so we're
happy hour we use this it was pretty generic I thought but we could store a templates in the database we had some on disk and then if a customer wanted to restore their templates in the database and we were able to inject some resolution mechanism into rails meaning that we could actually get the temples from there but we would we use the same center so that may think sliding the of course because we only needed to test a lot at once and
you say and was 1st symbol of customers happy and we rolled into a product and you have the and in
line editors or you can go in and change attempt what's inside the product you can view changes we also allowed to edit success jousted also and this report was very proud of it when the ship that and that's think like 2 years ago 2 and half years ago has been running sense so we're happy and we sat back ourselves per cent thinking no when we
look at these templates and at the centers and then we look at the rest of our temples and we didn't convert because they were customizable and sum to 1 or maybe this current thing is actually more useful than we initially thought there is not just for customization the there is something that we wanna use up properly so
just to give you an example of this is our after symbol by version of an actual UP template that I extracted appears to go from our at on these principle I it's not always simple but it's not choose the complex added you could definitely go and make changes in of to make it simpler but hopefully you've all seen sort of this kind of thing so you can look at it how much of this is actually a structure how much is related to the ordering of things or the you know H and all and look at not a lot most of this is actually Ruby code that's logic that that determines how some stuff should be looking but it's very difficult for the front end of over to go and and you know rack you told me to wrap the common form in a bit give some thoughts or worse a common form all in curly is a lot easier because all logic has been extracted and divide which is just as important you can go and can see what is what were is a common form we can rearrange it in some Ciba all additional its so that's a big deal and our friend and evolve at very happy about that because it made their lives a lot easier especially if you have no mediational pages containing a lot of work if you remove all the logical grew from there to let just the essence this would be the that's really cool the thus and we back and developers because some not over could run an engineer pop roulette with will be glasses and we know that on very endearing so if things that we can deal with like we can we can use private methods to clean up stuff we can use inheritance you do whatever you want this is separation of structural
logic and it really helped us to improve the state of affairs for our entire view layer which was pretty bad some and it basically meant that we could move at a much faster pace who served dealing with something
complex logic that had been trapped inside you be you have something Europe's like your option is keeping it there or maybe extraction of partial or maybe extracting helper than those options or always prepared now is
usually 1 of the issues that we have previously was that we sometimes reuse some views in multiple controllers and you have to remember to include the same percentage classes in each controller because of you would need so those sort of annoying like the controller need to know but that you needed in curly you need that because you just include modulus of the magical out it helpers not special we just methods inside a module but the and you can use
inheritance and what not so that that made a lot of data so a talk about testing earlier on 10 testing is a big deal because we use burst back we use on you test previously are and if it had then solve the hassle like how many of you do you testing in your else out there a few so please are you know sort of what I'm talking about but it would be helpful basically what
you do as you want to test some specific piece of logic and you just want test that it's you know either this or that but you have to actually pass and that has all the needed variables to view many to render it then you're given back this huge blob of fictional but you really only interested in just a slight like a 10 part to try to you know use a library proportionality Mel getting out you know that specific task that you're interested in you can then then the insertion just back and we found that to be very brittle and error-prone sometimes you would test to something is empty and you think better testing the right thing but actually to selecting a walk thing always and always past and doesn't really you know distraction metadata habitats is so you want to change that to look at traditional new testing the more graphical way there 3 parts and you have a text you have you may help cost and you have to go through this and entire cycle but reading curly was just cut out 1 word we are actually interested in testing the template itself for interested in testing logic the so we just passed burbles the presenter classes so when we initialize it and then we just call methods on a is nothing magical about it you
literally just call that that and you get back result and you can make assertions on this that piece so there was issued us amended we can much easier more easily and maintain the API and do a specific unit testing so when want to used as a
logic we didn't want to test this structure into structured but just looking at the template in seeing that things in the right order right what is opening a practice sums caching is also
big deal because we use Russian dolls caching but I mean you use that caching along so right here and basically we have a lot of of caches and their nested so using the right hash keys is important for us and typically in your be you'd have to specify the top level you know catch and then the cache key do and then a bunch of stuff in there and means that things like back together in this 1 balance route difficult test to so we want to have better support for caching curly and we found a pretty good way of
doing it but basically if you have a task you method in a percentage past that is gonna to be cashed it returns non-nil value will catch that you output Usenet hash key that makes it very simple you can have much more complex logic in you catch being use private methods and what not those means you not to start testing your catch he's giving ascertained that if you pass into different different values for some bearable and the cash he will be different which actually a very nice way of testing that so
when getting out this sometimes makes sense to use the best tool for the job and and there's different value in just having like of 1 size fits all thing I think that's part of the reals mantra but in this case I feel that markup language is actually pretty cool like there's a reason we don't just have a press a dual thing that renders pixels on a screen in the browser right send baggage knowledge is nice because know smart see structure it's very easy to identify the constituent parts on the other hand it's most pretty bad fertile so it's not possible they use Ritalin but the letter makes sense to seperate the 2 because there are different things so it's actually 1
that Aaron's talk this morning because he went into some of the things that looking at last 2 years and frustrated and but we also talk a bit about them caching views of and I'm sure how much you know about the internals of actually took me a while to actually serious about it but as 1 show you basically how the rendering Watson were curled fits into action you the so you
pull only deal in action control you have a controller Action and it either implicitly or explicitly renders of you so you can pass you know render some name or you just like let that name the name of action and it shows the thing so what action control thus is it passes that took the name to action you action you will look around all the best all try to find that appropriate template a along that and rapid in an object all then find the appropriate template handler usually that's that's done by looking at the suffix like diet you be regard him or in our case . curly a taciturn what objects to that the and the hand was sacked responsible for compiling that source code into Ruby and we'll do that and the return back to action you ask a string containing Rico so actually does is it keeps an anonymous modular containing a bunch of methods each methods corresponds to a view in bolts sake that Ruby code and it will create and you met that on that object named after the view I'll just put that sort put in there and you valid and then it'll column the method will actually execute the Ruby code and the return which involves an active alum return that backtracked actual so that thing is that the next time actually use sees that template names it doesn't have to compiled was in just call that on the margin so that's what Aaron Mandarin is set of capturing of use and this is of course only done at least we done in each unicorn processes using this so they're different issues but it's a pretty clever implantation of loss so I've been
talking about early for little while on to do a thing that it's just ostomy should always used really well no that's solemn the case and is not an either or proposition Our curl all those out a lot but we also tend to have some complex use we still use you be a lot of cases like if you have something as simple as you be sprayed by don't carry that things make sense of it together are is not about being a dogmatic about using the best good job and if you have like a to line template this new reasons you screw up this is you be working in the initial stages of building something and everything's and lots you these great you only have 1 following these new things around you have no need to have a class and a template match up to go but what you read some threshold of complexity Hurley is a great way to track actually start thinking of things in terms of a proper P and having a proper language for defining the structure so I just encourage you to have a look on past Hamel toxic civil and people I'm a c here was being serviced same pass yeah assistance from a different perspective so in immediately EU basically put lots of Ruby code inside small and Hemel you put a lot of additional code inside review but it's basically the same things are in terms of like the sign he sold things similar you don't you don't separator structure structure from logic used let them in a different way so this is been
running in production for more than 2 years and other companies also using at a bunch of people imbecile using it for some region I know I so it's been she success and we open source that that's curly
templates someone already took curling it's a wrapper curl you can just use girl but again and so sculptural simplest and you just drop it into reals act and it will do nothing so it's not going to break anything but if you then I change 1 year templates to be dark early in the study of the people use growing and you'll have to build set up a center and extract go and boom just that 1 template used early and you use you before the rest so it's very easy to strike out there and I think it's it's actually pretty cool so this is maybe a
bit short I think probably have some type of questions that you want to just 1 thank you again for coming and you don't get popping up you get this alright so the source and all that and you know whole principle him I really hope that some people start looking at it and and maybe contributing or find useful purposes for so we we have some time for questions if anyone wants yeah so the question was it in our product that's the customers know of sort of what's available in terms of these components so yet we have a we have a nice annotation part and have on completion of and so just tight curly curly it'll seal let's say we have descriptions and everything that's people yeah exactly within the editor have sort of an ID that so the question was I'm in this very astute observer noticed that in 1 case of a exactly summation mode in the presented in the form of a constant factor on and that's right and this is the sound really care it's not like number pragmatic about that and if you use any kind of link helper ordered form helper that's basically the same thing right but I think you know this 1 and a assess all return a plot of each to you and you honestly create moles in center so it's just this is like a logic to it so that I so that case yet it doesn't bother me if it's still very simple and if you want like a bird lean logic only later then you should be agreed alone presented architecture decorators outside of way that don't know about each and all that occur is that actually knows what it knows link Pulborough's it knows all your past you can actually do that for a year and interview logic is not the main what right FIL yet so sorry the question was that you know if you wanna render collection how would you do that and basically you can do it in line curly you can use you know Brenda collection something something uh from the placenta which of his in all mechanism which is rendering different template multiple times you have different options and yields like do it in the method itself you want just return additional that's problematic yeah out all the question is you know what you want to like classes you can be for generating is to moline your presenter using say link to any 1 of like classes and stuff in there whether that's like crossing some boundary in terms of where the front it's Hugo will I considered percentage to be different and also it is the view what is this all you could write your not back and the not the main logic of and if you have stuff it's sort of like Meilahti that you probably don't the model to think about that unites it depends on detection like if you have a friend and developers who don't my opening fastest and I would just do that but if you have to comment of all US of being curly you can also do that can just like have you know our article something and it returns the protest leaders do no Arab peoples and to the entire itself if you really want like you that in some cases where we want for at so with invalid and with the support the this this land uses uses uses uses and his his his things
Farbverwaltungssystem
Zeiger <Informatik>
Computervirus
Computeranimation
Internetworking
Bit
Server
Applet
Skript <Programm>
Computeranimation
Software
Schreiben <Datenverarbeitung>
Projektive Ebene
Systemplattform
Quick-Sort
Viewer
Computeranimation
Entscheidungstheorie
Lineares Funktional
Web Site
Schaltwerk
Zehn
Template
Formale Sprache
Mathematisierung
Versionsverwaltung
Wissensbasis
Biprodukt
Template
Quick-Sort
Computeranimation
Konfiguration <Informatik>
Arithmetisches Mittel
Datenfeld
Formale Sprache
Prozess <Informatik>
Widget
Skript <Programm>
Hilfesystem
Wort <Informatik>
Kantenfärbung
Auswahlaxiom
Web Site
Bit
Punkt
Template
Mathematisierung
Wissensbasis
Template
Quick-Sort
Computeranimation
Monster-Gruppe
Lemma <Logik>
Menge
Flächentheorie
Endogene Variable
Zusammenhängender Graph
Extreme programming
Tropfen
Luftreibung
Innerer Punkt
Instantiierung
Programmiergerät
Hypercube
Ortsoperator
Template
Formale Sprache
Term
Template
Computeranimation
Physikalisches System
Einheit <Mathematik>
Datenfeld
Rechter Winkel
Code
Web-Designer
Wort <Informatik>
Biprodukt
Mini-Disc
Resultante
Mathematische Logik
Desintegration <Mathematik>
Mathematisierung
Formale Sprache
Formale Grammatik
Implementierung
Term
Mathematische Logik
Template
Computeranimation
Loop
Deklarative Programmiersprache
Lineare Regression
Datenreplikation
Biprodukt
Datenstruktur
Optimierung
Bildgebendes Verfahren
Funktion <Mathematik>
Programmiersprache
Softwaretest
Lineares Funktional
Mailing-Liste
Partielle Differentiation
Computervirus
Flüssiger Zustand
Biprodukt
Quick-Sort
Objekt <Kategorie>
Dienst <Informatik>
Angewandte Physik
Konditionszahl
Caching
Mereologie
Wort <Informatik>
Ebene
Mathematische Logik
Klasse <Mathematik>
Zellularer Automat
Zahlenbereich
Kombinatorische Gruppentheorie
Mathematische Logik
Raum-Zeit
Computeranimation
Bildschirmmaske
Poisson-Klammer
Zahlensystem
Variable
Gamecontroller
Zusammenhängender Graph
Meta-Tag
Schreib-Lese-Kopf
Template
Stellenring
Systemaufruf
Symboltabelle
Mailing-Liste
Partielle Differentiation
Objektklasse
Binder <Informatik>
Mapping <Computergraphik>
Verschlingung
Rechter Winkel
Mereologie
Modelltheorie
Overhead <Kommunikationstechnik>
Instantiierung
Mapping <Computergraphik>
Kraftfahrzeugmechatroniker
Datenhaltung
Mini-Disc
Template
Template
Computeranimation
Datenhaltung
Bildauflösung
Texteditor
Mathematisierung
Symboltabelle
Biprodukt
Verkehrsinformation
Gerade
Computeranimation
Bit
Gewichtete Summe
Template
Versionsverwaltung
Volumenvisualisierung
Symboltabelle
Objektklasse
Mathematische Logik
Komplex <Algebra>
Quick-Sort
Code
Computeranimation
Homepage
Homepage
Codec
Bildschirmmaske
Vererbungshierarchie
Datenstruktur
Softwareentwickler
Mathematische Logik
Datenstruktur
Ablöseblase
Partielle Differentiation
Ganze Funktion
Mathematische Logik
Computeranimation
Konfiguration <Informatik>
Aggregatzustand
Softwaretest
Multiplikation
Klasse <Mathematik>
Vererbungshierarchie
Gamecontroller
Modul
Quick-Sort
Computeranimation
Resultante
Softwaretest
Umwandlungsenthalpie
Webforum
Einfügungsdämpfung
Komponententest
Klasse <Mathematik>
Volumenvisualisierung
Parser
Kombinatorische Gruppentheorie
Mathematische Logik
Variable
Computeranimation
Zeichenkette
Task
Metadaten
Variable
Softwaretest
Einheit <Mathematik>
Mereologie
Dreiecksfreier Graph
Programmbibliothek
Wort <Informatik>
Softwaretest
Mathematische Logik
Gewichtete Summe
Template
Routing
Mathematische Logik
Computeranimation
Übergang
Summengleichung
Softwaretest
Datenstruktur
Einheit <Mathematik>
Rechter Winkel
Caching
Hash-Algorithmus
Datenstruktur
Ordnung <Mathematik>
Schlüsselverwaltung
Caching
Softwaretest
Abstimmung <Frequenz>
Mathematische Logik
Pixel
Beschreibungssprache
Beschreibungssprache
Browser
Mathematische Logik
Computeranimation
Arithmetisches Mittel
Task
Datenstruktur
Rechter Winkel
Reelle Zahl
Mereologie
Hash-Algorithmus
Datenstruktur
Schlüsselverwaltung
Funktion <Mathematik>
Touchscreen
Randverteilung
Bit
Multifunktion
Einfügungsdämpfung
Template
Gruppenoperation
Volumenvisualisierung
Quellcode
Template
Quick-Sort
Code
Computeranimation
Gruppenoperation
Zeichenkette
Objekt <Kategorie>
Gamecontroller
Code
Volumenvisualisierung
Gamecontroller
Implementierung
Fitnessfunktion
Zeichenkette
Trennungsaxiom
Addition
Schwellwertverfahren
Matching <Graphentheorie>
Open Source
Klasse <Mathematik>
Formale Sprache
Aussage <Mathematik>
Baumechanik
Biprodukt
Term
Komplex <Algebra>
Mathematische Logik
Code
Computeranimation
Dedekind-Schnitt
Vorzeichen <Mathematik>
Perspektive
Notepad-Computer
Datenstruktur
Message-Passing
Gerade
URL
Subtraktion
Gewichtete Summe
Klasse <Mathematik>
Kombinatorische Gruppentheorie
Mathematische Logik
Term
Computeranimation
Deskriptive Statistik
Bildschirmmaske
Informationsmodellierung
Multiplikation
Reelle Zahl
Wrapper <Programmierung>
Datentyp
Volumenvisualisierung
Luenberger-Beobachter
Zusammenhängender Graph
Softwareentwickler
Gerade
Beobachtungsstudie
ATM
Addition
Kraftfahrzeugmechatroniker
Vervollständigung <Mathematik>
Installation <Informatik>
Template
Plot <Graphische Darstellung>
Quellcode
Biprodukt
Binder <Informatik>
Quick-Sort
Konfiguration <Informatik>
Randwert
Texteditor
Offene Menge
Rechter Winkel
Mereologie
Computerarchitektur

Metadaten

Formale Metadaten

Titel Curly - Rethinking the View Layer
Serientitel RailsConf 2015
Teil 44
Anzahl der Teile 94
Autor Schierbeck, Daniel
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/30654
Herausgeber Confreaks, LLC
Erscheinungsjahr 2015
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract While most parts of Rails have been thoroughly overhauled during the past few years, one part has stubbornly refused improvement. The view layer is still by default using ERB to transform your app’s objects into HTML. While trying to solve a seemingly unrelated problem we discovered a design that suddenly enabled us to move past the limitations of ERB while still integrating closely with Rails. We could now separate presentation logic from display structure; reason about our views and how they relate; and dramatically improve our code. We called the library Curly, and it's pretty awesome.

Ähnliche Filme

Loading...