Agile Web Development

Build it. Launch it. Love it.

server_config

A simple plugin to help separate sensitive configuration such as server passwords from your Rails source code.

Example

Server parameters are configured in a config/server.rb file:

  ServerConfig.configure do |c|
    c.param :name => :db_password, :value => "my_db_password",
      :files => ["vendor/plugins/server_config/spec/files/spec_database.yml.example"]
    c.param :name => :payex_merchant_key, :value => "the_merchant_key",
      :files => ["vendor/plugins/server_config/spec/files/merchant.yml"]
    c.param :name => :smtp_password, :value => "my_smtp_password"
  end

If you provide the :files option then any occurence of the "param_name" (i.e. db_password) in those files will be replaced with the param value when you run the rake task server_config:write. If the extension of the file is .example then the result will be written to a file with the same path but without the .example extension. If the file does not have the .example extension then replacements are made inline.

Server parameters can be accessed via the global server_param(:param_name) method.

In your Capistrano deploy.rb you might want to do something like this:

  desc "Copy in server specific configuration files"
  task :setup_config do
    run <<-END
      cp #{shared_path}/server.rb #{release_path}/config &&
      cd #{release_path} && rake server_config:write
    END
  end

  task :before_symlink, :roles => :app do
    setup_config
  end

Vitals

Home http://github.com/peter/server_config/tree/master
Repository git://github.com/peter/server_config.git
License Rails' (MIT)
Tags Tag_red
Rating (0 votes)
Owner Peter Marklund
Created 29 September 2008

Comments

Add a comment