[How to pass argument from a script to rails...]

I have a script with which I want to create a rails app.

Then not something like:

$ rails -d mysql name_app

in terminal, but from the script.

In the script I get the app name, database etc.
After some operations I would like to create the app from the script,
but when I try something like

rails"#{ARGV}"

where ARGV = name_app-d mysql

creates the app with a name like name_app-dmysql.

How can I pass ARGV to successfully create the app?
Thank you

On 28 Sep 2008, at 02:35, Max D. [email protected]
wrote:

After some operations I would like to create the app from the script,
but when I try something like

rails"#{ARGV}"

where ARGV = name_app-d mysql

creates the app with a name like name_app-dmysql.

How can I pass ARGV to successfully create the app?
Thank you

Have you looked at what #{ARGV} evaluates to? The default to_s on
arrays just concatenates the elements, whereas you want to have a
space between them which join will do. On top of that you’ve put "
round that which will tell the shell ‘all this should be one argument’.

Fred

would ARGV.join(" ") help?

Ruby is using to_s behind the scenes. Calling to_s on an array returns
the values concatenated together in a string

[1,2,3].to_s
=> “123”

Thank you for replies.

Have you looked at what #{ARGV} evaluates to?

would ARGV.join(" ") help?

Yes, this works well with a call like:

system (or sh) ("‘rails’ #{ARGV.join(’ ')}")

but not with:

"'rails' #{ARGV.join(' ')}"

sh: ‘rails’ prova -d mysql: not found

I tried different forms, including with join. My real mistake was that I
was using the notation ``

What’s the difference?

On Sep 28, 4:20 pm, Max D. [email protected] wrote:

"'rails' #{ARGV.join(' ')}"

sh: ‘rails’ prova -d mysql: not found

I tried different forms, including with join. My real mistake was that I
was using the notation ``

There’s nothing wrong with using ``, except that you’re quoting rather
excessively

rails #{ARGV.join(' ')}

is fine, as is

system(“rails #{ARGV.join(’ ')}”)

but "rails ..." isn’t. `` is already a quoting operator so you don’t
need the quotes (which makes the shell believe you want to run a
command called “rails -d mysql some_app” (ie it will look for
something whose filename is that whole string) whereas you want to run
a command called “rails” but passing those arguments.

Fred

Thank you very much Frederick,

this has opened my eyes. Then, my mistake was to believe that I need “”
for interpolation in ``.