From: Moritz Reiter Date: 2006-11-24T19:41:15+09:00 Subject: Re: invoke system command from within a method -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Moritz Reiter wrote: > Hi all, > > I am new to Ruby and want to make a Ruby script for the network > configuration of my notebook as an exercise. Now I encountered a problem > which is pretty strange to me: > > I want to invoke '/etc/init.d/networking restart' from within my Ruby > program. If I create a file with the line > > %x{ /etc/init.d/networking restart } > > it works like I would expect. The networking init script gets invoked > and correctly processed. > > But if I do something like this: > > -->8-- > class Netconf > def restart > puts %x{ /etc/init.d/networking restart } > end > end > > netconf = Netconf.new > netconf.restart > --8<-- > > I get some output from the init script but it doesn't seem to actually > do anything. It does not reconfigure my eth's in oppostion to the > behaviour described above if don't make the system call from within a > method. > > I would be very glad if anyone could give me a hint or point me to some > documentation to enlighten me. > > Best Regards, > Okay, now I know what went wrong. I should have told you the whole story: In my script I rewrite /etc/network/interfaces and then invoke the init script. My fault was, that I didn't close the File handler for /etc/network/interfaces before starting the init script. So the init script invoked ifdown and ifup but ruby did not write the new content of /etc/network/interfaces to the harddisk yet, so ifup had no useful data to do its job. Damn, I learned my lesson: Always close your files as soon as you have finisehd writing to them. Sorry for bugging you all. Regards, - -- Moritz Reiter GPG key fingerprint: https://luna.agrav.org/~mo/gpg/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFZswdwR2rA+A/LU4RAqhfAKCqa8K1Y/6v+JgwNQb97Mw43BpfHACfXqe7 uuSMcnDydUx7Afrs1bczB8U= =mqzT -----END PGP SIGNATURE-----