Class: Develoz::VersionResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/develoz/version_resolver.rb

Constant Summary collapse

RUBY_FALLBACK =
"4.0.5"
RAILS_FALLBACK =
"8.1"
RUBY_VERSION_URL =
"https://cache.ruby-lang.org/pub/misc/latest_ruby"
RAILS_VERSION_URL =
"https://rubygems.org/api/v1/versions/rails/latest.json"
TIMEOUT_SECONDS =
5

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.resolve(ruby: nil, rails: nil) ⇒ Object



16
17
18
# File 'lib/develoz/version_resolver.rb', line 16

def self.resolve(ruby: nil, rails: nil)
  new.resolve(ruby:, rails:)
end

.write_ruby_version(dir, ruby:) ⇒ Object



37
38
39
# File 'lib/develoz/version_resolver.rb', line 37

def self.write_ruby_version(dir, ruby:)
  new.write_ruby_version(dir, ruby:)
end

.write_tool_versions(dir, ruby:, node: "24.15.0") ⇒ Object



27
28
29
# File 'lib/develoz/version_resolver.rb', line 27

def self.write_tool_versions(dir, ruby:, node: "24.15.0")
  new.write_tool_versions(dir, ruby:, node:)
end

Instance Method Details

#resolve(ruby: nil, rails: nil) ⇒ Object



20
21
22
23
24
25
# File 'lib/develoz/version_resolver.rb', line 20

def resolve(ruby: nil, rails: nil)
  {
    ruby: ruby || fetch_ruby_version,
    rails: rails || fetch_rails_version
  }
end

#write_ruby_version(dir, ruby:) ⇒ Object



41
42
43
44
45
# File 'lib/develoz/version_resolver.rb', line 41

def write_ruby_version(dir, ruby:)
  path = File.join(dir, ".ruby-version")
  content = "#{ruby}\n"
  File.write(path, content)
end

#write_tool_versions(dir, ruby:, node: "24.15.0") ⇒ Object



31
32
33
34
35
# File 'lib/develoz/version_resolver.rb', line 31

def write_tool_versions(dir, ruby:, node: "24.15.0")
  path = File.join(dir, ".tool-versions")
  content = "ruby #{ruby}\nnodejs #{node}\n"
  File.write(path, content)
end