Forum: Ruby on Rails How to pass parameters to a script in "lib" from terminal

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
2119f016588ba13373484491bd2dd6d1?d=identicon&s=25 Joe Peck (fatcatt316)
on 2009-01-09 21:49
Hi,

This should be easy, for some reason I can't remember how to do it.

I have in /lib a file called "joe_converter.rb" that I want to be able
to run from terminal.  Here's the beginning of "joe_converter.rb":
**********************************************
require 'active_record'

# Takes in a URL, creates all needed objects, and ends up creating an
LqSnapshot for that URL
class JoeConverter
  def self.do_the_conversion url, scores, user_id
**********************************************

How can I run this from terminal correctly?  I tried with
"script/runner", and put in the necessary parameters, but I get back
this:

 wrong number of arguments (0 for 5) (ArgumentError)

Anyone have any ideas about this?
53be54e5db4dc58e4980db5a8255621b?d=identicon&s=25 Harold (Guest)
on 2009-01-09 21:58
(Received via mailing list)
I don't think you can do it using script/runner (I may be wrong).
You could run the script directly using ruby lib/joe_converter.rb, and
handle the parameters in your script. Your rails app wouldn't load in
this case. Another (probably preferred) option is to create a rake
task in lib/tasks that takes the parameters and calls
JoeConverter.do_the_conversion passing the parameters.

If you are accessing any other classes/modules of your rails app (like
any model for instance), go with the rake task as they would load as
well.

Someone else might have better ideas though ;)
2119f016588ba13373484491bd2dd6d1?d=identicon&s=25 Joe Peck (fatcatt316)
on 2009-01-09 22:21
I've put it in a raketask, works now, except for one thing; if I try to
pass a hash to it as a parameter, it seems like it just stops.  Hmm...
53be54e5db4dc58e4980db5a8255621b?d=identicon&s=25 Harold A. Giménez Ch. (Guest)
on 2009-01-09 22:33
(Received via mailing list)
Well, you have to play nice with the "rules" of the command line (like
no
spaces etc). Also note that whatever comes into your rake task is simply
a
string. You would have to parse that string and build any object you
need,
such as a hash or array...

Any code on how you're handling the params?

On Fri, Jan 9, 2009 at 4:21 PM, Joe Peck
This topic is locked and can not be replied to.