Note

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Funtoo Ruby Project

From Funtoo
Revision as of 07:14, July 6, 2022 by Siris (talk | contribs) (new Ruby project page info)
Jump to navigation Jump to search
   Summary
This project is focused on Ruby support in Funtoo, and oversees ruby-kit and overall Ruby integration.
   Subpages
   People
Leads
   Latest Status

FL-9695 has now been completed, bringing a fully metatools modernized ruby-kit to Funtoo next, including making Ruby 3.1.2 the default Ruby.

27 July 2022


This project is focused on Ruby support in Funtoo, and oversees ruby-kit and overall Ruby integration.

Overview

Similar to the Funtoo Python Project, we need to rethink how Ruby is done in Funtoo to ensure upstream compatibility and overall future maintainability of the Ruby Programming Language as it evolves.

Also, as with any Programming Language, we also want to be able to offer all supported upstream versions of Ruby to Funtoo Ruby users with relatively little effort by leveraging Funtoo Metatools

One of the major components of Ruby is RubyGems, the native Ruby package and dependency manager. Just like many other Programming Languages that provide their own package manager, it usually knows best how to automatically handle a language's module/library/package management for the development efficiency.

So like many things Gentoo has done with Portage, one is heavy modification of RubyGems to work with Portage instead of RubyGems just working as seamlessly alongside Ruby.

What are we Building?

After the initial modernization of the core Ruby packages and RubyGems, the next major effort of the Funtoo Ruby Project is to simplify RubyGems in Funtoo to be less integrated with Portage and more environmentally driven by Ruby user's needs and industry standard upstream tools like bundler.

RubyGems is one of the most important components of making Ruby useful for development and it should just work on Funtoo Linux.

Lastly we want all RubyGems packages hosted on rubygems.org to be available, not just a small subset.

Initial Project as Literal Ruby

   funtoo_ruby.rb (Ruby source code) - Funtoo Ruby project in Ruby
#!/usr/bin/env ruby
# frozen_string_literal: true

require 'date'

# Funtoo Ruby Project
class FuntooRuby
  def initialize
    @date = DateTime.now
    @release = 'next'
    @delimiter = '------------------------------'
  end

  def start
    puts "The Funtoo Programming Languages Project for the Ruby Programming language starts now: #{@date}"
    puts @delimiter
  end

  def release
    puts "Funtoo Ruby Project Funtoo release target: #{@release}"
    puts @delimiter
  end

  def mission
    puts 'Project Mission:'
    puts '1. Convert all Funtoo ruby-kit packages into funtoo-metatools autogenerated ebuilds including core language and Ruby'
    puts '2. Ensure at least two stable and latest Ruby versions are supported in the Funtoo Portage Tree: 2.7.5 and 3.1.1'
  end

  def take_action(method_name)
    send(method_name)
  end
end

Project = FuntooRuby.new

%w[start release mission].each do |action|
  Project.take_action(action.to_s)
end

Now let's get this Project started and have some fun with Ruby:

funtoo-ruby # ./funtoo_ruby.rb
The Funtoo Programming Languages Project for the Ruby Programming language starts now: 2022-03-05T23:20:19-08:00
------------------------------
Funtoo Ruby Project Funtoo release target: next
------------------------------
Project Mission:
1. Convert all Funtoo ruby-kit packages into funtoo-metatools autogenerated ebuilds including core language and Ruby
2. Ensure at least two stable and latest Ruby versions are supported in the Funtoo Portage Tree: 2.7.5 and 3.1.1

References

Some internal and external references that are critical for this project: