Method: Bundler::RubyDsl#normalize_ruby_file
- Defined in:
- lib/bundler/ruby_dsl.rb
#normalize_ruby_file(filename) ⇒ Object
Support the various file formats found in .ruby-version files.
3.2.2
ruby-3.2.2
Also supports .tool-versions files for asdf. Lines not starting with “ruby” are ignored.
ruby 2.5.1 # comment is ignored
ruby 2.5.1# close comment and extra spaces doesn't confuse
Intentionally does not support ‘3.2.1@gemset` since rvm recommends using .ruby-gemset instead
Loads the file relative to the dirname of the Gemfile itself.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/bundler/ruby_dsl.rb', line 43 def normalize_ruby_file(filename) file_content = Bundler.read_file(gemfile.dirname.join(filename)) # match "ruby-3.2.2", ruby = "3.2.2" or "ruby 3.2.2" capturing version string up to the first space or comment if /^ # Start of line ruby # Literal "ruby" [\s-]* # Optional whitespace or hyphens (for "ruby-3.2.2" format) (?:=\s*)? # Optional equals sign with whitespace (for ruby = "3.2.2" format) "? # Optional opening quote ( # Start capturing group [^\s#"]+ # One or more chars that aren't spaces, #, or quotes ) # End capturing group "? # Optional closing quote /x.match(file_content) $1 else file_content.strip end end |