Execute Scripts from a Controller

Is there an easy way to runs things like script/generate and
db:migrate from within a controller?

Jorg Lueke wrote:

Is there an easy way to runs things like script/generate and
db:migrate from within a controller?

no not that I now of...
but why would you like to that ?

for example if you set up you application for production you only have
to call rake db:migrate one time.
(if you have set up your migrations as it should be of course :stuck_out_tongue: )
I have never come across a problem that would need to run a shell
command.

Jorg Lueke wrote:

Is there an easy way to runs things like script/generate and
db:migrate from within a controller?

This will work (at least on
Rails 1.2.3):

`if ENV[“OS”] == “Windows_NT”

`rake.bat db:migrate`

else

`rake db:migrate`

end`

Norm wrote:

Jorg Lueke wrote:

Is there an easy way to runs things like script/generate and
db:migrate from within a controller?
  

This will work (at least on Rails 1.2.3):
if ENV["OS"] == "Windows_NT"
    `rake.bat db:migrate`
else
    `rake db:migrate`
end

O sorry I didn't now that would work...
one question though.... why would you want to run db:migrate in a rails
app ?

jeljer te Wies wrote:

Norm wrote:
Jorg Lueke wrote:
Is there an easy way to runs things like script/generate and
db:migrate from within a controller?
    This will work (at least on Rails 1.2.3):
if ENV["OS"] == "Windows_NT"
`rake.bat db:migrate`
else
`rake db:migrate`
end
O sorry I didn't now that would work...
one question though.... why would you want to run db:migrate in a rails app ?

In my case I do it to
automatically update my database when the app is run. This is for an
app that is a little different from the conventional Rails app. The
app is run on the local network and may be installed and maintained by
minimally knowledgeable persons. It is easier to do the migration
automatically than to explain how and why and when to run it. I have
it set up to get the current version and only run the migration if it
is needed.

I doubt it would be the best way. But if users want to create whole
new objects running the script/generate scaffold would instantly
generate the CRUD views. But I'm thinking of doing this a bit
differently now.

Maybe the people define the elements and that definition gets stored
while the data is serialized.

This concept won't work too well in a production environment...

Use the "spawn" plugin and move the execution to a background
process. You can use Ruby's "system" command from the Kernel or the
Shell::CommandProcessor

http://www.ruby-doc.org/core/

There doesn't seem to be a well-working concept for dynamic resource
generation and storage as far as I can tell. It may be best to let
people define the new forms and use them but then make them permanent
for future use once per day. That way users get to be happy that they
can create and use somehting instantly, plus the schema can then be
updated normally once per unit time.

Or is there an elegant solution for dynamically building objects?

Worth a peek