- Removed the version declaration from the compose.yaml file.
This change simplifies the configuration by removing a version number,
allowing Docker Compose to use the latest compatible version. This
change does not impact the functionality of the services defined in
this file.
- Replace hardcoded DATABASE_URL and RAILS_MASTER_KEY with
environment variables.
- Change POSTGRES_PASSWORD to utilize an environment
variable instead of a hardcoded value.
These changes enhance security by ensuring sensitive
information is not exposed in the configuration files,
allowing for better practices in managing environment
variables.
- Disabled port mapping for the web service in the Docker Compose file
- This may affect how the application is accessed outside of the container
- The decision to comment out the ports could be for environmental reasons or to avoid port conflicts
- Changed Redis data volume path from '../daw_data/redis' to '../taw_data/redis'.
This update reflects a restructuring in the project directory for better
data organization and may require corresponding adjustments in other
configuration files to ensure data consistency.
- Update PostgreSQL data directory to point to taw_data/pg
- Update Redis data directory to point to daw_data/redis
This change updates the Docker compose file to use different data directories for PostgreSQL and Redis. It improves the overall organization and clarity of the configuration.
- Change sleep duration from 1 minute to 10 seconds in
BatchGenerateWeatherArtsWorker.
This change addresses API limitations by reducing the wait time
between job submissions, thereby increasing the efficiency of
the batch processing for generating weather arts.
- Change BatchGenerateWeatherArtsWorker to use city ID instead of city object
- Update API endpoint to accept city ID
- Improve performance by reducing database queries
This change improves the performance of the BatchGenerateWeatherArtsWorker by reducing database queries and increasing efficiency. It is a necessary modification to ensure the worker functions correctly and efficiently.
- Include Sidekiq::Worker for asynchronous task execution
- Implement condition to skip execution if weather data is up to date
These changes enable efficient weather art generation by leveraging
background processing, thereby improving overall application
performance and responsiveness.
- Simplify step definitions by removing unnecessary
empty lines.
- Ensure compatibility with Docker Hub through the
addition of a comment to clarify the usage of the
REGISTRY variable.
These changes enhance the readability of the workflow file
without affecting its functionality. They make the CI/CD
pipeline clearer for future contributors by simplifying
structure and providing contextual information.
- Change from using GenerateWeatherArtJob to GenerateWeatherArtWorker
- Maintain asynchronous job processing
This refactoring improves the clarity of the job class being used
for generating weather art and adheres to project conventions. The
change does not affect the API rate limits as the sleep duration
remains the same.
- Replace synchronous job processing with asynchronous
- Ensure processing does not exceed API rate limits
This change allows for better performance by offloading the
queue management to Sidekiq, enabling more efficient
parallel processing of weather art generation. It also
prevents potential API rate limit violations by maintaining
a delay between requests.
- Changed 'last_weather_fetch' and 'last_image_generation'
from 10.hours.ago to 10.days.ago for various cities
- Affects seed data for cities in multiple countries, including:
- Australia
- Bangladesh
- Brazil
- Canada
- China
- Egypt
- France
- Germany
- India
- Japan
- Mexico
- Nigeria
- Pakistan
- Russia
- Saudi Arabia
- Singapore
- South Korea
- Thailand
- Turkey
- UK
- USA
- Vietnam
This change ensures that the timestamps reflect a more refined time range for when last weather data was fetched, possibly to enhance performance or consistency in application behavior.
- Removed unnecessary queue configurations from Sidekiq configuration
- Added 'whenever' gem and its necessary dependencies for adding cron jobs
- Updated Docker workflow to cache Docker layers using actions/cache
This update improves the efficiency of CI/CD pipelines by caching Docker layers, which will help in reducing the time taken for the build process. Additionally, the changes in the Gemfile and the config/sidekiq.yml configuration will enable the project to run cron jobs for tasks like generating weather arts.
- Enable dynamic scheduling only if the schedule file exists
- Update the sidekiq.yml to include a new job for batch generation
- Define a cron schedule for the new job to run every 2 hours
This update allows Sidekiq to conditionally enable its scheduler and
introduces a new job that processes weather art batches every two
hours. The change enhances the job management and scheduling
dynamics in the application.
- Comment out previous queue adapter setting for Solid Queue
- Set Active Job queue adapter to Sidekiq for better performance
This change updates the Active Job queue adapter from Solid Queue to
Sidekiq. This adjustment is intended to improve job processing
performance and reliability in production environments. The previous
adapter setting will be retained as a comment for reference.
- Remove environment condition for admin user creation
This change simplifies the admin user creation in the seeds file by
removing the conditional check for the development environment.
As a result, the admin user will be created regardless of the
environment, which may need to be addressed to avoid unintended
consequences in production setups.
- Create admin user with email 'admin@example.com' and password 'password' for development environment
This change allows for easier development and testing by providing a default admin user.
- Renamed `BatchGenerateWeatherArtsJob` to `BatchGenerateWeatherArtsWorker`
- Renamed `GenerateWeatherArtJob` to `GenerateWeatherArtWorker`
- Updated Sidekiq configuration to set Redis URL and logger level
- Modified `sidekiq.yml` to use the new worker class names and added queue configurations
These changes help in aligning the class names with their purpose as
workers in Sidekiq, while also ensuring better configuration for
Redis and logging.
- Standardized quotation marks in Gemfile and Ruby files
- Improved consistency for Sidekiq and Sidekiq Scheduler
- Removed unnecessary blank line in GenerateWeatherArtWorker class
These changes ensure a consistent coding style across the project, making
it easier to read and maintain. Adjustments to the Gemfile update the
formatting without altering the functionality.
- Implement BatchGenerateWeatherArtsWorker to handle batch
processing of weather art generation.
- Create GenerateWeatherArtWorker for individual weather art
generation tasks.
- Update Dockerfile to include redis-tools for Sidekiq support.
- Modify Gemfile to add sidekiq and sidekiq-scheduler gems.
- Configure Sidekiq in initializers and set up routes for
Sidekiq dashboard.
- Include a sidekiq.yml configuration for scheduling jobs.
- Create compose.yaml for Docker services including web,
database, Redis, and Sidekiq workers.
These changes introduce background processing capabilities
using Sidekiq, allowing for efficient generation of weather
art through scheduled and managed job queues, optimizing
performance and scalability.
- Change the precompilation command to include RAILS_BUILD=1
- This modification allows for environment-specific builds without altering the existing secret handling
This update enhances the flexibility of the asset precompilation process during deployment while maintaining the required application security measures.
- Change active storage service to use `:build` or `:amazon`
- Added a new `build` service for local disk storage
This update allows for better flexibility in managing file
storage based on the environment. The configuration now checks
the `RAILS_BUILD` environment variable to decide on the
storage service, making it easier to handle local testing and
production deployments without manual adjustments.
- Change default region for amazon_dev to 'wnam'
- Change default region for amazon to 'wnam'
This commit updates the storage configuration for AWS S3 by
setting the default region to 'wnam' for both development
and production environments. The change ensures that a valid
region is used even when the environment variable is not set.
This is a preparatory step for deployments needing a specific
region if the configuration is incomplete.
- Change job execution frequency from once every hour to every two hours.
- Ensure the `BatchGenerateWeatherArtsJob` runs as intended without unnecessary frequency.
This change addresses performance concerns by reducing the load on the system caused by frequent job executions.
- Added 'libpq-dev' to the packages installed in the Dockerfile
- Updated the base_uri in WeatherService to use 'dig' for safer access
These changes improve the Docker environment by ensuring that
necessary PostgreSQL development headers are available during
installation. The weather service now safely accesses the
URI from the credentials, reducing the risk of errors when
fetching nested configuration data.
- Update active status of various cities from false to true
- Ensures that all seeded cities are now enabled and available for usage
This change activates previously inactive cities in the seed files, which
facilitates their accessibility in subsequent deployments and testing.
The modification was made across numerous city seed files to ensure a
consistent state where all cities are now marked as active, improving
the readiness of the application.
- Add libpq5 to the list of installed packages for
database connections.
- Remove libpq-dev from the list as it is no longer
necessary for the build process.
These adjustments enhance the Docker image configuration,
ensuring the application can connect to PostgreSQL databases
without unnecessary build dependencies.
- Adjust formatting for message parameters in the chat call
- Eliminate unnecessary blank lines in generate_prompt_request method
- Ensure consistent styles for arrays and block indentation
These changes improve code readability and maintain consistency in
formatting for better maintainability without altering functionality.
- Created BatchGenerateWeatherArtsJob to process eligible
cities and generate weather art.
- Introduced GenerateWeatherArtJob for generating weather
art and image attachment.
- Added AiService for obtaining prompts and generating
images with OpenAI API.
- Implemented WeatherService to fetch current weather
data from the QWeather API.
- Updated Gemfile with necessary gems (whenever,
ruby-openai, httparty, down, aws-sdk-s3).
This commit introduces a system to create and store
weather art images for various cities based on current
weather conditions, leveraging external APIs for data
and image generation.
- Improve image and main info section for better aesthetics
- Add gradient overlay for text readability
- Include temperature display with feel-like temperature
- Enhance city name and location styling
- Add detailed weather information metrics (Humidity, Wind, Visibility)
- Provide a backup UI for when no image is available
This update enhances the user interface of the city weather card
by improving the layout and adding more detailed weather information.
The gradient overlays and reorganized elements improve readability and
usability. Additionally, a fallback display is included for cases where
weather images are not attached, ensuring consistent design.
- Introduce dropdown menus for region and country selection
- Adjust padding on title section for better layout
- Update filter navigation structure to improve UX
This commit refines the user interface for filtering cities by
allowing users to select regions and countries from dropdown
menus. The filtering options are now easier to navigate and
maintain a consistent aesthetic with adjusted padding for
better visual hierarchies.
- Create a new partial for city card display with weather image
- Update index page to show featured weather art with gradient
- Refactor city listing layout and navigation for improved clarity
This commit introduces a new component for displaying city cards that
includes weather artwork when available. The index page has been
refactored for better visual presentation and usability. Users can
now better navigate through cities and see relevant weather data.
- Add slug column to weather_arts for friendly URLs.
- Update weather arts retrieval in the controller to use slug.
- Implement region and country filtering in cities index view.
- Optimize city queries with scopes for active status and region/country.
- Improve UI layout and design for the cities index page.
These changes allow better user experience by enabling cleaner URLs for weather arts and facilitating efficient filtering of cities based on selected regions and countries.
- Change workflow name from 'Build and Publish Docker Image' to 'Docker'
This change simplifies the workflow name for better readability and
identification in the CI/CD pipeline.
- Add support for tagging workflow triggers on pushes
- Include version tags following the pattern 'v*'
This change enhances the Docker workflow by allowing the CI/CD
pipeline to respond to version tags, which is beneficial for
versioned releases and better management of deployment processes.
- Add libpq-dev to the list of packages installed for the build
- Ensure that the environment has the necessary dependencies
This change updates the Dockerfile to include the libpq-dev package,
which is required for compiling certain gem dependencies. The inclusion
of this package improves the compatibility of the environment with
database-related gems during the build process, ensuring a smoother
setup for development and deployment.
- Add checkout step to retrieve full git history
- Introduce a step to get the current version of the project
- Modify login step to use the actor's username instead of a constant
- Update the tags to use dynamic versioning in Docker image push
These changes improve the Docker workflow by ensuring that the
correct version tag is used when building and pushing Docker
images. The modified steps enhance traceability and allow
the workflow to handle versioning accurately based on current
git tags, addressing the need for specific version control in
the images produced.
- Remove unnecessary steps for version extraction
- Simplify tag assignment using environment variables
This update cleans up the Docker workflow by eliminating steps
that were not crucial for the tagging process. The tagging
is now done directly with the repository name, reducing redundancy
and improving clarity in the workflow configuration.
- Change Docker tags configuration to be multiline
- Improve clarity and maintainability of the workflow
This change enhances the readability of the tags in the
Docker workflow, facilitating easier updates and understanding
of the tagging process.
- Corrected syntax errors in output redirection
- Ensured that LATEST_TAG and VERSION_TAG are set correctly in the GitHub Actions output
These changes fix an issue where the command was improperly formatted,
which could lead to unexpected behavior during the workflow execution.
- Store latest and version tags in variables
- Clean up output by using variables for tags
This update improves the clarity of the tagging process in the
Docker workflow configuration. The tags are now stored in
variables for better manageability and consistency in
environment output.
- Remove extraneous dollar sign from LATEST_TAG
- Ensure correct evaluation during workflow execution
This fix resolves an issue that could cause the incorrect
setting of the LATEST_TAG environment variable in the
GitHub Actions workflow, ensuring proper deployment tagging.
Update Docker workflow to include image prefix in version and latest tag
Change the Docker image prefix in the GitHub workflow to include the registry, username and image name.
Update the environment variables to use the new format for the image prefix.
- Update fetch-depth in Docker workflow configuration
- No additional dependencies added
This change updates the fetch-depth setting in the GitHub Actions Docker workflow. This ensures that we get the full Git history for the code checkout. There are no additional dependencies added to this change.
- Include checkout code step using actions/checkout@v3
- Set fetch-depth to 0 to retrieve the full git history
This change ensures that the workflow has access to the complete
commit history, which may be necessary for certain operations
within the Docker build process.
- Change hardcoded Docker Hub username to use secrets
- Update workflow to securely reference DockerHub credentials
This update enhances the security of the GitHub Actions workflow
by using secrets instead of exposing sensitive information
in the codebase. This ensures that the Docker Hub username is
kept private and reduces the risk of accidental exposure.
- Add Docker login step
- Set up QEMU
- Set up Docker Buildx
- Build and push Docker image
This feature allows for automated building and publishing of Docker images to Docker Hub. It includes proper setup of QEMU and Docker Buildx for cross-platform compatibility and efficient image building.