Chyba to będzie odpowiedni dział do tego typu problemu.
Otóż… potrzebuję w kilku aplikacjach walidatorów numerów PESEL, NIP i REGON. Kod walidatorów miałem już kiedyś napisany ale, aby nie trzeba było ciągle tego kopiować machnąłem to jako gem. Potem napisałem drugi gem, który tworzy walidatory do rails 3.
developerkę lokalnie mam na Macu ruby 1.9.2-p180
aplikację hostuję na debianie ruby1.9.2-p180
lokalnie wszystkie spece obu gemów działają poprawnie. Apliakacja działa aż miło. Waliduje mi NIP (na razie to sprawdzam w aplikacji).
Gemy się instalują przez bundlera w swoim gemsecie.
Na serwerze gemy się instalują ale wykonanie chociażby rake db:migrate wywala mi błędy
Kieeedys gdzies czytalem o podobnym problemie i bylo ze niby Dir pod OS X zwraca pliki posrotowane alfabetycznie a na Linuxie niekoniecznie. Nie moge teraz znalezc tego artykulu ale rozwiazaniem bylo chyba poprostu posortowanie przed requirowaniem w stylu
require 'magick_numbers/costam'
require 'magick_numbers/cosinnego'
Tak jest najbardziej przejrzyście i poprawnie, używanie Dir w gemach nie jest ładnym rozwiązaniem.
Jeśli już naprawde chcesz to automatyzować zrób task rake który generuje magic_numebrs.rb z requirami i generuj ale jeśli nie masz tam 120 plików rb to po co wogóle ? IMHO drogus ma racje.
Też mi się podoba . Z innych propozycji może official numbers albo goverment numbers. Jako że sa to polskie walidatory to fajnie jakby nazwa to oddawała, żeby innym było łatwo znaleźć. Tylko to starałem się przekazać. Z drugiej strony dedykowana strona dla gema poza githubem mogłaby się dobrze pozycjonować i spełniać swoją rolę poza zamiast nazwy.
Odnośnie nazwy - coś z sum lub checksum. Jest np. projekt library_stdnums, który liczy sumy kontrolne dla ISBN, ISSN i LCCN.
Nazwa “biurokrata” całkiem fajna, ale w praktyce mija się z prawdą - jest wiele numerów tego rodzaju, dla których określono sumy kontrolne - chociażby numery kont bankowych, kart kredytowych, etc.
Fajnie byłoby mieć jedną bibliotekę, która gromadzi tego rodzaju algorytmy.
Dzięki za wskazówki niedługo wezmę się za realizację, co do wrapperów - to już są. Jak na razie mam dwa gemy magick_numbers i magick_numbers_rails gdzie można używać walidatora np w ten sposób:
class Person < ActiveRecord::Base
validates :pesel, :pesel => true
end
Co do nazwy to Paweł Kondzior mnie ubiegł. Myślałem o zamianie na CommonNumbers (bez Validators)
odgrzewająć dla zainteresowanych. Udało mi się zrefaktorować te gemy, teraz są obecne pod nazwami common_numbers i common_numbers_rails
Możliwa jest walidacja w ten sposób:
class Item <ActiveRecord::Base
validates :pesel, :pesel => true
validates_pesel_of :pesel
validates_pesel_of :pesel, :message => "nasz własny super message"
end
Mam nadzieję, że się komuś przyda.
Potrzebuję w projekcie jeszcze kilka numerów zwalidować, więc na pewno gem się rozrośnie.
Zabieram się właśnie za przepisanie mojej lipnej pracy inżynierskiej w gem(mój pierwszy - pewnie będzie jeszcze bardziej lipny niż oryginalna praca ) generujący numery nip,pesel,regon,dowodów osobistych etc (coś a’la faker gem) - jeżeli marioosh nie bierzesz tej nazwy to pozwól, że ja ją sobie przywłaszczę