Related
It’s generally a good idea to set up your local database to match the database on the production environment. The easiest way to use Postgresql on Mac is to download and install the Postgres.app. With Postgresql running, add gem 'pg' to the Gemfile in your rails project and run bundle install to install the Postgresql Ruby driver. Nov 17, 2014 Via psql on your local machine. If you have the PostgreSQL client libraries installed on your local machine you can connect to your virtual machine database via: $ PGUSER=myapp PGPASSWORD=dbpass psql -h localhost -p 15432 myapp. For other local tools and GUIs, use the database server details that gets printed on startup.
Tutorial
Introduction
When using the Ruby on Rails web framework, your application is set up by default to use SQLite as a database. SQLite is a lightweight, portable, and user-friendly relational database that performs especially well in low-memory environments, and will work well in many cases. However, for highly complex applications that need more reliable data integrity and programmatic extensibility, a PostgreSQL database will be a more robust and flexible choice. In order to configure your Ruby on Rails setup to use PostgreSQL, you will need to perform a few additional steps to get it up and running.
In this tutorial, you will set up a Ruby on Rails development environment connected to a PostgreSQL database on a local macOS machine. You will install and configure PostgreSQL, and then test your setup by creating a Rails application that uses PostgreSQL as its database server.
Prerequisites
This tutorial requires the following:
One computer or virtual machine with macOS installed, with administrative access to that machine and an internet connection. This tutorial has been tested on macOS 10.14 Mojave.
A Ruby on Rails development environment installed on your macOS machine. To set this up, follow our guide on How To Install Ruby on Rails with rbenv on macOS. This tutorial will use version 2.6.3 of Ruby and 5.2.3 of Rails; for information on the latest versions, check out the official sites for Ruby and Rails.
Step 1 — Installing PostgreSQL
In order to configure Ruby on Rails to create your web application with PostgreSQL as a database, you will first install the database onto your machine. Although there are many ways to install PostgreSQL on macOS, this tutorial will use the package manager Homebrew.
There are multiple Homebrew packages to install different versions of PostgreSQL. To install the latest version, run the following command:
If you would like to download a specific version of PostgreSQL, replace postgresql
in the previous command with your desired package. You can find the available packages at the Homebrew website.
Next, include the PostgreSQL binary in your PATH
variable in order to access the PostgreSQL command line tools, making sure to replace the 10
with the version number you are using:
Then, apply the changes you made to your ~/.bash_profile
file to your current shell session:
To start the service and enable it to start at login, run the following:
Check to make sure the installation was successful:
You will get the following output:
Once PostgreSQL is installed, the next step is to create a role that your Rails application will use later to create your database.
Step 2 — Creating a Database Role for Your Application
In PostgreSQL, roles can be used to organize permissions and authorization. When starting PostgreSQL with Homebrew, you will automatically have a superuser role created with your macOS username. In order to keep these superuser privileges separate from the database instance you use for your Rails application, in this step you will create a new role with less access.
To create a new role, run the following command, replacing appname
with whatever name you’d like to give the role:
In this command, you used createuser
to create a role named appname
. The -d
flag gave the role the permission to create new databases.
You also specified the -P
flag, which means you will be prompted to enter a password for your new role. Enter your desired password, making sure to record it so that you can use it in a configuration file in a future step.
If you did not use the -P
flag and want to set a password for the role after you create it, enter the PostgreSQL console with the following command:
You will receive the following output, along with the prompt for the PostgreSQL console:
The PostgreSQL console is indicated by the postgres=#
prompt. At the PostgreSQL prompt, enter this command to set the password for the new database role, replacing the highlighted name with the one you created:
PostgreSQL will prompt you for a password. Enter your desired password at the prompt, then confirm it.
Now, exit the PostgreSQL console by entering this command:
Your usual prompt will now reappear.
In this step, you created a new PostgreSQL role without superuser privileges for your application. Now you are ready to create a new Rails app that uses this role to create a database.
Step 3 — Creating a New Rails Application
With your role configured for PostgreSQL, you can now create a new Rails application that is set up to use PostgreSQL as a database.
First, navigate to your home directory:
Create a new Rails application in this directory, replacing appname
with whatever you would like to call your app:
Access Rails App In Local Machine Macbook Pro
The -d=postgresql
option sets PostgreSQL as the database.
Once you’ve run this command, a new folder named appname
will appear in your home directory, containing all the elements of a basic Rails application.
Next, move into the application’s directory:
Now that you have created a new Rails application and have moved into the root directory for your project, you can configure and create your PostgreSQL database from within your Rails app.
Step 4 — Configuring and Creating Your Database
When creating the development
and test
databases for your application, Rails will use the PostgreSQL role that you created in Step 2. To make sure that Rails creates these databases, you will alter the database configuration file of your project. You will then create your databases.
One of the configuration changes to make in your Rails application is to add the password for the PostgreSQL role you created in the last step. To keep sensitive information like passwords safe, it is a good idea to store this in an environment variable rather than to write it directly in your configuration file.
Access Rails App In Local Machine Machines
To store your password in an environment variable at login, run the following command, replacing APPNAME
with the name of your app and PostgreSQL_Role_Password
with the password you created in the last step:
This command writes the export
command to your ~/.bash_profile
file so that the environment variable will be set at login.
To export the variable for your current session, use the source
command:
Now that you have stored your password in your environment, it’s time to alter the configuration file.
Open your application’s database configuration file in your preferred text editor. This tutorial will use nano
:
Under the default
section, find the line that says pool: <%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>
and add the following highlighted lines, filling in your credentials and the environment variable you created. It should look something like this:
This will make the Rails application run the database with the correct role and password. Save and exit by pressing CTRL+X
, Y
, then ENTER
.
For more information on configuring databases in Rails, see the Rails documentation.
Now that you have made changes to config/database.yml
, create your application’s databases by using the rails
command:
Once Rails creates the database, you will receive the following output:
As the output suggests, this command created a development
and test
database in your PostgreSQL server.
You now have a PostgreSQL database connected to your Rails app. To ensure that your application is working, the next step is to test your configuration.
Step 5 — Testing Your Configuration
To test that your application is able to use the PostgreSQL database, try to run your web application so that it will show up in a browser.
First, you’ll use the built-in web server for Rails, Puma, to serve your application. This web server comes with Rails automatically and requires no additional setup. To serve your application, run the following command:
--binding
binds your application to a specified IP. By default, this flag will bind Rails to 0.0.0.0
, but since this means that Rails will listen to all interfaces, it is more secure to use 127.0.0.1
to specify the localhost
. By default, the application listens on port 3000
.
Once your Rails app is running, your command prompt will disappear, replaced by this output:
To test if your application is running, open up a new terminal window on your server and use the curl
command to send a request to 127.0.0.1:3000
:
You will receive a lot of output in HTML, ending in something like:
Modify the noise color of your hi-hat, clip your bass through different analog filter types, LFO rate and depth of a wobble bass. Each one of SPARK's 480 instruments comes with 12 parameters allowing you to sculpt your own sound. Best mac piano teaching software. The possibilities are huge! Professional mix: Thanks to the integrated 16-tracks mixer, you can fine-tune your mix with 14 high quality effects and also map each instrument stereo output to your favorite DAW Perfect for Live performance: Create stunning breaks thanks to real-time slicing and filtering on the XY pad, combined with advanced looping modes.
You can also access your Rails application in a local web browser by visiting:
At this URL, you will find a Ruby on Rails welcome page:
This means that your application is properly configured and connected to the PostgreSQL database.
Conclusion
In this tutorial, you created a Ruby on Rails web application that was configured to use PostgreSQL as a database on a local macOS machine. If you would like to learn more about the Ruby programming language, check out our How To Code in Ruby series.
For more information on choosing a database for your application, check out our tutorial on the differences between and use cases of SQLite, PostgreSQL, and MySQL. If you want to read more about how to use databases, see our An Introduction to Queries in PostgreSQL article, or explore DigitalOcean’s Managed Databases product.