- Include Redis gem in the Gemfile and update Gemfile.lock
- Implement locking mechanism in the RefreshSitemapWorker to prevent concurrent executions
- Use Redis to manage distributed locks for the sitemap generation process
This change introduces Redis for managing access controls in the sitemap
refresh workflow. It prevents multiple simultaneous jobs from running,
improving stability and performance when generating sitemaps.
- Modify the popular arts query to include city and country relationships
- Ensure the latest arts query also includes necessary associations
- Removed deprecated commented code for clarity
These changes improve data retrieval by establishing better relationships to
cities and their countries. This enhances the availability of data for
the views rendering the arts and keeps the code clean by removing
unnecessary comments.
- Change default_host assignment to use ENV.fetch for
RAILS_SITEMAP_DEFAULT_HOST
- This allows for easier configuration based on the environment,
particularly useful for production and development setups.
- Update query to select weather arts with last generation time
greater than the cutoff time.
- Adjust logging for clarity, including brackets around limits
and counts for better readability.
- Change from appending to selected cities to concatenating selected
cities, ensuring the full list is preserved.
This commit resolves an issue where the logic for filtering
recent weather arts was incorrect, potentially leading to missing
relevant entries. Additionally, it improves log output formatting
for better debugging.
- Change default host for SitemapGenerator from local server
to the new public URL. This allows the sitemap to be
generated correctly in the production environment.
- Ensures that the sitemap points to the correct domain, improving
search engine visibility and indexing.
- Added logging for skipped recent cities.
- Enhanced logging for selected cities after filtering.
This refactor improves the observability of the city selection
process in the BatchGenerateWeatherArtsWorker. The added logs
provide better insight during debugging and monitoring, allowing
developers to track recent selections and identify any issues
related to city filtering more effectively.
- Introduce `get_recent_cities` to filter out cities that have been recently generated weather arts.
- Update `select_cities` method to exclude recent cities from the selection process, ensuring diversity in the generated arts.
- Modify the `select_countries` method to maintain its functionality while integrating recent city filtering.
This update enhances the system's ability to select active cities efficiently, reducing redundancy and improving the variety of generated weather arts by avoiding recent candidates.
- Refactor city selection to better optimize the process
- Implement debugging logs for clearer tracking of city selection
- Modify logic to fairly distribute remaining city slots across countries
These changes enhance the efficiency of the city selection process
while providing useful debug information to track operations. The new
logic ensures that cities are selected based on activity status and
spreads the selection across provided countries if additional slots
are available. This improves the probability of including diverse
cities in the generation process, reducing potential bias in
selection.
The commit updates the sitemap host to point to the production environment.
This is needed so that the sitemap links will point to the correct domain, and the
production environment needs to point to a specific host. The sitemap now uses
the correct host url, and this is the correct config for the current state.
- Modified the host name in the sitemap configuration to support the new domain.
- This commit changes the hostname, and updates the sitemap to reflect the correct host.
- This is done to reflect the correct host on the production server.
- Added the new `public/sitemaps` directory to .gitignore to avoid commits related to this
directory, and updates the .gitignore.
- Display the latest weather art on the cities index page.
- Update the weather art preview image size to be big.
- Improve image display by using webp format.
- Adjust the daily and per-run generation limits.
These changes enhance the user experience by providing more
up-to-date and visually appealing content, while also controlling
the resource usage during image generation.
- Update city selection to consider countries.
- Use daytime instead of sunrise for time checks.
- Add per-run generation limit
This commit refactors the weather art generation process to
increase the efficiency. The city selection has been updated to
consider country. Daytime check has been updated to determine
if the city is within the correct local time. A limit is added
to restrict the number of cities processed in a single run.
The commit message implements a new feature
in the admin panel for the Sidekiq tasks
allowing users to input the city ID. The
previous implementation uses a selection approach
where users can input the city ID.
The new feature allows for a more streamlined,
direct data input method for the users.
</commit_ message>
- Modify the code to use the `hd` quality setting
- Update the code to use the `hd` quality setting.
- Ensure there are no other side effects of this change.
- These changes will improve the user experience.
</commit_message>
The commit renames the social sharing feature on
the website. Before the renaming the text was labeled as
'Twitter' and now it has been renamed to 'X/Twitter'.
Motivation:
- To change the presentation of the page.
- To improve the experience of the user.
- To show the correct name of the platform.
</commit_message>
</git_diff>
</commit_message>
- Added `share_controller.js` to handle sharing logic.
- Created `_share_social.html.erb` partial for social sharing buttons.
- Integrated share buttons into city and weather art show pages.
- Added sharer.js dependency.
This feature allows users to share city and weather art pages on
various social media platforms such as Facebook, Twitter, LinkedIn,
Pinterest, Telegram, and WhatsApp, increasing content visibility.
- Added state association to City model
- Modified City view to display state information
This change includes proper input validation and error handling.
Added city state information to views and models to improve data accuracy and user experience.
- Comment out featured arts in home controller
- Update index.html.erb to display latest arts instead of featured
This change aims to keep the displayed arts up-to-date and fresh by showing the latest ones, enhancing user experience by providing more current content.
Add logging for the daily generated counts
The change log adds a log statement to display the
count of slots generated.
The code change includes two parts:
* a debug log of
number of slots generated and
the number of
generation slots
* a change that generates the
number of
art per day
to the
user's log
informing
the art generated.
The logs are added for monitoring.
The log
statement outputs the
number of generated art and the limit.
</commit_message>
The code refactoring is done by commenting out the random art functionality from the index page and removing the corresponding code from the home_controller. This eliminates the need for a random art display, simplifying the application's behavior.
This also fixes a bug where it was showing random arts and makes it so the application runs more efficiently since it's not calling the unnecessary code anymore.
The commit fixes issues in the `Country` model to properly handle
timezones when it's a string. The change processes the content and
parses it as JSON data, and fixes an issue with JSON format.
- The `format_timezones` method now attempts to parse and reformat
timezones to prevent potential JSON parsing errors.
- If the conversion to JSON fails, logs the error.
- The code ensures data integrity
by parsing and reformatting the JSON for timezone data to solve a
bug.
</commit_message>
</commit_message>
</commit_message>
This ensures the data is correctly formatted for easier handling
and prevents potential runtime errors when reading timezone data.
</commit_message>
The auto ad is added to the city page and the weather art page. It improves user experience by showing relevant ads to the user. This change should not affect performance as it only modifies the view.
- Add auto ad in city page and weather art page.
- Refactor shadow effects to improve user experience.
- No side effects or any other consequences.
- Updated timezone parsing to handle JSON format.
- Modified how timezones are fetched in multiple models.
- Added a migration to convert existing timezones data.
- Modified the country model to format timezones.
This commit fixes an issue where the timezone data was not
being correctly parsed, leading to potential errors in time
calculations. The changes ensure the application correctly
handles and displays timezone information, improving the
accuracy of time-related features.
This commit refactors the database migration to convert the
timezones for each country in the database to a JSON format.
It addresses an issue where the timezone data was not properly
formatted. It provides a default value if there's an error to avoid
data loss. It also includes error handling to catch and log exceptions
during the migration process, preventing the entire migration from failing.
- Changed `timezones` attribute from text to JSONB in `Country`.
- Updated related model methods to handle JSONB data.
- Added a migration to convert existing timezone data.
- Used safe navigation operators to prevent errors.
This change improves the storage and management of timezone
information by using the JSONB data type. It includes data
migration to handle existing timezone data.
- Renamed `app/views/cities/_map.html.erb` to
`app/views/shared/_map.html.erb`
- Updated references to the map partial in `cities/show.html.erb` and
`weather_arts/show.html.erb`
- Adjusted the layout in `cities/show.html.erb` and
`weather_arts/show.html.erb` for visual consistency.
This refactoring improves code reusability and maintainability by
centralizing the map component. It also improves the visual
presentation of the application.
- Change the method of checking for attached images from `.
- attached` to `.attached?` for consistency
This commit addresses a bug where the weather art image was not
displayed correctly on the map. It fixes the issue by using the
`.attached?` method, which ensures that the correct image URL is
used.
This commit updates the map functionality to ensure the weather art's
display is correctly rendered. This includes modifications to the
weather art display. It ensures the correct image is shown and improves
the overall application experience.
The logging level of the batch job worker has been changed from info to debug. The change affects how the batch job worker outputs information about the cities it is processing.
- Original behavior: The batch job worker logs cities' information at the info level.
- New behavior: The batch job worker logs cities' information at the debug level.
The motivation behind this change is to reduce the noise in the logs. The new behavior will only log cities' information that is relevant for debugging purposes.
- Add formatted_current_time method to City model.
- Modify BatchGenerateWeatherArtsWorker to check local time.
- Update Sidekiq scheduler to run every hour.
This commit improves the weather art generation by considering
local time for image generation and increasing the frequency
of batch processing for testing purposes. The new method
provides formatted time information for each city. This change
ensures that images are generated during daylight hours.
- Modified the formatted_time method to use 'self' when accessing the city attribute
- This change fixes a bug where the city attribute was not being accessed correctly, ensuring proper timezone information retrieval.
- Comment out marker click listener to fix a bug
- Update _map.html.erb to handle null values in the city
- Improve error handling
This commit addresses a bug where clicking the map marker
caused unexpected behavior. The changes involve commenting out
the click listener to fix the issue, and updating the view
template to handle potential null values in the city object to
prevent unexpected behavior.
- Replace OpenLayers with Mapbox GL for map rendering.
- Update CSS for map styling and control visibility.
- Integrate weather art into map popups.
- Add Mapbox token to credentials.yml.enc
This commit replaces the existing OpenLayers map implementation
with Mapbox GL. It also adjusts the styling and adds a
weather art display to the map popup, which enhances the
user experience. The necessary changes include modifying
stylesheets, JavaScript controllers, view templates, and
updating the credentials file. The motivation is to enhance
map rendering performance and user experience.
- Replaced Leaflet with OpenLayers for improved map rendering
- Added OpenLayers CSS and removed Leaflet CSS
- Updated map controller to use OpenLayers API
- Added marker icon in public directory
- Added scopes and associations for weather art in City model
This change migrates the map display from Leaflet to
OpenLayers, providing better performance and more features.
It also introduces new model associations for weather arts,
allowing to sort cities by latest weather updates.
- Implement MapController for displaying city maps
- Add map rendering in the city show view
- Include weather arts in the city show controller
- Update asset pipeline to include Leaflet CSS and JS
This commit introduces a map feature that allows users to view
geographical information related to cities. The map is integrated
with weather arts data, enhancing the overall functionality of
the city show page.
- Introduce a new partial for displaying weather statistics in
a consistent card format.
- Refactor the city show page to utilize the new statistics
card partial, simplifying the code structure.
- Update layout and styling for improved UX and maintainability.
These changes enhance the maintainability of the codebase by
promoting reuse of the statistics card component and improving
the overall presentation of weather data for cities.
- Introduce a new method `formatted_time` in the `WeatherArt` model
- Update various views to use this new method for date and time display
- Support formatting in local time zones or UTC
This update enhances the time representation for weather data, ensuring
that displayed times can reflect the user's local timezone or remain
fixed at UTC. This improves the usability of the application for
users in different regions.
- Replace local timezone display with UTC in the weather
display components
- Adjust time formatting in both city and weather art views
This change standardizes the time format across the application,
making it clear that the displayed times are in UTC, aiding user
understanding and consistency in time representation.
- Update load time display to show the rounded value instead of the
raw measurement.
- This change improves the readability of the load time for end users
by providing a more user-friendly format.
The adjustment enhances the user experience by presenting the load time
in a cleaner and more comprehensible manner.
- Include 'rack-mini-profiler' gem in Gemfile
- Update Gemfile.lock with the new dependency
- Create initializer for rack-mini-profiler in development
This addition allows for performance monitoring within the
application during development, which can help identify
and address performance issues more effectively.
- Simplified page views and visitors display in footer
- Improved readability by using labels and abbreviations
- Updated Tailwind CSS configuration for better font fallback
These changes enhance the user interface in the footer by making the
presentation of page views and visitors more concise and visually
appealing. The update also ensures a better font fallback
experience across different platforms.
- Changed includes for WeatherArt to optimize query
- Removed redundant includes of country in WeatherArt
- Simplified region fetching by directly ordering
These modifications improve the efficiency of the queries
by reducing unnecessary joins and utilizing ActiveRecord’s
query capabilities more effectively. The code change does not
affect the overall functionality but improves maintainability.