From: Tom Hughes Date: Wed, 19 Feb 2025 22:17:42 +0000 (+0000) Subject: Add support for using fullstaq ruby X-Git-Url: https://git.openstreetmap.org./chef.git/commitdiff_plain/a9362182daa50ae5da8cc4c1993edca9355e7332?hp=--cc Add support for using fullstaq ruby --- a9362182daa50ae5da8cc4c1993edca9355e7332 diff --git a/cookbooks/apt/recipes/fullstaq-ruby.rb b/cookbooks/apt/recipes/fullstaq-ruby.rb new file mode 100644 index 000000000..d9dad7d37 --- /dev/null +++ b/cookbooks/apt/recipes/fullstaq-ruby.rb @@ -0,0 +1,27 @@ +# +# Cookbook:: apt +# Recipe:: fullstaq-ruby +# +# Copyright:: 2025, Tom Hughes +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +include_recipe "apt" + +apt_repository "fullstaq-ruby" do + uri "https://apt.fullstaqruby.org" + distribution "#{node[:platform]}-#{node[:platform_version]}" + components ["main"] + key "https://raw.githubusercontent.com/fullstaq-ruby/server-edition/main/fullstaq-ruby.asc" +end diff --git a/cookbooks/ruby/attributes/default.rb b/cookbooks/ruby/attributes/default.rb index 69e52acc9..5bda1dd35 100644 --- a/cookbooks/ruby/attributes/default.rb +++ b/cookbooks/ruby/attributes/default.rb @@ -1,10 +1,23 @@ -default[:ruby][:version] = if platform?("debian") - "3.1" - elsif node[:lsb][:release].to_f < 22.04 - "2.7" - else - "3.0" - end -default[:ruby][:interpreter] = "/usr/bin/ruby#{node[:ruby][:version]}" -default[:ruby][:gem] = "/usr/bin/gem#{node[:ruby][:version]}" -default[:ruby][:bundle] = "/usr/bin/bundle#{node[:ruby][:version]}" +default[:ruby][:fullstaq] = false + +if node[:ruby][:fullstaq] + + default[:ruby][:version] = "3.4" + default[:ruby][:interpreter] = "/usr/lib/fullstaq-ruby/versions/#{node[:ruby][:version]}-jemalloc/bin/ruby" + default[:ruby][:gem] = "/usr/lib/fullstaq-ruby/versions/#{node[:ruby][:version]}-jemalloc/bin/gem" + default[:ruby][:bundle] = "/usr/lib/fullstaq-ruby/versions/#{node[:ruby][:version]}-jemalloc/bin/bundle" + +else + + default[:ruby][:version] = if platform?("debian") + "3.1" + elsif node[:lsb][:release].to_f < 22.04 + "2.7" + else + "3.0" + end + default[:ruby][:interpreter] = "/usr/bin/ruby#{node[:ruby][:version]}" + default[:ruby][:gem] = "/usr/bin/gem#{node[:ruby][:version]}" + default[:ruby][:bundle] = "/usr/bin/bundle#{node[:ruby][:version]}" + +end diff --git a/cookbooks/ruby/metadata.rb b/cookbooks/ruby/metadata.rb index d8f2eac0e..6c014bdfe 100644 --- a/cookbooks/ruby/metadata.rb +++ b/cookbooks/ruby/metadata.rb @@ -6,3 +6,4 @@ description "Installs and configures ruby" version "1.0.0" supports "ubuntu" +depends "apt" diff --git a/cookbooks/ruby/recipes/default.rb b/cookbooks/ruby/recipes/default.rb index a2833aefa..624b39485 100644 --- a/cookbooks/ruby/recipes/default.rb +++ b/cookbooks/ruby/recipes/default.rb @@ -19,23 +19,44 @@ ruby_version = node[:ruby][:version] -package %W[ - ruby - ruby#{ruby_version} - ruby - ruby#{ruby_version}-dev -] - -gem_package "bundler#{ruby_version}-1" do - package_name "bundler" - version "~> 1.17.3" - gem_binary node[:ruby][:gem] - options "--format-executable" -end +if node[:ruby][:fullstaq] + + include_recipe "apt::fullstaq-ruby" + + package %W[ + fullstaq-ruby-common + fullstaq-ruby-#{ruby_version}-jemalloc + ] + + %w[bundle bundler erb gem irb racc rake rbs rdbg rdoc ri ruby syntax_suggest typeproc].each do |command| + link "/usr/local/bin/#{command}" do + to "/usr/lib/fullstaq-ruby/versions/#{ruby_version}-jemalloc/bin/#{command}" + owner "root" + group "root" + end + end + +else + + package %W[ + ruby + ruby#{ruby_version} + ruby-dev + ruby#{ruby_version}-dev + ] + + gem_package "bundler#{ruby_version}-1" do + package_name "bundler" + version "~> 1.17.3" + gem_binary node[:ruby][:gem] + options "--format-executable" + end + + gem_package "bundler#{ruby_version}-2" do + package_name "bundler" + version "~> 2.3.16" + gem_binary node[:ruby][:gem] + options "--format-executable" + end -gem_package "bundler#{ruby_version}-2" do - package_name "bundler" - version "~> 2.3.16" - gem_binary node[:ruby][:gem] - options "--format-executable" end