Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Passing hashes as command-line parameters

Reply
Thread Tools

Passing hashes as command-line parameters

 
 
Jeff Leeman
Guest
Posts: n/a
 
      04-16-2009
Is it not possible to pass hashes as command-line arguments to a Ruby
script?

Thanks,
Jeff
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Joel VanderWerf
Guest
Posts: n/a
 
      04-16-2009
Jeff Leeman wrote:
> Is it not possible to pass hashes as command-line arguments to a Ruby
> script?


Like ... ?

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

 
Reply With Quote
 
 
 
 
Jeff Leeman
Guest
Posts: n/a
 
      04-16-2009
Well, what I'm looking for is to be able run something like:

ruby script/runner "SomeClassName.method_name({:some_key_1 =>
'some_value_1', :some_key_2 => 'some_value_2', :some_key_3 =>
'some_value_3'})"

Joel VanderWerf wrote:
> Jeff Leeman wrote:
>> Is it not possible to pass hashes as command-line arguments to a Ruby
>> script?

>
> Like ... ?


--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Sebastian Hungerecker
Guest
Posts: n/a
 
      04-16-2009
Jeff Leeman wrote:
> Well, what I'm looking for is to be able run something like:
>
> ruby script/runner "SomeClassName.method_name({:some_key_1 =>
> 'some_value_1', :some_key_2 => 'some_value_2', :some_key_3 =>
> 'some_value_3'})"


You're perfectly able to run something like that. See:


~> mkdir script
~> cat>script/runner
class SomeClassName
def self.method_name(hash)
p hash
end
end
eval ARGV[0]

~> ruby script/runner "SomeClassName.method_name({:some_key_1
=> 'some_value_1', :some_key_2 => 'some_value_2', :some_key_3
=> 'some_value_3'})"
{:some_key_1=>"some_value_1", :some_key_2=>"some_value_2", :some_key_3=>"some_value_3"}

HTH,
Sebastian

 
Reply With Quote
 
Jeff Leeman
Guest
Posts: n/a
 
      04-16-2009
Which OS are you using? Also, are you running this from an IRC prompt
or a standard bash shell?

Thanks,
Jeff


Sebastian Hungerecker wrote:
> Jeff Leeman wrote:
>> Well, what I'm looking for is to be able run something like:
>>
>> ruby script/runner "SomeClassName.method_name({:some_key_1 =>
>> 'some_value_1', :some_key_2 => 'some_value_2', :some_key_3 =>
>> 'some_value_3'})"

>
> You're perfectly able to run something like that. See:
>
>
> ~> mkdir script
> ~> cat>script/runner
> class SomeClassName
> def self.method_name(hash)
> p hash
> end
> end
> eval ARGV[0]
>
> ~> ruby script/runner "SomeClassName.method_name({:some_key_1
> => 'some_value_1', :some_key_2 => 'some_value_2', :some_key_3
> => 'some_value_3'})"
> {:some_key_1=>"some_value_1", :some_key_2=>"some_value_2",
> :some_key_3=>"some_value_3"}
>
> HTH,
> Sebastian


--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Sebastian Hungerecker
Guest
Posts: n/a
 
      04-16-2009
Jeff Leeman wrote:
> Which OS are you using?


Linux though that should really not make any difference. The ruby code I
posted will work on any platform (though you'd be using something other than
cat to write the code into the file on systems without cat - but then you'd
be doing that anyway, I only used cat so I could copy'n'paste the whole thing
from my bash prompt).

> Also, are you running this from an IRC prompt
> or a standard bash shell?


bash. "~>" is my bash prompt.

 
Reply With Quote
 
Joel VanderWerf
Guest
Posts: n/a
 
      04-16-2009
Jeff Leeman wrote:
> Well, what I'm looking for is to be able run something like:
>
> ruby script/runner "SomeClassName.method_name({:some_key_1 =>
> 'some_value_1', :some_key_2 => 'some_value_2', :some_key_3 =>
> 'some_value_3'})"
>
> Joel VanderWerf wrote:
>> Jeff Leeman wrote:
>>> Is it not possible to pass hashes as command-line arguments to a Ruby
>>> script?

>> Like ... ?

>


You could just eval ARGV[0] in this case.

$ ruby -e 'p eval(ARGV[0])' '{:foo => :bar}'
{:foo=>:bar}

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

 
Reply With Quote
 
Jeff Leeman
Guest
Posts: n/a
 
      04-16-2009
Ok, interesting. I'm using a PC, and I tried the exact code that
Sebastian put together, and it runs fine in Cygwin, but does not work in
the command prompt window:

C:\rails_app>jruby script\runner "SomeClassName.method_name({:some_key_1
=> 'some_value_1', :some_key_2 => 'some_value_2'})"
script\runner:6: (eval):1: , unexpected '=' (SyntaxError)

I guess I don't know the command prompt language too well, but there's
probably some special way things have to be delimited with quotes.

-Jeff


Joel VanderWerf wrote:
> Jeff Leeman wrote:
>>> Like ... ?

>>

>
> You could just eval ARGV[0] in this case.
>
> $ ruby -e 'p eval(ARGV[0])' '{:foo => :bar}'
> {:foo=>:bar}


--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Sebastian Hungerecker
Guest
Posts: n/a
 
      04-17-2009
Jeff Leeman wrote:
> C:\rails_app>jruby script\runner "SomeClassName.method_name({:some_key_1
> => 'some_value_1', :some_key_2 => 'some_value_2'})"
> script\runner:6: (eval):1: , unexpected '=' (SyntaxError)


Try putting p ARGV[0] before the eval and see what that outputs. That way you
can see if and how cmd butchers the argument.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
On Hashes - How the hashes printing works? Neela megha shyam Chivukula Ruby 4 05-28-2009 10:56 AM
How to make an array of hashes to a single array with all thevalues of these hashes ? kazaam Ruby 12 09-13-2007 01:30 PM
using hashes as keys in hashes Steven Arnold Ruby 3 11-23-2005 03:25 PM
Hash of hashes, of hashes, of arrays of hashes Tim O'Donovan Perl Misc 5 10-28-2005 05:59 AM
Hashes of Hashes via subs Ben Holness Perl 8 10-08-2003 06:57 AM



Advertisments