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


#1

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?


#2

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 :wink:


#3

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…


#4

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 P.