]> git.openstreetmap.org Git - chef.git/commitdiff
Add support for using fullstaq ruby
authorTom Hughes <tom@compton.nu>
Wed, 19 Feb 2025 22:17:42 +0000 (22:17 +0000)
committerTom Hughes <tom@compton.nu>
Fri, 21 Feb 2025 10:09:24 +0000 (10:09 +0000)
cookbooks/apt/recipes/fullstaq-ruby.rb [new file with mode: 0644]
cookbooks/ruby/attributes/default.rb
cookbooks/ruby/metadata.rb
cookbooks/ruby/recipes/default.rb

diff --git a/cookbooks/apt/recipes/fullstaq-ruby.rb b/cookbooks/apt/recipes/fullstaq-ruby.rb
new file mode 100644 (file)
index 0000000..d9dad7d
--- /dev/null
@@ -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
index 69e52acc9c6ad1658c0916e41f81624d96393d1a..5bda1dd356e52720a01e25649125f75f3e06816a 100644 (file)
@@ -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
index d8f2eac0edf453d840c89c85c86031d21200ffef..6c014bdfe7beaf23759c7b75edf7c3541abe3b41 100644 (file)
@@ -6,3 +6,4 @@ description       "Installs and configures ruby"
 
 version           "1.0.0"
 supports          "ubuntu"
+depends           "apt"
index a2833aefaf5e644d9be698acebc95f0f1cea0cdf..624b39485dbb833b27039e5ec89e6ecbba47fa2f 100644 (file)
 
 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