[[PageOutline]] == 30 juli 2007 - Soemirno == Download patch van: http://dev.rubyonrails.org/ticket/8750 Draai patch vanuit actionpack root in vendor/rails {{{ patch -p0 < add_assert_select_rjs_calls_for_chained_replace_page_calls.diff }}} = Plugin Acts_As_Ideal_Transaction = == 20/21 februari 2006 - Frank == === TDD van een plugin === Het is even uitzoeken voordat je je test-omgeving van een plugin hebt ingeregeld. De plugin heeft zijn eigen database.yml en schema.rb en een abstract_unit om een en ander op de juiste wijze in te laden. Nog een kleine aanpassing gemaakt van de security test, zodat de tests vanuit de hoofd directory met rake test:plugins en vanuit de acts_as_payable_by_ideal met rake test goed draaien. === STI van de ideal_transactions === Ik heb ongelooflijk veel tijd verloren omdat ik iets simpel als STI niet goed ge-implementeerd kreeg. Dat lag ten eerste aan een 'stomme' fout van mijn kant. In het test bestand van de validaties had ik apart {{{ #!ruby class IdealPayment < ActiveRecord:;Base validates_as_ideal_payment end }}} opgenomen. Door onzurgvuldige testen van bij het implementeren van het ideal model kwam ik er pas laat achter dat ideal_payments niet echt gecreeerd werden omdat nog steeds alle attributen gevalideerd worden. Ik heb het als volgt opgelost: {{{ #!ruby def setup IdealPayment.send(:validates_as_ideal_payment) end }}} Op deze wijze wordt alleen de validatie in de bijbehorende test unit gebruikt. Een IdealPayment heeft drie verschillende soort transacties (directory, payment en status), maar ik wil ook in 1 keer alle transacties kunnen opvragen met zoiets als ideal_payment.ideal_transacties. Dat lukte in eerste instantie maar niet, omdat wanneer je eerst (onnodig weliswaar) een ideal_transactie zonder type aanduiding bewaart, dit niet goed werkt! Het is noodzakelijk dat in de tabel ideal_transactions het veld type altijd gevuld is met een van de ondergelegen transacties === script/console === Het is volgens mij niet mogelijk om in de plugin-omgeving een console te starten. Dat mis ik wel! == 16 februari 2006 - Frank == Na overleg willen we het als volgt doen. Je hebt in je bestaande applicatie een of andere Order class die je de acts_as_payment_by_ideal 'macro' meegeeft. De Order krijgt dan ahw 1 !IdealPayment kado en die heeft op zijn beurt meerdere !IdealTransactions. Mbv STI worden dan de Directy, Payment en Status transactie vastgelegd. Elke transactie bestaat uit een request en een response (die we als raw xml en als een ruby object opslaan). Een response kan een bij de soort request horende response zijn, een error of een time out (geen antwoord van de ideal-server). == 12 februari 2006 - Frank == Vandaag url-validatie geimplementeerd, daarbij een reguliere expressie gebruikt van http://actsasblog.wordpress.com/2006/10/16/url-validation-in-rubyrails/ . Dat werkte eerst niet, het blijkt dat ik een backward slash voor de forward slash moet gebruiken (\/) en dan komt het er als volgt uit te zien: {{{ /^(http|https):\/\/[a-z0-9]*([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix }}} Verder de security-helper ge-integreerd. Dat geen simpel, omdat het een module is, die je gewoon include. De uitdaging is om het model zodanig te ontwerpen dat alle requests met bijbehorende responses vastgelegd worden, waarbij de requests en responses van verschillende formaten zijn. Serializen? Loggen? == 9 februari 2006 - Frank == === Rails 1.2.2 === Begonnen met een update van rails, waarna ik {{{ script/plugin install acts_as_ideal_transaction }}} wilde proberen. Ik kreeg daarbij allerlei foutmeldingen. Bij een ouder project (onder rails 1.1.6) werkt het wel en ik kwam er al snel achter (door de boot.rb's te vergelijken) dat ik mijn rubygems moest updaten: {{{ gem install rubygems-update update_rubygems }}} Na het gebruik van rake test:plugins kreeg ik de volgende waarschuwing: {{{ /usr/bin/rake:17:Warning: require_gem is obsolete. Use gem instead. }}} Toen bleek wel dat er een bug in rubygems zat. Ik wilde namelijk ook rake update en kreeg daarbij de foutmelding {{{ Attempting remote update of rake ERROR: While executing gem ... (Gem::GemNotFoundException) Could not find rake (> 0) in any repository }}} Gelukkig vond ik de oplossing op http://rubyforge.org/pipermail/rubygems-developers/2007-January/002530.html , namelijk het verwijderen van je source_cache uit je lib en je home/.gem directory. == 8 februari 2006 - Frank == === validates_as_ideal_transaction === Begonnen met het implementeren van de validatie van een iDEAL transactie. Was nog even uitzoek werk om dat in 1 test goed op te zetten. Belangrijk is dat je de classmethod validates_as_ideal_transaction maar 1 keer 'aanroept' en niet in elke test of in de setup method meeneemt. Ik wilde gebruik maken van een reguliere expressie voor het valideren van de merchantReturnURL (gevonden na googlenen) maar die werkte nog niet en heb ik nog even gelaten. == 7 februari 2007 - Frank == Vandaag begonnen met een eerste opzet te maken van een plugin. Ben begonnen met de validaties van de attributen. Het was even uitzoeken hoe je plugin TDD kan ontwikkelen. Dat is gelukt alleen moet de plugin wel in een rails applicatie 'hangen' onder de vendor/plugins directory omdat er gezocht wordt naar de config/environment.rb voor algemene settings.