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

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:

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.