My personal scratchpad.
Today I wasted over 40 minutes on meaningless code debugging all because instead of this:
mount_uploader :avatar, AvatarUploader
I did this:
mount_uploader :avatar
Jakiś czas temu postanowiłem po raz kolejny przestawić się z Sublime Text 2 na Vima, związek z którym kończył się już kilkukrotnie.
Jako developer jestem z natury leniwy dlatego też jedną z najważniejszych funkcji, oprócz automatycznego usuwania białych znaków i dodawania znaku nowej linii na końcu pliku, której wymagam od edytora tekstu jest obsługa snippetów.
Podczas moich poprzednich przygód z Vimem korzystałem z snipMate, a później snippetsEmu. Tego ostatniego chciałem zaprząc do pracy i tym razem, trafiłem jednak na coś znacznie lepszego (i nadal rozwijanego w przeciwieństwie do dwóch pozostałych skryptów) - UltiSnips.
UltiSnips różni się od pozostałych rozwiązań przede wszystkim możliwością zagnieżdżania w snippetach wyrażeń w Vimscripcie i Pythonie, a także na umieszczanie wyniku poleceń wywołanych w shellu. Pozwala to na konstruowanie naprawdę złożonych szablonów kodu.
Autor nakręcił serię screencastów, które są niezłym wprowadzeniem do UltiSnips (część 1, 2, 3, i 4), ale jeśli ktoś miał już do czynienia ze snippetami, powinien objeść się i bez nich.
Instalacja jest trywialna jeśli korzystamy z Vundle:
W ~/.vimrc umieszczamy:
Bundle "SirVer/ultisnips"
" Pozwala na przeładowywanie istniejących snippetów (tylko jeśli instalujemy
" skrypt przy użyciu Vundle)
let g:UltiSnipsDontReverseSearchPath="1"
Restartujemy Vima i wywołujemy :BundleInstall UltiSnips będzie dostępny przy ponownym uruchomieniu. Polecam zajrzeć do :help UltiSnips.txt od razu po instalacji.
I’m starting to become more and more convinced to start decoupling business models (e.g. ActiveRecord classes) from business logic. The whole “fat model” anti-pattern just looks silly to me now.
Tinkering with Rubnius. Trying to figure out if it would be a suitable choice for a production environment. I have yet to find a library that Rubinius can’t handle (even those using C extensions compile without any problems, let it be psych or pg).
Three coin types I’ve designed for my latest project.
Interesting YAML behavior in 1.9.3-p125:
Overridden data is not set through mass assignment. That means you can safely overwrite all of your protected attributes: