Forum: Rails deployment setting up staging server - setting environment

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
8dad1ec4d769734583f45fbbee5cd009?d=identicon&s=25 Jeff Pritchard (jeffpritchard)
on 2008-10-20 03:35
Hi,
I thought it would be easy to get  a staging server working.  I'm using
capistrano 2 and the ext gem.  I already had everything working with
capistrano for a production deployment...

I added this to my deploy.rb
require 'capistrano/ext/monitor'
require 'capistrano/ext/multistage'

I created a /deploy/staging.rb
set :deploy_to, "/where-the-staging-stuff-goes"
set :rails_env, 'staging'

I added a ":staging" section in my database.yml file which is the same
as production section but points to a different database

Most of this is working.  The deployment works and I can run the app at
the new location, but for some reason it continues to use the production
database rather than the staging one that I have pointed it to with the
staging section of my database.yml file.

thanks for any words of wisdom on this.

jp
B6cfa3615571ab2548c1440f9061d263?d=identicon&s=25 Keith Pitty (Guest)
on 2008-10-20 04:49
(Received via mailing list)
Hi Jeff,

Within your config/deploy/staging.rb file something like the following
could help:

require 'erb'

before "deploy:setup", :db
after "deploy:update_code", "db:symlink"

namespace :db do
   desc "Create database yaml in shared path"
   task :default do
     db_config = ERB.new <<-EOF
staging:
   adapter: mysql
   encoding: utf8
   username: #{user}
   password: #{password}
   database: #{application}_staging
EOF

     run "mkdir -p #{shared_path}/config"
     put db_config.result, "#{shared_path}/config/database.yml"
   end

   desc "Make symlink for database yaml"
   task :symlink do
     run "ln -nfs #{shared_path}/config/database.yml #{release_path}/
config/database.yml"
   end
end

Regards,
Keith
8dad1ec4d769734583f45fbbee5cd009?d=identicon&s=25 Jeff Pritchard (jeffpritchard)
on 2008-10-20 05:29
Hi Keith,
I appreciate the help, but you've left me a bit confused.  If I read
this right, your addition is just going to add a staging section into
the database.yml file on the fly during the deploy setup.  Seems easier
to just add it in for real.  Please explain what/why.

thanks much,
jp




Keith Pitty wrote:
> Hi Jeff,
>
> Within your config/deploy/staging.rb file something like the following
> could help:
>
> require 'erb'
>
> before "deploy:setup", :db
> after "deploy:update_code", "db:symlink"
>
> namespace :db do
>    desc "Create database yaml in shared path"
>    task :default do
>      db_config = ERB.new <<-EOF
> staging:
>    adapter: mysql
>    encoding: utf8
>    username: #{user}
>    password: #{password}
>    database: #{application}_staging
> EOF
>
>      run "mkdir -p #{shared_path}/config"
>      put db_config.result, "#{shared_path}/config/database.yml"
>    end
>
>    desc "Make symlink for database yaml"
>    task :symlink do
>      run "ln -nfs #{shared_path}/config/database.yml #{release_path}/
> config/database.yml"
>    end
> end
>
> Regards,
> Keith
B6cfa3615571ab2548c1440f9061d263?d=identicon&s=25 Keith Pitty (Guest)
on 2008-10-20 06:44
(Received via mailing list)
Hi Jeff,

Sorry if I've created a red herring for you.  What I've provided
probably won't solve your problem but it would keep your database
username and password more secure.

Getting back to your problem, have you set up config/environments/
staging.rb including ENV['RAILS_ENV'] = 'staging'?

Keith
8dad1ec4d769734583f45fbbee5cd009?d=identicon&s=25 Jeff Pritchard (jeffpritchard)
on 2008-10-20 07:24
Hi Keith,
Yes, I managed to get it working just a moment ago.  This is indeed what
was missing.

thanks,
jp

Keith Pitty wrote:
> Hi Jeff,
>
> Sorry if I've created a red herring for you.  What I've provided
> probably won't solve your problem but it would keep your database
> username and password more secure.
>
> Getting back to your problem, have you set up config/environments/
> staging.rb including ENV['RAILS_ENV'] = 'staging'?
>
> Keith
1e0fce0b6a4bc9b682b67b4d7b43b17b?d=identicon&s=25 Rafael García (rafa)
on 2008-10-22 12:51
(Received via mailing list)
In your deploy.rb you should have something like this:

require 'capistrano/ext/multistage'
set :stages, %w(production staging)
set :default_stage, ""

Then when you call capistrano:

cap staging deploy

Note: In :stages you should write the filename (without extension) of
your deploy/*.rb files

Jeff Pritchard escribió:
> set :deploy_to, "/where-the-staging-stuff-goes"
> thanks for any words of wisdom on this.
>
> jp
>


--
Rafael Garcia Ortega
This topic is locked and can not be replied to.