Most front-end developers have already heard about PostCSS, maybe some of them have tried to use it. It is quite a popular tool nowadays, but not yet as massively used as SASS or LESS. However, the buzz around PostCSS is increasing dynamically and benefits over other systems becoming even more …
Railsware Blog
on product management, engineering, design, culture and many more...
User stories: why?In this article, I am trying to describe my own view on stories in product development and to share some efficient ways of working with them.Let’s start, however, with the question of why there should ever be stories. I have to mention that stories is just one of tools Railsware …
In this article, I am trying to describe my own view on stories in product development and to share some efficient ways of working with them.Let’s start, however, with the question of why there should ever be stories. I have to mention that stories is just one of tools Railsware …
Debugging Capybara: screenshot of error page on CircleCIHaving real screenshot of a failed integration spec can save hours of debugging. We had screenshot with error on the local development environment, and wanted to have it on Continuous Integration server. Luckily for us, it’s a real no-brainer, if you use CircleCI. There is no need for custom S3 …
Having real screenshot of a failed integration spec can save hours of debugging. We had screenshot with error on the local development environment, and wanted to have it on Continuous Integration server. Luckily for us, it’s a real no-brainer, if you use CircleCI. There is no need for custom S3 …
Responsive layout tests with Capybara and RSpecResponsive web design is not a feature these days, bur rather a must. So, while implementing responsive layout in your application, you might find helpful adding verifications to your acceptance tests and ensure accessibility/inaccessibility to your app functionality depending on the screen size. Capybara has a method to resize the …
Responsive web design is not a feature these days, bur rather a must. So, while implementing responsive layout in your application, you might find helpful adding verifications to your acceptance tests and ensure accessibility/inaccessibility to your app functionality depending on the screen size. Capybara has a method to resize the …
SQL Joins Visualizer – build SQL JOIN between two tables by using Venn diagramsHello my dear friends.Today we will learn about SQL Joins and my new little app that helps to build and understand them. SQL join A SQL join clause combines records from two or more tables in a database. It creates a set that can be saved as a table or …
Hello my dear friends.Today we will learn about SQL Joins and my new little app that helps to build and understand them. SQL join A SQL join clause combines records from two or more tables in a database. It creates a set that can be saved as a table or …
Flexbox as a solution for browser reflow optimizationWhile we’ve been developing one of our products (Mailtrap), we needed to create 2 column page layout with inner blocks stretching down to the whole height of browser window with sticky footer and header. The page layout looks like this:This layout has several nesting levels which makes it more complicated to …
While we’ve been developing one of our products (Mailtrap), we needed to create 2 column page layout with inner blocks stretching down to the whole height of browser window with sticky footer and header. The page layout looks like this:This layout has several nesting levels which makes it more complicated to …
Make AngularJS 1.0.7 work with Jasmine 2.0During setup of Jasmine 2.0 for AngularJS 1.0.7 application it turned out that they are not compatible. The reason is that Angular 1.0.7 is compatible with the older version of Jasmine – 1.3. And there were several breaking changes in Jasmine private API which was used by AngularJS. There were …
During setup of Jasmine 2.0 for AngularJS 1.0.7 application it turned out that they are not compatible. The reason is that Angular 1.0.7 is compatible with the older version of Jasmine – 1.3. And there were several breaking changes in Jasmine private API which was used by AngularJS. There were …
Git Clean-up in Local and Remote Branches, RepositoriesAfter working with branch per feature for a while any Git-repository becomes a mess of outdated and not finished branches. To deal with this issue, we need to clean-up three kinds of branches: In this tutorial we suppose, that “master” – is a default branch, where everything is merged (for …
After working with branch per feature for a while any Git-repository becomes a mess of outdated and not finished branches. To deal with this issue, we need to clean-up three kinds of branches: In this tutorial we suppose, that “master” – is a default branch, where everything is merged (for …
Rails logging into several backendsSometimes, it’s required to setup Rails logger for storing logs into several backends. In our case we decided to use Loggly, but also wanted to leave old file-based logging. Despite the actual solution is very simple, it’s hard to find it. The best match on StackOverflow suggests to create some …
Sometimes, it’s required to setup Rails logger for storing logs into several backends. In our case we decided to use Loggly, but also wanted to leave old file-based logging. Despite the actual solution is very simple, it’s hard to find it. The best match on StackOverflow suggests to create some …
Creating custom HTML elements with Web ComponentsWeb Components Web Components are a collection of standards which are currently actively supported by google and mozilla teams. The core idea is that they allow us to bundle markup, styles and javascript functionality into custom HTML elements. And great thing about these new elements is that they fully encapsulate …
Web Components Web Components are a collection of standards which are currently actively supported by google and mozilla teams. The core idea is that they allow us to bundle markup, styles and javascript functionality into custom HTML elements. And great thing about these new elements is that they fully encapsulate …
Share Rails configuration to JavascriptThe usual way of storing Rails configuration data are YAML files. In one of our previous posts, we talked about proper way of dealing with Rails configuration. Nowadays, Javascript applications built on top of RESTful API are common practice, and in cases like this configuration data might be duplicated across …
The usual way of storing Rails configuration data are YAML files. In one of our previous posts, we talked about proper way of dealing with Rails configuration. Nowadays, Javascript applications built on top of RESTful API are common practice, and in cases like this configuration data might be duplicated across …
BDD-style testing in Swift with SleipnirIntroduction In Objective-C people use different frameworks to write BDD-style tests for their code. Some of them are: CedarKiwiSpecta With the inroduction of Swift we’ve decided to create BDD-style testing framework in pure Swift.After a couple weeks of implementation we are making the first public version of the framework called …
Introduction In Objective-C people use different frameworks to write BDD-style tests for their code. Some of them are: CedarKiwiSpecta With the inroduction of Swift we’ve decided to create BDD-style testing framework in pure Swift.After a couple weeks of implementation we are making the first public version of the framework called …
Creation of pure Swift moduleIf you have already started playing with swift, you probably thought about how to include third party libraries into your project or how to distribute yours. Apple provides a mechanism to distribute code via frameworks (eventually, for iOS too), so making a custom framework, which will include both ObjC and …
If you have already started playing with swift, you probably thought about how to include third party libraries into your project or how to distribute yours. Apple provides a mechanism to distribute code via frameworks (eventually, for iOS too), so making a custom framework, which will include both ObjC and …
Composing functions in SwiftIn Swift – the new programming language introduced by Apple – functions are first class citizens. This basically means, that a function can be passed as a parameter, returned from another function or assigned to a value. It allows us to do a lot of useful stuff with them. Function …
In Swift – the new programming language introduced by Apple – functions are first class citizens. This basically means, that a function can be passed as a parameter, returned from another function or assigned to a value. It allows us to do a lot of useful stuff with them. Function …
Global variables in Swift are not variablesThe title sounds pretty strange, but I will explain what it means. While playing with Swift I’ve faced weird behaviour, a feature in fact, which isn’t covered in documentation (at least I didn’t find any references!). UPD: shame on me, how could I miss this? Global constants and variables are …
The title sounds pretty strange, but I will explain what it means. While playing with Swift I’ve faced weird behaviour, a feature in fact, which isn’t covered in documentation (at least I didn’t find any references!). UPD: shame on me, how could I miss this? Global constants and variables are …
ChainFlow – refactor your data processingTL; DR; This article describes how to refactor and improve readability of complex data processing with syntax similar to Haskell do-notation and State monad. Motivation Latest project I’ve been involved in deals with a lot of data processing.Typical case was a method that receives a data chunk and chains it …
TL; DR; This article describes how to refactor and improve readability of complex data processing with syntax similar to Haskell do-notation and State monad. Motivation Latest project I’ve been involved in deals with a lot of data processing.Typical case was a method that receives a data chunk and chains it …
Creating books with GitBookIf you are doing some books/docs writing or attempting to create your first book, you might get interested in this exceptionally nice tool – gitbook. It is a technical book building tool that allows you to embed code samples and exercises, and then generate a great online book that can …
If you are doing some books/docs writing or attempting to create your first book, you might get interested in this exceptionally nice tool – gitbook. It is a technical book building tool that allows you to embed code samples and exercises, and then generate a great online book that can …
Railsware at Smashing ConferenceIntro After being heads down for quite a long time solving front-end tasks and working out effective approaches, we suddenly realized that it would be great to get some view from the outside and actually validate stuff that we’re doing. Railsware team gets to visit Ruby community events on a …
Intro After being heads down for quite a long time solving front-end tasks and working out effective approaches, we suddenly realized that it would be great to get some view from the outside and actually validate stuff that we’re doing. Railsware team gets to visit Ruby community events on a …
Pitfalls of Rspec boolean matchersRspec provides a bunch of build-in matchers. They include matchers that help us work with boolean values. But not always these matchers are safe to use. be_true and be_false matchers I guess everybody used RSpec matchers be_true and be_false. There are a few examples with them: # be_true examples it{ …
Rspec provides a bunch of build-in matchers. They include matchers that help us work with boolean values. But not always these matchers are safe to use. be_true and be_false matchers I guess everybody used RSpec matchers be_true and be_false. There are a few examples with them: # be_true examples it{ …
Time comparison in RubyI believe every ruby developer has faced time comparison issue at least once and tests are one of the possible areas where it may happen. RSpec message like this may confuse: confirmed_at should have been changed to Mon, 24 Mar 2014 09:47:22 UTC, but is now Mon, 24 Mar 2014 …
I believe every ruby developer has faced time comparison issue at least once and tests are one of the possible areas where it may happen. RSpec message like this may confuse: confirmed_at should have been changed to Mon, 24 Mar 2014 09:47:22 UTC, but is now Mon, 24 Mar 2014 …