Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ In order to set up the application locally:

1. `git clone git@github.com:railsbump/app.git`
2. `bin/setup`
3. `rake data:find_or_create_rails_releases`
3. `rake data:sync_rails_releases`
4. `foreman start -f Procfile.dev`
5. Go to http://localhost:3000

Expand Down
2 changes: 2 additions & 0 deletions app/models/rails_release.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ class RailsRelease < ApplicationRecord
has_many :compats, dependent: :destroy

validates :version, presence: true, format: { with: /\A\d+\.\d+\z/, allow_blank: true }
validates :minimum_ruby_version, presence: true
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these the validations you had in mind, @JuanVqz? Between the spec failures that arise due to this change and this call to RailsRelease.create in https://github.com/railsbump/app/blob/main/app/services/rails_releases/create.rb#L13 maybe we shouldn't be validating whether these values are present after all? Please let me know what you think.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To me that service is dead code. we probably can remove it since we have the lib/tasks/data.rake.

validates :minimum_bundler_version, presence: true

validate do
if version
Expand Down
44 changes: 9 additions & 35 deletions lib/tasks/data.rake
Original file line number Diff line number Diff line change
@@ -1,33 +1,7 @@
# lib/tasks/update_rails_releases.rake
namespace :data do
SUPPORTED_RAILS_VERSIONS = %w(
2.3
3.0
3.1
3.2
4.0
4.1
4.2
5.0
5.1
5.2
6.0
6.1
7.0
7.1
7.2
8.0
8.1
)

task find_or_create_rails_releases: :environment do
SUPPORTED_RAILS_VERSIONS.each do |version|
RailsRelease.find_or_create_by(version: version)
end
end

desc "Update minimum Ruby versions from Rails 2.3 to 7.2"
task update_rails_releases: :find_or_create_rails_releases do
desc "Find or create Rails releases and update their version constraints"
task sync_rails_releases: :environment do
min_versions = {
"2.3" => {
minimum_ruby_version: "1.8.7",
Expand Down Expand Up @@ -138,13 +112,13 @@ namespace :data do
}

min_versions.each do |version, attrs|
if rails_release = RailsRelease.find_by(version: version)
puts "Updating Rails Release #{rails_release} with #{attrs}"
rails_release.update_columns(attrs)
puts "Updated Rails Release versions"
else
puts "Skipping Rails Release #{version} as it does not exist"
end
raise "minimum_ruby_version is required for Rails #{version}" if attrs[:minimum_ruby_version].blank?
raise "minimum_bundler_version is required for Rails #{version}" if attrs[:minimum_bundler_version].blank?

rails_release = RailsRelease.find_or_initialize_by(version: version)
rails_release.assign_attributes(attrs)
puts "Syncing Rails Release #{rails_release} with #{attrs}"
rails_release.save!
end

puts "Rails Releases updated successfully."
Expand Down
Loading