title: How do I begin using Postgresql database with rails applications?
body: <p>I have spend several hours looking for solutions to this on the web. Postgresql installation guides do not help since i am not familiar with interacting with databases only with ruby on rails and dealing with them this way.</p>
  
  <p>I have made several simple rails application by following tutorials and am still learning rails.  I am using Windows 10 and I have deployed some of these to Heroku for which i had to use the pg gem becasue Heroku doesnt use sqlite3.  But I have read in several places that it is necessary to install postgresql locally. So i have installed it, i think, but now i am lost. I have a software called pgAdmin4 and now i have absolutely no idea what to do in order to use postgresql through rails. I started a new app just to test it by using the following command:</p>
  
  <pre><code>rails new postgresapp --database=postgresql
  </code></pre>
  
  <p>This has given me the basic starting point for a new app set up to use postgresql. the first error that I get when i try to connecct to the localhost3000 is:</p>
  
  <pre><code>PG::ConnectionBad
  fe_sendauth: no password supplied
  
  Extracted source (around line #56):
  
      ### Convenience alias for PG::Connection.new.
      def self::connect( *args )
          return PG::Connection.new( *args )
      end
  </code></pre>
  
  <p>bearing in mind that i am not sure if the installation was a success. i went through the process of installation and entered a password and all the information so i assume that it did install somewhere.</p>
  
  <p>also there are no servers showing on pgAdmin so i added one called localhost. i am not sure if this was the right thing to do or not.</p>
  
  <p>gem file:</p>
  
  <pre><code>source 'https://rubygems.org'
  
  git_source(:github) do |repo_name|
    repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
    "https://github.com/#{repo_name}.git"
  end
  
  
  # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
  gem 'rails', '~&gt; 5.0.6'
  # Use postgresql as the database for Active Record
  gem 'pg', '~&gt; 0.18'
  # Use Puma as the app server
  gem 'puma', '~&gt; 3.0'
  # Use SCSS for stylesheets
  gem 'sass-rails', '~&gt; 5.0'
  # Use Uglifier as compressor for JavaScript assets
  gem 'uglifier', '&gt;= 1.3.0'
  # Use CoffeeScript for .coffee assets and views
  gem 'coffee-rails', '~&gt; 4.2'
  # See https://github.com/rails/execjs#readme for more supported runtimes
  # gem 'therubyracer', platforms: :ruby
  
  # Use jquery as the JavaScript library
  gem 'jquery-rails'
  # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
  gem 'turbolinks', '~&gt; 5'
  # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
  gem 'jbuilder', '~&gt; 2.5'
  # Use Redis adapter to run Action Cable in production
  # gem 'redis', '~&gt; 3.0'
  # Use ActiveModel has_secure_password
  # gem 'bcrypt', '~&gt; 3.1.7'
  
  # Use Capistrano for deployment
  # gem 'capistrano-rails', group: :development
  
  group :development, :test do
    # Call 'byebug' anywhere in the code to stop execution and get a debugger console
    gem 'byebug', platform: :mri
  end
  
  group :development do
    # Access an IRB console on exception pages or by using &lt;%= console %&gt; anywhere in the code.
    gem 'web-console', '&gt;= 3.3.0'
  end
  
  # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
  gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
  </code></pre>
  
  <p>database.yml</p>
  
  <pre><code># PostgreSQL. Versions 9.1 and up are supported.
  #
  # Install the pg driver:
  #   gem install pg
  # On OS X with Homebrew:
  #   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
  # On OS X with MacPorts:
  #   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
  # On Windows:
  #   gem install pg
  #       Choose the win32 build.
  #       Install PostgreSQL and put its /bin directory on your path.
  #
  # Configure Using Gemfile
  # gem 'pg'
  #
  default: &amp;default
    adapter: postgresql
    encoding: unicode
    # For details on connection pooling, see rails configuration guide
    # http://guides.rubyonrails.org/configuring.html#database-pooling
    pool: &lt;%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %&gt;
  
  development:
    &lt;&lt;: *default
    database: postgresapp_development
  
    # The specified database role being used to connect to postgres.
    # To create additional roles in postgres see `$ createuser --help`.
    # When left blank, postgres will use the default role. This is
    # the same name as the operating system user that initialized the database.
    #username: postgresapp
  
    # The password associated with the postgres role (username).
    #password:
  
    # Connect on a TCP socket. Omitted by default since the client uses a
    # domain socket that doesn't need configuration. Windows does not have
    # domain sockets, so uncomment these lines.
    #host: localhost
  
    # The TCP port the server listens on. Defaults to 5432.
    # If your server runs on a different port number, change accordingly.
    #port: 5432
  
    # Schema search path. The server defaults to $user,public
    #schema_search_path: myapp,sharedapp,public
  
    # Minimum log levels, in increasing order:
    #   debug5, debug4, debug3, debug2, debug1,
    #   log, notice, warning, error, fatal, and panic
    # Defaults to warning.
    #min_messages: notice
  
  # Warning: The database defined as "test" will be erased and
  # re-generated from your development database when you run "rake".
  # Do not set this db to the same as development or production.
  test:
    &lt;&lt;: *default
    database: postgresapp_test
  
  # As with config/secrets.yml, you never want to store sensitive information,
  # like your database password, in your source code. If your source code is
  # ever seen by anyone, they now have access to your database.
  #
  # Instead, provide the password as a unix environment variable when you boot
  # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
  # for a full rundown on how to provide these environment variables in a
  # production deployment.
  #
  # On Heroku and other platform providers, you may have a full connection URL
  # available as an environment variable. For example:
  #
  #   DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
  #
  # You can use this database configuration with:
  #
  #   production:
  #     url: &lt;%= ENV['DATABASE_URL'] %&gt;
  #
  production:
    &lt;&lt;: *default
    database: postgresapp_production
    username: postgresapp
    password: post#&lt;%= ENV['POSTGRESAPP_DATABASE_PASSWORD'] %&gt;
  </code></pre>