Thanks Bruno. Unfortunately, I was not able to get test() to exit with a status 0. When I did an print on the response I couldn't see anything that exited with a status or any sort whether it be true, false, 0 or 1. Since I am fairly new to this, I am sure the problem lies on my end.
However, to get me not understanding (for now), I chose to pass an if statement to MYSQL then check the response and act accordingly. task :check_db_existance do on roles(:app) do |host| pass = capture("echo $RAILS_DB_PASS").strip db_exists = capture("mysql -u someuser -p#{pass} -e \"SELECT IF(EXISTS (SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '#{fetch(:application)}_#{fetch(:rails_env)}'), 'Yes','No')\"").split("\n").last unless db_exists == 'Yes' info "Creating #{fetch(:application)}_#{fetch(:rails_env)}" execute("mysql -u someuser -p#{pass} -e 'create database #{fetch(:application)}_#{fetch(:rails_env)}'") end end end Honestly, I don't like it since I know there has to be a way to use `rake db:create` instead of me having to pass SQL code to create the DB but for now it works. I will refactor it later on when I have more time. On Wed, Apr 9, 2014 at 7:21 AM, Bruno Sutic <bruno.su...@gmail.com> wrote: > Hi, > here's how I solved the same problem for postgresql: > https://github.com/bruno-/capistrano-postgresql/blob/master/lib/capistrano/postgresql/psql_helpers.rb#L6-16 > > As you can see `test` is used (in psql helper) to detect success or > failure. > > Let me know if you need more help around this. I spent quite some time > debugging and getting this to work for postgres (and I think it's still not > perfect). > > On Friday, April 4, 2014 9:21:18 PM UTC+2, Vell wrote: >> >> Versions: >> >> - Ruby 2.0 >> - Capistrano 3.1 >> - Rake / Rails / etc 4.0.4 >> >> Platform: >> >> - Working on.... mac os x >> - Deploying to... centos 6.5 >> >> Logs: >> >> - Please past logs (as completely as possible to a 3rd party pasting >> service such as pastie.org) >> >> Files: >> >> - Capfile >> - deploy.rb >> - Stage files (production.rb, staging.rb) >> >> Hello all, >> >> I am attempting to make it so that capistrano creates a db if it doesn't >> exist. Right now I am able to run the command to check for the db but I am >> not able to capture the "unknown database" message that comes out from >> MYSQL. >> >> I'm sure there is a way to do it, I just haven't figured it out the right >> way to do it. The code I am starting with is below: >> >> desc "check if db exists on remote server. If not create it." >> task :check_db do >> on roles(:app) do |host| >> puts "-"*100 >> puts capture("mysql -usomeuser -psomepassword >> #{fetch(:application)}_#{fetch(:rails_env)}") >> end >> end >> >> I have also tried: >> >> puts %x("mysql -usomeuser -psomepassword #{fetch(:application)}_#{ >> fetch(:rails_env)}") >> >> The response I get is: >> >> DEBUG [242e1da5] Command: mysql -usomeuser -psomepassword >> app_name_dev_server >> DEBUG [242e1da5] ERROR >> DEBUG [242e1da5] 1049 (42000) >> DEBUG [242e1da5] : Unknown database 'online_community_dev_server' >> >> >> That last line, or even the one before it, I can't seem to catch it to >> use in a condition statement. >> >> >> Any thoughts would be greatly appreciated. >> > -- > You received this message because you are subscribed to the Google Groups > "Capistrano" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to capistrano+unsubscr...@googlegroups.com. > To view this discussion on the web, visit > https://groups.google.com/d/msgid/capistrano/e6f569db-5514-49d2-b5d2-9ae279817dc5%40googlegroups.com<https://groups.google.com/d/msgid/capistrano/e6f569db-5514-49d2-b5d2-9ae279817dc5%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Capistrano" group. To unsubscribe from this group and stop receiving emails from it, send an email to capistrano+unsubscr...@googlegroups.com. To view this discussion on the web, visit https://groups.google.com/d/msgid/capistrano/CABO-7pVkzhe9%3D-wRpxKgkxXMmmee1WAM64R7VMpfkZmpethZjQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.