This document discusses different approaches and mindsets for writing feature tests versus unit tests. It notes that feature tests are larger in scope and harder to control than unit tests, but can provide more value when "tamed". It encourages adopting the right mindset that recognizes the differences between test types and focusing feature tests on priority areas using the appropriate tools.
3 giorni di formazione in aula a Roma (presso l'Hotel Regent****) e Milano (presso le sale Spaziper) per parlare di Social Media Marketing, Facebook Marketing, Campagne di comunicazione online e Wordpress!
Special partner Fotolia!
3 giorni di formazione in aula a Roma (presso l'Hotel Regent****) e Milano (presso le sale Spaziper) per parlare di Social Media Marketing, Facebook Marketing, Campagne di comunicazione online e Wordpress!
Special partner Fotolia!
El Departament de Cultura, el Gremi d'Empresaris de Cinemes de Catalunya i FEDICINE signen l'acord per incrementar el català al cinema
El conseller Mascarell destaca que l’any 2012 aproximadament 1,5 milions de ciutadans podran veure cinema en llengua catalana i ressalta la importància que “tots que els artistes i les cares de Hollywood parlin català”
With third party clients connecting to your service you may find that the assumptions or opinions of a typical rails application are not robust enough. We'll run through some key considerations when building an API that will be consumed by a mobile app.
Serverless is new trend in software development. It’s confusing many developers around the world. In this talk I’ll explain how to build not only crop images or select data from DynamoDB, but build real application, what kind of troubles are we should expect, how to make decision is your task fit into serverless architecture in Python or may be you should use, general approach. How fast serverless applications and more important how to scale it.
Use React tools for better Angular appsMartin Hochel
Angular, React, Vue… they all have their own ecosystem, specific patterns and best practices… For us, the developers, this might become indeed very frustrating as we have to switch between various projects with various libraries… Have no fear, universal solution is here! In this session I will show you how to learn libraries/patterns/tooling only once and apply it everywhere
Use React tools for better Angular appsMartin Hochel
Angular, React, Vue… they all have their own ecosystem, specific patterns and best practices… For us, the developers, this might become indeed very frustrating as we have to switch between various projects with various libraries… Have no fear, universal solution is here! In this session I will show you how to learn libraries/patterns/tooling only once and apply it everywhere. 🖖
El Departament de Cultura, el Gremi d'Empresaris de Cinemes de Catalunya i FEDICINE signen l'acord per incrementar el català al cinema
El conseller Mascarell destaca que l’any 2012 aproximadament 1,5 milions de ciutadans podran veure cinema en llengua catalana i ressalta la importància que “tots que els artistes i les cares de Hollywood parlin català”
With third party clients connecting to your service you may find that the assumptions or opinions of a typical rails application are not robust enough. We'll run through some key considerations when building an API that will be consumed by a mobile app.
Serverless is new trend in software development. It’s confusing many developers around the world. In this talk I’ll explain how to build not only crop images or select data from DynamoDB, but build real application, what kind of troubles are we should expect, how to make decision is your task fit into serverless architecture in Python or may be you should use, general approach. How fast serverless applications and more important how to scale it.
Use React tools for better Angular appsMartin Hochel
Angular, React, Vue… they all have their own ecosystem, specific patterns and best practices… For us, the developers, this might become indeed very frustrating as we have to switch between various projects with various libraries… Have no fear, universal solution is here! In this session I will show you how to learn libraries/patterns/tooling only once and apply it everywhere
Use React tools for better Angular appsMartin Hochel
Angular, React, Vue… they all have their own ecosystem, specific patterns and best practices… For us, the developers, this might become indeed very frustrating as we have to switch between various projects with various libraries… Have no fear, universal solution is here! In this session I will show you how to learn libraries/patterns/tooling only once and apply it everywhere. 🖖
This is a talk I gave at IPC 2014 in Munich.
It's about how to build durable web apis based on the experience gained at Namshi while we were developing our SOA architecture
Angular Vienna - Use React tools for better Angular appsMartin Hochel
Angular, React, Vue… they all have their own ecosystem, specific patterns and best practices… For us, the developers, this might become indeed very frustrating as we have to switch between various projects with various libraries… Have no fear, universal solution is here! In this session I will show you how to learn libraries/patterns/tooling only once and apply it everywhere.
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysDaniel Bryant
API Gateways are certainly not a new technology, but the way in which they are being deployed, configured, and operated within modern platforms is forcing many of us to rethink our approach. Can we simply lift and shift our existing gateway into the cloud? Is our API gateway GitOps friendly (and does it need to be)? And what about service meshes, CNI, eBPF, and...
Join this talk for a whistle stop tour of modern API gateways, which a focus on deploying and managing this technology within Kubernetes (on which many modern platforms are built):
- Understand why platform engineers should care about API Gateways today
- Learn about API gateways, options, and requirements for modern platforms
- Identify key considerations for migrating to the cloud or building a new platform on Kubernetes
- Understand how cloud native workflows impact the user/developer experience (UX/DX) of an API gateway
- Explore the components of a complete "edge stack" that supports end-to-end development flows
Most of what Rundeck does is via one of it’s plugins. There are already over 100+ plugins to perform various services including executing commands on nodes, performing step in a workflow, or sending notification about job status. There may be instances where you need to write your own plugin to perform a specific step or action. In this session, will walk through the steps for writing our own plugin.
In this session you'll learn:
Review the structure of plugin
How to use the structure and what information you need to include in other files to make your plugin work
How to write a simple plugin example using java
How to reply and use your plugin
Building Single Page Application (SPA) with Symfony2 and AngularJSAntonio Peric-Mazar
Forget about classic website where UX is not so important. We are living in time where usability is one of the important thing if you are building some business client oriented web service. How to connect Symfony2 as backend and AngularJS as frontend solution? What are best practices? What are disadvantageous? How to take best from both worlds? These are topics I will cover in my talk with real examples.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Looking for a reliable mobile app development company in Noida? Look no further than Drona Infotech. We specialize in creating customized apps for your business needs.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
11. Size (stack trace)
E, [2016-10-10T22:17:56.431204 #14091] ERROR -- : /Users/phillip/Code/_all/lale/app/models/user.rb:60:in `name'
E, [2016-10-10T22:17:56.431275 #14091] ERROR -- : /Users/phillip/Code/_all/lale/app/views/files/_list.slim:25:in `block in _app_views_files__list_slim___261366778297433219_70263351087480'
E, [2016-10-10T22:17:56.431342 #14091] ERROR -- : /Users/phillip/Code/_all/lale/app/views/files/_list.slim:18:in `each'
E, [2016-10-10T22:17:56.431422 #14091] ERROR -- : /Users/phillip/Code/_all/lale/app/views/files/_list.slim:18:in `_app_views_files__list_slim___261366778297433219_70263351087480'
E, [2016-10-10T22:17:56.431499 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/template.rb:145:in `block in render'
E, [2016-10-10T22:17:56.431571 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:166:in `instrument'
E, [2016-10-10T22:17:56.431641 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/template.rb:333:in `instrument'
E, [2016-10-10T22:17:56.431707 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/template.rb:143:in `render'
E, [2016-10-10T22:17:56.431772 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/partial_renderer.rb:339:in `render_partial'
E, [2016-10-10T22:17:56.431833 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/partial_renderer.rb:310:in `block in render'
E, [2016-10-10T22:17:56.431893 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
E, [2016-10-10T22:17:56.431954 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `block in instrument'
E, [2016-10-10T22:17:56.432021 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
E, [2016-10-10T22:17:56.432086 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `instrument'
E, [2016-10-10T22:17:56.432147 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
E, [2016-10-10T22:17:56.432207 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/partial_renderer.rb:309:in `render'
E, [2016-10-10T22:17:56.432268 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/renderer.rb:47:in `render_partial'
E, [2016-10-10T22:17:56.432329 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/helpers/rendering_helper.rb:35:in `render'
E, [2016-10-10T22:17:56.432397 #14091] ERROR -- : /Users/phillip/Code/_all/lale/app/views/dashboards/_resources.slim:35:in `_app_views_dashboards__resources_slim___579668583005552750_70263385315780'
E, [2016-10-10T22:17:56.432469 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/template.rb:145:in `block in render'
E, [2016-10-10T22:17:56.432532 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:166:in `instrument'
E, [2016-10-10T22:17:56.432608 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/template.rb:333:in `instrument'
E, [2016-10-10T22:17:56.432679 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/template.rb:143:in `render'
E, [2016-10-10T22:17:56.432757 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/partial_renderer.rb:339:in `render_partial'
E, [2016-10-10T22:17:56.432823 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/partial_renderer.rb:310:in `block in render'
E, [2016-10-10T22:17:56.432906 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
E, [2016-10-10T22:17:56.432975 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `block in instrument'
E, [2016-10-10T22:17:56.433045 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
E, [2016-10-10T22:17:56.433122 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `instrument'
E, [2016-10-10T22:17:56.433186 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
E, [2016-10-10T22:17:56.433247 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/partial_renderer.rb:309:in `render'
E, [2016-10-10T22:17:56.433318 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/renderer.rb:47:in `render_partial'
E, [2016-10-10T22:17:56.433402 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/helpers/rendering_helper.rb:35:in `render'
E, [2016-10-10T22:17:56.433473 #14091] ERROR -- : /Users/phillip/Code/_all/lale/app/views/circles/show.slim:16:in `_app_views_circles_show_slim__1918807562146475508_70263361984140'
E, [2016-10-10T22:17:56.433538 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/template.rb:145:in `block in render'
E, [2016-10-10T22:17:56.433610 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:166:in `instrument'
E, [2016-10-10T22:17:56.433682 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/template.rb:333:in `instrument'
E, [2016-10-10T22:17:56.433745 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/template.rb:143:in `render'
E, [2016-10-10T22:17:56.433812 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template'
E, [2016-10-10T22:17:56.433878 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
E, [2016-10-10T22:17:56.433946 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `block in instrument'
E, [2016-10-10T22:17:56.434025 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
E, [2016-10-10T22:17:56.434100 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `instrument'
E, [2016-10-10T22:17:56.434174 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
E, [2016-10-10T22:17:56.434245 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/template_renderer.rb:53:in `block in render_template'
E, [2016-10-10T22:17:56.434330 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
E, [2016-10-10T22:17:56.434395 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/template_renderer.rb:52:in `render_template'
E, [2016-10-10T22:17:56.434456 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/template_renderer.rb:14:in `render'
E, [2016-10-10T22:17:56.434530 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/renderer.rb:42:in `render_template'
E, [2016-10-10T22:17:56.434606 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/renderer/renderer.rb:23:in `render'
E, [2016-10-10T22:17:56.434664 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/rendering.rb:100:in `_render_template'
E, [2016-10-10T22:17:56.434726 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/streaming.rb:217:in `_render_template'
E, [2016-10-10T22:17:56.434784 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/rendering.rb:83:in `render_to_body'
E, [2016-10-10T22:17:56.434845 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/rendering.rb:32:in `render_to_body'
E, [2016-10-10T22:17:56.434903 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/renderers.rb:37:in `render_to_body'
E, [2016-10-10T22:17:56.434965 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/abstract_controller/rendering.rb:25:in `render'
E, [2016-10-10T22:17:56.435037 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/rendering.rb:16:in `render'
E, [2016-10-10T22:17:56.435101 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/instrumentation.rb:44:in `block (2 levels) in render'
E, [2016-10-10T22:17:56.435165 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/benchmark.rb:12:in `block in ms'
E, [2016-10-10T22:17:56.435237 #14091] ERROR -- : /Users/phillip/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/benchmark.rb:303:in `realtime'
E, [2016-10-10T22:17:56.435295 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/benchmark.rb:12:in `ms'
E, [2016-10-10T22:17:56.435355 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/instrumentation.rb:44:in `block in render'
E, [2016-10-10T22:17:56.435651 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/instrumentation.rb:87:in `cleanup_view_runtime'
E, [2016-10-10T22:17:56.435708 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime'
E, [2016-10-10T22:17:56.435770 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/instrumentation.rb:43:in `render'
E, [2016-10-10T22:17:56.435836 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/implicit_render.rb:10:in `default_render'
E, [2016-10-10T22:17:56.435899 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/implicit_render.rb:5:in `send_action'
E, [2016-10-10T22:17:56.435972 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/abstract_controller/base.rb:198:in `process_action'
E, [2016-10-10T22:17:56.436037 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/rendering.rb:10:in `process_action'
E, [2016-10-10T22:17:56.436096 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
E, [2016-10-10T22:17:56.436157 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:117:in `call'
E, [2016-10-10T22:17:56.436215 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:117:in `call'
E, [2016-10-10T22:17:56.436276 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
E, [2016-10-10T22:17:56.436340 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:505:in `call'
E, [2016-10-10T22:17:56.436399 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:505:in `call'
E, [2016-10-10T22:17:56.436463 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:498:in `block (2 levels) in around'
E, [2016-10-10T22:17:56.436518 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:298:in `call'
E, [2016-10-10T22:17:56.436573 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:298:in `block in halting_and_conditional'
E, [2016-10-10T22:17:56.436633 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:497:in `call'
E, [2016-10-10T22:17:56.436701 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:497:in `block in around'
E, [2016-10-10T22:17:56.436770 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:505:in `call'
E, [2016-10-10T22:17:56.436834 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:505:in `call'
E, [2016-10-10T22:17:56.436892 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:92:in `__run_callbacks__'
E, [2016-10-10T22:17:56.436947 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
E, [2016-10-10T22:17:56.437008 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:81:in `run_callbacks'
E, [2016-10-10T22:17:56.437072 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/abstract_controller/callbacks.rb:19:in `process_action'
E, [2016-10-10T22:17:56.437136 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/rescue.rb:29:in `process_action'
E, [2016-10-10T22:17:56.437194 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
E, [2016-10-10T22:17:56.437249 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `block in instrument'
E, [2016-10-10T22:17:56.437314 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
E, [2016-10-10T22:17:56.437375 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `instrument'
E, [2016-10-10T22:17:56.437440 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
E, [2016-10-10T22:17:56.437497 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
E, [2016-10-10T22:17:56.437559 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
E, [2016-10-10T22:17:56.437616 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/abstract_controller/base.rb:137:in `process'
E, [2016-10-10T22:17:56.437677 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionview-4.2.4/lib/action_view/rendering.rb:30:in `process'
E, [2016-10-10T22:17:56.437735 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal.rb:196:in `dispatch'
E, [2016-10-10T22:17:56.437838 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
E, [2016-10-10T22:17:56.437903 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_controller/metal.rb:237:in `block in action'
E, [2016-10-10T22:17:56.437967 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:76:in `call'
E, [2016-10-10T22:17:56.438025 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:76:in `dispatch'
E, [2016-10-10T22:17:56.438088 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:45:in `serve'
E, [2016-10-10T22:17:56.438150 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/journey/router.rb:43:in `block in serve'
E, [2016-10-10T22:17:56.438208 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/journey/router.rb:30:in `each'
E, [2016-10-10T22:17:56.438273 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/journey/router.rb:30:in `serve'
E, [2016-10-10T22:17:56.438331 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:821:in `call'
E, [2016-10-10T22:17:56.438392 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:404:in `call_app!'
E, [2016-10-10T22:17:56.438456 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/omniauth-identity-1.1.1/lib/omniauth/strategies/identity.rb:43:in `other_phase'
E, [2016-10-10T22:17:56.438520 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:185:in `call!'
E, [2016-10-10T22:17:56.438584 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:164:in `call'
E, [2016-10-10T22:17:56.438657 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/omniauth-1.2.2/lib/omniauth/builder.rb:59:in `call'
E, [2016-10-10T22:17:56.438722 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/http_accept_language-2.0.5/lib/http_accept_language/middleware.rb:14:in `call'
E, [2016-10-10T22:17:56.438786 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/etag.rb:24:in `call'
E, [2016-10-10T22:17:56.438842 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/conditionalget.rb:25:in `call'
E, [2016-10-10T22:17:56.438902 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
E, [2016-10-10T22:17:56.438960 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/middleware/params_parser.rb:27:in `call'
E, [2016-10-10T22:17:56.439023 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/middleware/flash.rb:260:in `call'
E, [2016-10-10T22:17:56.439079 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/query_cache.rb:36:in `call'
E, [2016-10-10T22:17:56.439139 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'
E, [2016-10-10T22:17:56.439203 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
E, [2016-10-10T22:17:56.439268 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:88:in `__run_callbacks__'
E, [2016-10-10T22:17:56.439514 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
E, [2016-10-10T22:17:56.439581 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:81:in `run_callbacks'
E, [2016-10-10T22:17:56.439644 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
E, [2016-10-10T22:17:56.439715 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
E, [2016-10-10T22:17:56.439778 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rollbar-2.12.0/lib/rollbar/middleware/rails/rollbar.rb:24:in `block in call'
E, [2016-10-10T22:17:56.439843 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rollbar-2.12.0/lib/rollbar.rb:735:in `scoped'
E, [2016-10-10T22:17:56.439907 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rollbar-2.12.0/lib/rollbar/middleware/rails/rollbar.rb:22:in `call'
E, [2016-10-10T22:17:56.439973 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
E, [2016-10-10T22:17:56.440035 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rollbar-2.12.0/lib/rollbar/middleware/rails/show_exceptions.rb:22:in `call_with_rollbar'
E, [2016-10-10T22:17:56.440105 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
E, [2016-10-10T22:17:56.440165 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/railties-4.2.4/lib/rails/rack/logger.rb:38:in `call_app'
E, [2016-10-10T22:17:56.440227 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/railties-4.2.4/lib/rails/rack/logger.rb:20:in `block in call'
E, [2016-10-10T22:17:56.440290 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/tagged_logging.rb:68:in `block in tagged'
E, [2016-10-10T22:17:56.440354 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/tagged_logging.rb:26:in `tagged'
E, [2016-10-10T22:17:56.440419 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/tagged_logging.rb:68:in `tagged'
E, [2016-10-10T22:17:56.440482 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/railties-4.2.4/lib/rails/rack/logger.rb:20:in `call'
E, [2016-10-10T22:17:56.440546 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:225:in `context'
E, [2016-10-10T22:17:56.440615 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:220:in `call'
E, [2016-10-10T22:17:56.440673 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/middleware/cookies.rb:560:in `call'
E, [2016-10-10T22:17:56.440741 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/middleware/request_id.rb:21:in `call'
E, [2016-10-10T22:17:56.440805 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/methodoverride.rb:22:in `call'
E, [2016-10-10T22:17:56.440863 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/runtime.rb:18:in `call'
E, [2016-10-10T22:17:56.440924 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/lock.rb:17:in `call'
E, [2016-10-10T22:17:56.440990 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/actionpack-4.2.4/lib/action_dispatch/middleware/static.rb:116:in `call'
E, [2016-10-10T22:17:56.441060 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/sendfile.rb:113:in `call'
E, [2016-10-10T22:17:56.441124 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/railties-4.2.4/lib/rails/engine.rb:518:in `call'
E, [2016-10-10T22:17:56.441188 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/railties-4.2.4/lib/rails/application.rb:165:in `call'
E, [2016-10-10T22:17:56.441259 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/urlmap.rb:66:in `block in call'
E, [2016-10-10T22:17:56.441325 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `each'
E, [2016-10-10T22:17:56.441389 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `call'
E, [2016-10-10T22:17:56.441447 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/capybara-2.6.2/lib/capybara/server.rb:19:in `call'
E, [2016-10-10T22:17:56.441502 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:562:in `process_client'
E, [2016-10-10T22:17:56.441557 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:658:in `worker_loop'
E, [2016-10-10T22:17:56.441626 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:508:in `spawn_missing_workers'
E, [2016-10-10T22:17:56.441688 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:132:in `start'
E, [2016-10-10T22:17:56.441761 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/bundler/gems/rbsavvy_commons-ba9044e1bafd/lib/rack/handler/unicorn.rb:33:in `run'
E, [2016-10-10T22:17:56.441820 #14091] ERROR -- : /Users/phillip/Code/_all/lale/spec/support/capybara.rb:28:in `block in <top (required)>'
E, [2016-10-10T22:17:56.441879 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/capybara-2.6.2/lib/capybara/server.rb:70:in `call'
E, [2016-10-10T22:17:56.441934 #14091] ERROR -- : /Users/phillip/.rvm/gems/ruby-2.2.3/gems/capybara-2.6.2/lib/capybara/server.rb:70:in `block in boot'
feature spec fail:
160 lines
3 threads/
processes
1. test runner
2. browser
3. Rails app
# ./app/models/user.rb:60:in `name'
# ./spec/models/user_spec.rb:14:in `block (3 levels) in <top (required)>'
# ./spec/rails_helper.rb:55:in `block (4 levels) in <top (required)>'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/database_cleaner-1.5.1/lib/database_cleaner/generic/base.rb:16:in `cleaning'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/database_cleaner-1.5.1/lib/database_cleaner/base.rb:92:in `cleaning'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/database_cleaner-1.5.1/lib/database_cleaner/configuration.rb:86:in `block (2 levels) in cleaning'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/database_cleaner-1.5.1/lib/database_cleaner/configuration.rb:87:in `call'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/database_cleaner-1.5.1/lib/database_cleaner/configuration.rb:87:in `cleaning'
# ./spec/rails_helper.rb:54:in `block (3 levels) in <top (required)>'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/tagged_logging.rb:68:in `block in tagged'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/tagged_logging.rb:26:in `tagged'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/tagged_logging.rb:68:in `tagged'
# ./spec/rails_helper.rb:50:in `block (2 levels) in <top (required)>'
# ./spec/rails_helper.rb:41:in `block (3 levels) in <top (required)>'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/vcr-2.9.3/lib/vcr/util/variable_args_block_caller.rb:9:in `call'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/vcr-2.9.3/lib/vcr/util/variable_args_block_caller.rb:9:in `call_block'
# /Users/phillip/.rvm/gems/ruby-2.2.3/gems/vcr-2.9.3/lib/vcr.rb:182:in `use_cassette'
# ./spec/rails_helper.rb:40:in `block (2 levels) in <top (required)>'
# ./spec/support/cached_emails.rb:29:in `block (2 levels) in <top (required)>'
unit test fail:
13 lines
1 process
12. Avg. runtime [one test; ms]
unit test
feature spec
0 250 500 750 1000
13. Value (feature spec)
❖ Only way to automatically ensure your application
works for real users, since they use the application
through the web browser, like real users.
❖ low coupling to the actual source code (black box test).
This enables large refactorings. Rails version upgrade
without tests, anyone?
❖ serve as application specification if written correctly.
17. The »old« way
❖ several factories in each spec to set up test data
❖ CSS selectors inline in spec
❖ global, custom helper methods (#fill_form, anyone?)
❖ some custom RSpec matchers
❖ one assertion per test (being a good TDD citizen)
❖ many tests in one spec file
❖ sleep …
18. Pain points
❖ maintainability:
duplication of CSS selectors, test setup
no order to test files & helper code
❖ test stability: test sometimes fails even though feature OK
❖ runtime: test suite takes a long time to complete
❖ => slow to write, hard to debug & maintain
21. »Object graph« factories
❖ one-liner to create all test data
❖ reusable across specs
❖ DRY
❖ reliable (if tested)
❖ uses regular factory_girl features
25. Factory tests
describe "the :with_admin_and_working_group trait" do
it "assigns a new user as admin" do
circle = create(:circle, :with_admin_and_working_group)
expect(circle.admins.size).to eq(1)
expect(circle.admins.first).to be_a(User)
end
[...]
end
26. Implementation
factory :circle do
trait :with_admin_and_working_group do
with_admin
after(:create) do |circle, evaluator|
create(:working_group, circle: circle, member: circle.admin)
end
end
[...]
end
27. More examples
# combining traits
create(:circle, :with_admin, :with_volunteer)
# passing in a user for more control
create(:circle, admin: my_user)
# project with two tasks
create(:project, tasks: 2)
29. Definition
»A page object wraps an HTML page, or fragment,
with an application-specific API, allowing you to
manipulate page elements without digging around
in the HTML.«
Martin Fowler
http://martinfowler.com/bliki/PageObject.html
31. Rspec predicate matchers
expect(task_form).to have_validation_error("Please enter a name")
# calls: task_form.has_validation_error?("Please enter a name")
expect(task_page).to be_completed
# calls: task_page.completed?
Documentation: https://goo.gl/znGT6
32. SitePrism: element
class TaskPage < SitePrism::Page
element :volunteer_button, '.button-primary', text: "I'll help"
end
task_page = TaskPage.new
task_page.volunteer_button.click
task_page.has_volunteer_button?
task_page.wait_for_volunteer_button
task_page.wait_for_volunteer_button(10)
33. SitePrism: section
class WorkingGroupDashboard < SitePrism::Page
section :tab_nav, TabNav, '.tab-nav'
end
class TabNav < SitePrism::Section
element :tasks, 'a', text: /Tasks/
element :supplies, 'a', text: /Supplies/
end
page = WorkingGroupDashboard.new
page.tab_nav.tasks.click
=> section is scoped to parent
34. more SitePrism features
❖ element & section collections
❖ page navigation & verification (matching URLs)
❖ https://github.com/natritmeyer/site_prism
35. SitePrism summary
❖ correspond to your application’s pages
❖ DRY up and encapsulate your CSS selectors
❖ hold your helper methods
❖ perfect to reuse
38. Organizing specs (2)
describe "Add and remove circle admins" do
describe "add" do
context "circle has a member that's not admin yet" do
it "can be added" ...
end
end
describe "remove" do
context "circle has a member that's not admin yet" do
it "can be removed" ...
end
end
end
40. Tools for speed & debugging
# create a screenshot
save_and_open_page # shorten to #show!
# open a console in the scope of the HTML page
Capybara.pry
# run some JS code in the scope of the page
evaluate_script(’some js code’)
41. Tools for speed & debugging (2)
❖ spring gem
❖ poltergeist gem, uses PhantomJS (headless Webkit)
❖ capybara-screenshot gem
❖ browser developer console => test CSS selectors
❖ parallelize (at your own risk, can increase timing issues)
48. describe CalendarLeafCell, type: :cell do
include RSpecHtmlMatchers
let(:date) { Date.parse("2016-12-24") }
let(:html) { cell(:calendar_leaf, date).call }
it "renders month" do
expect(html).to have_tag('.calendar-leaf .month', text: 'DEC')
end
it "renders week" do
expect(html).to have_tag('.calendar-leaf .day_number', text: '24')
end
it "renders weekday" do
expect(html).to have_tag('.calendar-leaf .day-of-week', text: 'Sat')
end
end
49. class CalendarLeafCell < ::ViewModel
def month
I18n.l(date, format: "%b").upcase
end
def day
date.day
end
def week
I18n.l(date, format: '%a')
end
end
# app/cells/calendar_leaf/show.slim
.calendar-leaf *attributes
.month = month
.day
span.day_number = day
span.day-of-week = week
https://github.com/apotonick/cells
53. Questions to ask
❖ what is the system under test?
❖ which features do I care most about? (login, registration,
payment)
❖ which scenarios are most important? (»happy path«)
❖ what is likely to break?
54. Take shortcuts
❖ Stub APIs (vcr gem)
❖ login »backdoor«
❖ don’t navigate to pages
❖ don’t assert every detail of a page
❖ a hackish test is always better than no test at all
61. Who needs Lale?
120+ refugees in 2016
3 camps
10+ wokring groups,
100+ helpers
Thousands of tasks…
62. What is Lale?
Volunteers Helper circle Refugees
5x
6x
3x
@
Many phone calls, emails, meetings, etc until a task is
properly assigned to a volunteer
63. Administrators
• System admin
• Member management
• Data privacy
Group organizers
• Define and manage groups
• Create tasks and supplies; source volunteers
Helpers
• Register
• Task & Supplies
• Communicate
Roles