What are Convenient Service's Ruby requirements?

  • Minimal: Ruby 2.7.

  • Recommended: Ruby 3+.

  • Ruby 2.7 has known *args/**kwargs separation issues that Convenient Service works around internally.

  • Service-aware enumerables only define compact, chain, inject, and include? on Ruby 3.1+. Calling them on a service-aware enumerable under Ruby 2.7 or 3.0 raises NoMethodError.

    class Service
      include ConvenientService::Standard::Config
    
      def result
        service_aware_enumerable([0, 1, false, true, nil])
          .compact
          .result
      end
    end
    
    Service.result.data[:values]
    # => [0, 1, false, true] on Ruby 3.1+, NoMethodError otherwise
  • JRuby 9.4 and 10.0 are fully supported - all specs pass in CI; 10.1 is not tested yet.

  • TruffleRuby does not work - too many specs currently fail, so 25.0 only runs in CI experimentally (allowed to fail).

Sources