![]() |
Feeding a codeblock/function with an array or something similar?
Hi,
I have a codeblock like this: def foobar(command,customerrormessage) if not system(command) puts customerrormessage exit end end and then many calls of it like: foobar('rm something','Error I could'nt remove something') foobar('apt-get install thishere','Error while installing the packet') foobar('module-assistant a-i mymodule','Error while installing the module') [..] In pascal I would simply create a multi-dimensional array[x,y] and fill it with the commands and the corresponding error-messages but how to do this in ruby? There are no arrays like the mentioned on or? Or do you have a even better solution for this? greets -- kazaam <kazaam@oleco.net> |
Re: Feeding a codeblock/function with an array or something similar?
On 9/4/07, kazaam <kazaam@oleco.net> wrote:
> I have a codeblock like this: > > def foobar(command,customerrormessage) > if not system(command) > puts customerrormessage > exit > end > end > > > and then many calls of it like: > > foobar('rm something','Error I could'nt remove something') > foobar('apt-get install thishere','Error while installing the packet') > foobar('module-assistant a-i mymodule','Error while installing the module') > In pascal I would simply create a multi-dimensional array[x,y] and fill it with the > commands and the corresponding error-messages but how to do this in ruby? > There are no arrays like the mentioned on or? Or do you have a even better > solution for this? I assume the order in which you execute the commands is important, so I would do it like this (not tested): command_list = [] command_list << {:command => 'rm something', :error_msg => 'I couldn't remove something'} command_list << {:command => 'apt-get install thishere', :error_msg => 'Error while installing the packet'} command_list << {:command => 'module-assistant a-i mymodule', :error_msg => 'Error while installing the module'} process_commands(command_list) the process_commands can be something like: def process_commands(command_list) command_list.each do |command| if not system(command[:command]) puts command[:error_msg] end end end Don't know if you want to break the execution of the other commands if something fails, in which case you can return from the method inside the if, but this can get you started as an idea. Jesus. |
Re: Feeding a codeblock/function with an array or somethingsimilar?
Hi thanks,
I would do this method to make my code smaller and better looking but the whole: > command_list << {:command => 'rm something', :error_msg => 'I couldn't > remove something'} > command_list << {:command => 'apt-get install thishere', :error_msg => > 'Error while installing the packet'} > command_list << {:command => 'module-assistant a-i mymodule', > :error_msg => 'Error while installing the module'} would blow the code even more than my momentan solution :) -- kazaam <kazaam@oleco.net> |
Re: Feeding a codeblock/function with an array or something similar?
2007/9/4, kazaam <kazaam@oleco.net>:
> Hi, > I have a codeblock like this: > > def foobar(command,customerrormessage) > if not system(command) > puts customerrormessage > exit > end > end > > > and then many calls of it like: > > foobar('rm something','Error I could'nt remove something') > foobar('apt-get install thishere','Error while installing the packet') > foobar('module-assistant a-i mymodule','Error while installing the module') > [..] > > In pascal I would simply create a multi-dimensional array[x,y] and fill it with the commands and the corresponding error-messages but how to do this in ruby? There are no arrays like the mentioned on or? Or do you have a even better solution for this? You can create multidimensional array just the same: [ ['rm something','Error I could'nt remove something'], ['apt-get install thishere','Error while installing the packet'], ['module-assistant a-i mymodule','Error while installing the module'], ].each do |cmd, error| unless system cmd $stderr.puts error exit 1 end end Kind regards robert |
Re: Feeding a codeblock/function with an array or something similar?
On 9/4/07, kazaam <kazaam@oleco.net> wrote:
> Hi thanks, > I would do this method to make my code smaller and better looking but the > whole: > > > command_list << {:command => 'rm something', :error_msg => 'I couldn't > > remove something'} > > command_list << {:command => 'apt-get install thishere', :error_msg => > > 'Error while installing the packet'} > > command_list << {:command => 'module-assistant a-i mymodule', > > :error_msg => 'Error while installing the module'} > > would blow the code even more than my momentan solution :) It's easy to read this from a YAML configuration file or from a DB, so the actual list of commands is not hardcoded. It all depends on the complexity of your application. Of course you can also use other structures like a multidimensional array, or a unidimensional array with [cmd1, msg1, cmd2, msg2...], but I like the hash cause it makes clear what each element is. I'd rather not have arrays where you need to know that the first element is something and the second is something else, but for simple cases it might be enough. YMMV, though. Jesus. |
Re: Feeding a codeblock/function with an array or somethingsimilar?
thank you this works nice :)
--- kazaam <kazaam@oleco.net> |
| All times are GMT. The time now is 05:01 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.