I have been tinkering with RoR and JRuby for about a year to create
simple internal applications. I am working on my first "real"
application that will be deployed for use on the internet and have
some questions on proper deployment using RoR (2.2.2), JRuby (1.4) and
MySQL (5.0.x).
(I will be deploying everything to a hosted Tomcat/MySQL environment)
I can easily enough use Warbler to create a WAR file and deploy that
to Tomcat. I also setup a MySQL server on the hosting machine as the
app is configured to use MySQL.
The part that is causing me heartburn is getting the DB schema up to
the hosting site. As a workaround for the initial release I simply
used mysqldump to export the entire schema and base data. I then used
the mysql command interface to load the sqldump into the server. This
works well enough for now, but what is the "right" way to deploy the
database schema and migration updates over time?
While the app is in use over the next 3 months I will be building the
"admin/reporting" interface to it so I suspect I will need to modify
the schema in some way long after the app is in use and loaded with
real data.
I appreciate your time and assistance with this question!
I have been tinkering with RoR and JRuby for about a year to create
simple internal applications. I am working on my first "real"
application that will be deployed for use on the internet and have
some questions on proper deployment using RoR (2.2.2), JRuby (1.4) and
MySQL (5.0.x).
(I will be deploying everything to a hosted Tomcat/MySQL environment)
I can easily enough use Warbler to create a WAR file and deploy that
to Tomcat. I also setup a MySQL server on the hosting machine as the
app is configured to use MySQL.
The part that is causing me heartburn is getting the DB schema up to
the hosting site. As a workaround for the initial release I simply
used mysqldump to export the entire schema and base data. I then used
the mysql command interface to load the sqldump into the server. This
works well enough for now, but what is the "right" way to deploy the
database schema and migration updates over time?
While the app is in use over the next 3 months I will be building the
"admin/reporting" interface to it so I suspect I will need to modify
the schema in some way long after the app is in use and loaded with
real data.
I appreciate your time and assistance with this question!
--Michael
Michael, why don't you simply use the glassfish gem for deployment? In any cade, if you're trying to update the schema on the production machine, the you can simply do the following:
Forgive me if this is a stupid question (this is my first attempt at
deploying a WAR from RoR)...
How can I run a rake command on the Tomcat server? All that is on
there is Java / Tomcat / MySQL. Do I have access to rake somehow
through the WAR that is deployed? I know the JRuby JAR is in that WAR
but was not aware I could run rake tasks that way.
I have similar set up as yours. My production Linux server has plain
Glassfish & MySQL, and no JRuby is installed (it is packed in WAR
file). I ended up with running migration on my development computer.
In my database.yml , I put the address of my production server. My
production server is located in private network for security purposes,
so I am using SSH tunneling to access from outside.
Michael, why don't you simply use the glassfish gem for deployment?
It's not always suitable, especially if you have an existing Tomcat
installation with other non-JRuby apps.
In any cade, if you're trying to update the schema on the production
machine, the you can simply do the following:
rake db:migrate RAILS_ENV=production
No, you can't; that's the whole point -- none of those rake tasks are
packaged with the WAR file.
The legacy app I inherited uses Capistrano to check out and deploy
a JRuby app in standard Rails format, which is useful for running
migrations, scripts via cron jobs, etc., and then builds and deploys
the WAR file from there.
I have been tinkering with RoR and JRuby for about a year to create
simple internal applications. I am working on my first "real"
application that will be deployed for use on the internet and have
some questions on proper deployment using RoR (2.2.2), JRuby (1.4) and
MySQL (5.0.x).
(I will be deploying everything to a hosted Tomcat/MySQL environment)
I can easily enough use Warbler to create a WAR file and deploy that
to Tomcat. I also setup a MySQL server on the hosting machine as the
app is configured to use MySQL.
The part that is causing me heartburn is getting the DB schema up to
the hosting site. As a workaround for the initial release I simply
used mysqldump to export the entire schema and base data. I then used
the mysql command interface to load the sqldump into the server. This
works well enough for now, but what is the "right" way to deploy the
database schema and migration updates over time?
While the app is in use over the next 3 months I will be building the
"admin/reporting" interface to it so I suspect I will need to modify
the schema in some way long after the app is in use and loaded with
real data.
I appreciate your time and assistance with this question!
You can have warbler include your db/ directory as well as your
Rakefile in the war. Then, on the server, unpack the war file
somewhere and run rake as follows inside the WEB-INF directory:
Some folks have gone so far as to have a custom servlet context
listener run db:migrate inside the app server once the app is
deployed, but that always seemed a little dodgy to me...