Stoppt die Vorratsdatenspeicherung - www.vorratsdatenspeicherung.de

Posts Tagged ‘Rails’

Establish a 2nd database connection in Rails

Thursday, June 18th, 2009

OK, you can find some howto’s everywhere on the web but only on this site I found the complete solution:

class SecondConnection < ActiveRecord::Base

SecondConnection.establish_connection(
:adapter  => "informix",
:host     => "localhost",
:username => "hansnase",
:password => "very_secret",
:database => "ccdb@localhost"
)

self.abstract_class = true
end

“self.abstract_class = true” makes the thing actually work. Otherwise Rails seems to cache the database connection and does not switch back if you access any other classes but SecondConnection.

Yeah!

Later: Not so Yeah…

I had to establish another call to

  ActiveRecord::Base.establish_connection
       logger.info { "Establishing Base Connection" }
       log_connections

I assume it’s either an Informix problem or related to the old rails version I’m driving with.
Nevertheless: It works now.

Hpricot: XML to Hash

Friday, March 20th, 2009

Well: I nearly lost all my hairs about this. Strange that I couldn’t find something like this in the docs.Situation:

I have some XML code from that I need parts being put into a simple hash (see below).

The following small ruby snippet does exactly this.

Only thing that’s not working is the “inner_xml” part. I personally don’t need it but your mileage may vary and you may want to fix the issue (and give me a note)

require 'rubygems'
require 'hpricot'
require 'pp'

text = <<eof
<payment>
		<vat>
			<pay_vat>0</pay_vat>
			<vat_id/>
		</vat>
		<creditcard>
			<type>master</type>
			<holder>Franz Fluchsfinger</holder>
			<company/>
			<no>52660xxxxxxxxxxx79</no>
			<kpn/>
			<valid_until>09/10</valid_until>
			<data>Just some data</data>
			<xml_for_demo><inner_xml>inner text</inner_xml></xml_for_demo>
			<signature>a5f4e2shortened4b1e523ca873837c8f1c9ea66ee1924d</signature>
		</creditcard>
</payment>
eof

xml =Hpricot.XML(text)
a= xml/"creditcard/*"
h={}
a.each {|b|
	h[b.name] = b.inner_text if b.is_a? Hpricot::Elem
}
pp h	

result:

[code]]czozMDE6XCINCnJ1YnkgdGVzdC5yYg0Ke1wiY29tcGFueVwiPSZndDtcIlwiLA0KXCJ4bWxfZm9yX2RlbW9cIj0mZ3Q7XCJpbm5lciB0ZXh0XCIsDXtbJiomXX0KXCJub1wiPSZndDtcIjUyNjYweHh4eHh4eHh4eHg3OVwiLA0KXCJob2xkZXJcIj0mZ3Q7XCJGcmFueiBGbHVjaHNmaW5nZXJcIiwNClwic2lnbmF0e1smKiZdfXVyZVwiPSZndDtcImE1ZjRlMnNob3J0ZW5lZDRiMWU1MjNjYTg3MzgzN2M4ZjFjOWVhNjZlZTE5MjRkXCIsDQpcInR5cGVcIj0mZ3Q7XCJtYXN7WyYqJl19dGVyXCIsDQpcInZhbGlkX3VudGlsXCI9Jmd0O1wiMDkvMTBcIiwNClwia3BuXCI9Jmd0O1wiXCIsDQpcImRhdGFcIj0mZ3Q7XCJKdXN0IHNvbWUgZGF0YXtbJiomXX1cIn0NClwiO3tbJiomXX0=[[/code]

Btw.: I found the solution partly on http://railsforum.com/viewtopic.php?id=22055

Rails Snippets

Thursday, February 26th, 2009

OK, this is more Ruby than Rails but nevertheless helpful…

If you come from a Perl background you will be surprised that in Ruby an array is definitively not a list. So if you want to pass a list of elements to a method that you have stored in an array, you may want to use the following idiom:
[code]]czoxMTU6XCJsaXN0ID0gW10NCmxpbmVzID0gRmlsZS5yZWFkbGluZXMoXCJGSUxFTkFNRVwiKQ0KbGluZXMuZWFjaCBkbyB8bGluZXwNCntbJiomXX1saXN0LnB1c2goUmVzdWx0Lm5ldygqbGluZS5zcGxpdChcIiBcIikpKQ0KZW5kDQpcIjt7WyYqJl19[[/code]
The [code]]czoxNjpcIipsaW5lLnNwbGl0KFwiIFwiKVwiO3tbJiomXX0=[[/code] creates an element list out of the array that the split command has created.

I fear a real Rubyist would have done it in a different way but OK.

P.S. Does someone know what I'm doing wrong with the code formatting in WordPress? I'm quite sure to have included whitespaces in the code above...

Rails Snippets

Wednesday, February 25th, 2009

Some small snippets of Rails/Ruby codes that I’d like to not forget…

I found an interesting site on the Web: http://matthall.wordpress.com/2006/12/06/how-to-execute-a-rails-controller-action-via-cron/ 

Tweaking it a bit:
[code]]czoyMTQ6XCJyZXF1aXJlIFwnLi4vY29uZmlnL2Vudmlyb25tZW50XCcNCnJlcXVpcmUgXCdwcFwnDQppZCA9IEFSR1ZbMF0NCmlmIGlkLm5pe1smKiZdfWw/DQpyYWlzZSAmbHQ7PGVvZj4NClVTQUdFOiAkMCBSRVNFTExFUl9JRA0KZW9mDQplbmQNCmFwcCA9IEFjdGlvbkNvbnRyb2xsZXJ7WyYqJl19OjpJbnRlZ3JhdGlvbjo6U2Vzc2lvbi5uZXcNCmFwcC5nZXQgXCIva3VuZGVuL3N0YXR1c19tYWlsLyN7aWR9XCI8L2VvZj5cIjt7WyYqJl19[[/code]

This works fine from a Rails subdirectory and calls the same action like http://RAILSSITE/kunden/status_mail/ID