📖 Scenario: You are working on a Ruby on Rails web application for a small online bookstore. You want to understand how Rails manages settings and environment-specific details.
🎯 Goal: Learn what the config folder in a Rails project is for and how to set up basic configuration files.
📋 What You'll Learn
Create a config folder structure with key files
Add a basic environment configuration file
Set a configuration variable for the application name
Complete the configuration setup with an initializer file
💡 Why This Matters
🌍 Real World
Rails apps use the config folder to manage settings that change by environment or need to be shared across the app.
💼 Career
Understanding the config folder is essential for Rails developers to properly set up and maintain app settings and environment configurations.
Progress0 / 4 steps
1
Create the config folder and environment file
Create a folder named config and inside it create a file named environments/development.rb with the line Rails.application.configure do
Ruby on Rails
Hint
The config folder holds settings files. The environments/development.rb file sets environment-specific settings.
2
Add a configuration variable for the app name
Inside config/environments/development.rb, add the line config.application_name = 'Bookstore' between Rails.application.configure do and end
Ruby on Rails
Hint
This sets a custom configuration variable for your app's name.
3
Create an initializer file to use the config variable
Create a file config/initializers/app_name.rb and inside it write Rails.application.config.application_name
Ruby on Rails
Hint
Initializers run when Rails starts and can access config variables.
4
Complete the config setup with a comment explaining the folder purpose
Add a comment at the top of config/environments/development.rb that says # The config folder holds app settings and environment configurations
Ruby on Rails
Hint
Comments help explain code purpose for others and yourself later.
Practice
(1/5)
1. What is the main purpose of the config folder in a Rails application?
easy
A. To hold all the user interface templates
B. To save database records
C. To store setup and configuration files that control how the app behaves
D. To keep images and stylesheets
Solution
Step 1: Understand the role of the config folder
The config folder contains files that set up how the Rails app runs, like database settings and environment variables.
Step 2: Compare with other folders
Folders like views hold templates, and assets hold images/stylesheets, so they are not for configuration.
Final Answer:
To store setup and configuration files that control how the app behaves -> Option C
Quick Check:
Config folder = setup files [OK]
Hint: Config folder = app setup files, not UI or data [OK]
Common Mistakes:
Confusing config with views or assets folders
Thinking config stores user data
Assuming config holds templates
2. Which of the following files would you expect to find inside the config folder in a Rails app?
easy
A. routes.rb
B. application.html.erb
C. user.rb
D. style.css
Solution
Step 1: Identify typical config files
The routes.rb file defines URL routes and is always inside the config folder.
Step 2: Recognize other file locations
Files like application.html.erb are views, user.rb is a model, and style.css is an asset, so they are not in config.
Final Answer:
routes.rb -> Option A
Quick Check:
Routes file is in config folder [OK]
Hint: Routes file always lives in config folder [OK]
Common Mistakes:
Mixing view files with config files
Thinking models are in config
Confusing CSS files with config files
3. Given this snippet from a Rails app's config/database.yml file:
A. Uses PostgreSQL for both development and production
B. Sets SQLite for development and PostgreSQL for production environments
C. Uses SQLite for both development and production
D. Causes an error because two adapters are listed
Solution
Step 1: Read the environment keys
The file defines settings separately for development and production environments.
Step 2: Check adapter values per environment
Development uses SQLite3 adapter; production uses PostgreSQL adapter.
Final Answer:
Sets SQLite for development and PostgreSQL for production environments -> Option B
Quick Check:
Different adapters per environment = Sets SQLite for development and PostgreSQL for production environments [OK]
Hint: Check environment keys to see which adapter is used [OK]
Common Mistakes:
Assuming one adapter applies to all environments
Thinking multiple adapters cause errors
Ignoring environment separation
4. You see this error when starting a Rails app: Missing `secret_key_base` for 'production' environment Which config file should you check to fix this?
medium
A. config/secrets.yml
B. config/routes.rb
C. config/database.yml
D. config/application.rb
Solution
Step 1: Understand the error message
The error says the secret key base is missing for production, which is used for security.
Step 2: Identify where secret keys are stored
Secret keys like secret_key_base are stored in config/secrets.yml.
Final Answer:
config/secrets.yml -> Option A
Quick Check:
Secret keys live in secrets.yml [OK]
Hint: Secret keys are in secrets.yml, not routes or database files [OK]
Common Mistakes:
Checking routes.rb for secret keys
Looking in database.yml for secret_key_base
Confusing application.rb with secrets.yml
5. You want your Rails app to behave differently in development and production. Which config folder files would you edit to set environment-specific settings?
hard
A. config/application.rb only
B. config/routes.rb and config/database.yml
C. config/initializers/setup.rb only
D. config/environments/development.rb and config/environments/production.rb