How to pass parameters to a script in "lib" from terminal


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

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

Anyone have any ideas about this?

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

Someone else might have better ideas though :wink:

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…

Well, you have to play nice with the “rules” of the command line (like
spaces etc). Also note that whatever comes into your rake task is simply
string. You would have to parse that string and build any object you
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 P.