Difference between revisions of "Funtoo:Ruby"

From Funtoo
Jump to navigation Jump to search
(initial ruby project page)
 
(new Ruby project page info)
Line 1: Line 1:
{{Project
{{Project
|summary=This project is focused on Ruby support in Funtoo, and oversees ruby-kit and overall Ruby integration.
|summary=This project is focused on [https://www.ruby-lang.org Ruby] support in Funtoo, and oversees ruby-kit and overall Ruby integration.
|Keywords=ruby, programming languages
|Keywords=ruby, programming languages
|Project Category=Development
|Project Category=Development
Line 7: Line 7:
|translate=no
|translate=no
}}
}}
This project is focused on [https://www.ruby-lang.org Ruby] support in Funtoo, and oversees ruby-kit and overall Ruby integration.
== Overview ==
Similar to the [[Funtoo:Python|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 [https://www.ruby-lang.org/en/downloads/ all supported upstream versions of Ruby] to Funtoo Ruby users with relatively little effort by leveraging [[Metatools|Funtoo Metatools]]
One of the major components of Ruby is [https://en.wikipedia.org/wiki/RubyGems 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 [https://rubygems.org/gems/bundler 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 [https://rubygems.org/ rubygems.org] to be available, not just a small subset.
== Initial Project as Literal Ruby ==
{{file|name=funtoo_ruby.rb|lang=Ruby|desc=Funtoo Ruby project in Ruby|body=
#!/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:
{{console|body=
%funtoo-ruby% ##i##./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:
* [[Ruby-kit]] -- [[User:Drobbins]] write-up on the current state of ruby-kit in Funtoo with lots of technical details
* [https://www.ruby-lang.org/en/downloads/ Official Listing of Ruby Stable Releases]
* [https://guides.rubygems.org/rubygems-org-api/ RubyGems Official API Documentation]


{{ProjectFooter}}
{{ProjectFooter}}

Revision as of 07:14, July 6, 2022

   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: