rspec tweaks
TRANSCRIPT
![Page 1: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/1.jpg)
Rspec TweaksOmbu Labs, January 2016
![Page 2: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/2.jpg)
![Page 3: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/3.jpg)
![Page 4: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/4.jpg)
![Page 5: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/5.jpg)
![Page 6: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/6.jpg)
Fixture Insert (0.3ms) INSERT INTO `account_types` (`name`, `country_id`, `monthly_cost`, `currency`, `created_at`, `updated_at`, `id`) VALUES ('Plus', 130, 50, 'MXN', '2016-01-18 13:24:08', '2016-01-18 13:24:08', 187940547) Fixture Insert (0.3ms) INSERT INTO `account_types` (`name`, `country_id`, `monthly_cost`, `currency`, `created_at`, `updated_at`, `id`) VALUES ('Base', 130, 30, 'MXN', '2016-01-18 13:24:08', '2016-01-18 13:24:08', 1010077272) Fixture Insert (0.3ms) INSERT INTO `account_types` (`name`, `country_id`, `monthly_cost`, `currency`, `created_at`, `updated_at`, `id`) VALUES ('Premium', 130, 10, 'MXN', '2016-01-18 13:24:08', '2016-01-18 13:24:08', 624812012) Fixture Insert (0.2ms) INSERT INTO `account_types` (`name`, `country_id`, `monthly_cost`, `currency`, `created_at`, `updated_at`, `id`) VALUES ('Plus', 40, 25000, 'CLP', '2016-01-18 13:24:08', '2016-01-18 13:24:08', 305852283) Fixture Insert (0.2ms) INSERT INTO `account_types` (`name`, `country_id`, `monthly_cost`, `currency`, `created_at`, `updated_at`, `id`) VALUES ('Base', 40, 10000, 'CLP', '2016-01-18 13:24:08', '2016-01-18 13:24:08', 42332910) Fixture Insert (0.3ms) INSERT INTO `account_types` (`name`, `country_id`, `monthly_cost`, `currency`, `created_at`, `updated_at`, `id`) VALUES ('Premium', 40, 13000, 'CLP', '2016-01-18 13:24:08', '2016-01-18 13:24:08', 897761919) Fixture Insert (0.2ms) INSERT INTO `account_types` (`name`, `country_id`, `monthly_cost`, `currency`, `created_at`, `updated_at`, `id`) VALUES ('Designer', 9, 0, 'ARS', '2016-01-18 13:24:08', '2016-01-18 13:24:08', 302242410) Fixture Insert (0.2ms) INSERT INTO `account_types` (`name`, `country_id`, `monthly_cost`, `currency`, `created_at`, `updated_at`, `id`) VALUES ('Plus', 214, 25000, 'USD', '2016-01-18 13:24:08', '2016-01-18 13:24:08', 621079293) Fixture Insert (0.2ms) INSERT INTO `account_types` (`name`, `country_id`, `monthly_cost`, `currency`, `created_at`,68, 250) Fixture Insert (0.2ms) INSERT INTO `countries` (`name`, `iso3`, `iso`, `iso_name`, `id`, `numcode`) VALUES ('Iran, Islamic Republic of', 'IRN', 'IR', 'IRAN, ISLAMIC REPUBLIC OF', 94, 364) Fixture Insert (0.2ms) INSERT INTO `countries` (`name`, `iso3`, `iso`, `iso_name`, `id`, `numcode`) VALUES ('Niue', 'NIU', 'NU', 'NIUE', 149, 570) Fixture Insert (0.2ms) INSERT INTO `countries` (`name`, `iso3`, `iso`, `iso_name`, `id`, `numcode`) VALUES ('Samoa',
332 Inserts
for a simple Controller Spec
with one User
![Page 7: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/7.jpg)
let vs instance variables
![Page 8: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/8.jpg)
![Page 9: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/9.jpg)
![Page 10: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/10.jpg)
After some refactoring …
![Page 11: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/11.jpg)
![Page 12: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/12.jpg)
use more “let”
![Page 13: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/13.jpg)
just build, don’t create!
![Page 14: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/14.jpg)
flexible use of “let”
![Page 15: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/15.jpg)
more than 65% faster!!!
![Page 16: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/16.jpg)
but still 0.54243 seconds without AR?!
![Page 17: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/17.jpg)
The logs tell me this:
which means something is creating this record o.O
Okeeeey… -_-‘
![Page 18: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/18.jpg)
Tests without AR references:
Still slow, but this is due to the file operations of our validation.
78% faster! O_O
![Page 19: Rspec Tweaks](https://reader030.vdocuments.site/reader030/viewer/2022021423/58a709f01a28ab4c438b628b/html5/thumbnails/19.jpg)
Thank you!Questions?