Giter Club home page Giter Club logo

cimg-ruby's Introduction

CircleCI Logo Docker Logo Ruby Logo

CircleCI Convenience Images => Ruby

A Continuous Integration focused Ruby Docker image built to run on CircleCI

CircleCI Build Status Software License Docker Pulls CircleCI Community Repository

This image is designed to supercede the legacy CircleCI Ruby image, circleci/ruby.

cimg/ruby is a Docker image created by CircleCI with continuous integration builds in mind. Each tag contains a complete Ruby version, the gem command, Bundler, and any binaries and tools that are required for builds to complete successfully in a CircleCI environment.

Support Policy

The CircleCI Docker Convenience Image support policy can be found on the CircleCI docs site. This policy outlines the release, update, and deprecation policy for CircleCI Docker Convenience Images.

Table of Contents

Getting Started

This image can be used with the CircleCI docker executor. For example:

jobs:
  build:
    docker:
      - image: cimg/ruby:3.2.2
    steps:
      - checkout
      - run: ruby --version

In the above example, the CircleCI Ruby Docker image is used for the primary container. More specifically, the tag 3.2.2 is used meaning the version of Ruby will be Ruby v3.2.2. You can now use Ruby within the steps for this job.

How This Image Works

This image contains the Ruby programming language. This includes the gem command as well as Bundler pre-installed.

Variants

Variant images typically contain the same base software, but with a few additional modifications.

Node.js

The Node.js variant is the same Ruby image but with Node.js also installed. The Node.js variant can be used by appending -node to the end of an existing cimg/ruby tag.

jobs:
  build:
    docker:
      - image: cimg/ruby:3.2-node
    steps:
      - checkout
      - run: ruby --version
      - run: node --version

Browsers

The browsers variant is the same Ruby image but with Node.js, Java, Selenium, and browser dependencies pre-installed via apt. The browsers variant can be used by appending -browser to the end of an existing cimg/ruby tag. The browsers variant is designed to work in conjunction with the CircleCI Browser Tools orb. You can use the orb to install a version of Google Chrome and/or Firefox into your build. The image contains all of the supporting tools needed to use both the browser and its driver.

orbs:
  browser-tools: circleci/[email protected]
jobs:
  build:
    docker:
      - image: cimg/ruby:3.2-browsers
    steps:
      - browser-tools/install-browser-tools
      - checkout
      - run: |
          ruby --version
          node --version
          java --version
          google-chrome --version

Tagging Scheme

This image has the following tagging scheme:

cimg/ruby:<ruby-version>[-variant]

<ruby-version> - The version of Ruby to use. This can be a full SemVer point release (such as 3.2.0) or just the minor release (such as 3.2). If you use the minor release tag, it will automatically point to future patch updates as they are released. For example, the tag 3.2 points to Ruby v3.2.0 now, but when the next release comes out, it will point to Ruby v3.2.1.

[-variant] - Variant tags, if available, can optionally be used. For example, the Node.js variant can be used like this: cimg/ruby:3.2.0-node.

Development

Images can be built and run locally with this repository. This has the following requirements:

  • local machine of Linux (Ubuntu tested) or macOS
  • modern version of Bash (v4+)
  • modern version of Docker Engine (v19.03+)

Cloning For Community Users (no write access to this repository)

Fork this repository on GitHub. When you get your clone URL, you'll want to add --recurse-submodules to the clone command in order to populate the Git submodule contained in this repo. It would look something like this:

git clone --recurse-submodules <my-clone-url>

If you missed this step and already cloned, you can just run git submodule update --recursive to populate the submodule. Then you can optionally add this repo as an upstream to your own:

git remote add upstream https://github.com/CircleCI-Public/cimg-ruby.git

Cloning For Maintainers ( you have write access to this repository)

Clone the project with the following command so that you populate the submodule:

git clone --recurse-submodules [email protected]:CircleCI-Public/cimg-ruby.git

Generating Dockerfiles

Dockerfiles can be generated for a specific Ruby version using the gen-dockerfiles.sh script. For example, to generate the Dockerfile for Ruby v3.2.0, you would run the following from the root of the repo:

./shared/gen-dockerfiles.sh 3.2.0

The generated Dockerfile will be located at ./3.2/Dockefile. To build this image locally and try it out, you can run the following:

cd 3.2/
docker build -t test/ruby:3.2.0 .
docker run -it test/ruby:3.2.0 bash

Building the Dockerfiles

To build the Docker images locally as this repository does, you'll want to run the build-images.sh script:

./build-images.sh

This would need to be run after generating the Dockerfiles first. When releasing proper images for CircleCI, this script is run from a CircleCI pipeline and not locally.

Publishing Official Images (for Maintainers only)

The individual scripts (above) can be used to create the correct files for an image, and then added to a new git branch, committed, etc. A release script is included to make this process easier. To make a proper release for this image, let's use the fake Ruby version of v9.99, you would run the following from the repo root:

./shared/release.sh 9.99

This will automatically create a new Git branch, generate the Dockerfile(s), stage the changes, commit them, and push them to GitHub. The commit message will end with the string [release]. This string is used by CircleCI to know when to push images to Docker Hub. All that would need to be done after that is:

  • wait for build to pass on CircleCI
  • review the PR
  • merge the PR

The main branch build will then publish a release.

Incorporating Changes

How changes are incorporated into this image depends on where they come from.

build scripts - Changes within the ./shared submodule happen in its own repository. For those changes to affect this image, the submodule needs to be updated. Typically like this:

cd shared
git pull
cd ..
git add shared
git commit -m "Updating submodule for foo."

parent image - By design, when changes happen to a parent image, they don't appear in existing Ruby images. This is to aid in "determinism" and prevent breaking customer builds. New Ruby images/versions though will automatically pick up the changes.

If you really want to publish changes from a parent image into the Ruby image, you have to build a specific image version as if it was a new image. This will create a new Dockerfile and once published, a new image.

Ruby specific changes - Editing the Dockerfile.template file in this repo is how to modify the Ruby image specifically. Don't forget that to see any of these changes locally, the gen-dockerfiles.sh script will need to be run again (see above).

Contributing

We encourage issues and pull requests against this repository.

Please check out our contributing guide which outlines best practices for contributions and what you can expect from the images team at CircleCI.

Additional Resources

CircleCI Docs - The official CircleCI Documentation website. CircleCI Configuration Reference - From CircleCI Docs, the configuration reference page is one of the most useful pages we have. It will list all of the keys and values supported in .circleci/config.yml. Docker Docs - For simple projects this won't be needed but if you want to dive deeper into learning Docker, this is a great resource.

License

This repository is licensed under the MIT license. The license can be found here.

cimg-ruby's People

Contributors

akinomaeni avatar alopezz avatar bytesguy avatar cpe-image-bot avatar dsayling avatar enomotodev avatar felicianotech avatar harlemsquirrel avatar jalexchen avatar joshhsoj1902 avatar kevinjqiu avatar ksylvest avatar mkusaka avatar nishidayuya avatar ryanbourdais avatar schinery avatar syguer avatar tnir avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cimg-ruby's Issues

Can we get a `cimg/ruby:2.6.2-node` image published?

We are having issues with the node orb so I am trying to get away from it but sadly saw that the version of ruby we needed doesn't have an image

Build-agent version 1.0.34446-05905e76 (2020-06-16T11:27:30+0000)
Docker Engine Version: 18.09.6
Kernel Version: Linux 3567c34e48a6 4.15.0-1067-aws #71-Ubuntu SMP Thu Apr 30 13:51:43 UTC 2020 x86_64 Linux
Starting container cimg/ruby:2.6.2-node
  image cache not found on this host, downloading cimg/ruby:2.6.2-node

Error response from daemon: manifest for cimg/ruby:2.6.2-node not found

Ruby Version 2.7.8

Ruby 2.7.8 was just released, can we have the docker image updated for it?

Bug Report: LoadError: cannot load such file -- 3.0/ffi_c

Note: We also welcome PRs to fix bugs! This helps us take action faster where a bug has been identified!

For our official CircleCI Docker Convenience Image support policy, please see CircleCI docs.

This policy outlines the release, update, and deprecation policy for CircleCI Docker Convenience Images.


Describe the bug
Can't run a rails application because it does not find libffi. Seems like PR #136 updated the base Ubuntu version from 20.04 to 20.10 and I think this caused what is better explained here https://askubuntu.com/questions/1286772/libffi-so-7-cannot-open-shared-object-file-no-such-file-or-directory

To Reproduce
Please provide steps to reproduce the behavior, such as a sample job or config file.

Expected behavior
A clear and concise description of what you expected to happen.

Workarounds
Are there any current workarounds for this bug that can be used currently?

Screenshots and Build Links
If possible, add screenshots and links to jobs to help explain your problem.

Additional context
Add any other context about the problem here.

Bug Report: curb(1.0.1) can't be installed in ruby:2.7.4-node

image: cimg/ruby:2.7.4-node
error: curb(1.0.1) gem can't be installed with error message:

Can't find libcurl or curl/curl.h (RuntimeError)

Make sure development libs (ie libcurl4-openssl-dev) are installed on the
system.

  Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
  options to extconf.

Then i tried to install libcurl4-openssl-dev as suggested, but it also can't be installed with error message:

Unable to locate package libcurl4-openssl-dev

So i've got no way.

Missing psych.so for the "yaml" gem.

When I use cimg/ruby:2.7-browsers I run into this error:

Gemfile.lock is bundled with bundler version 2.2.15
Installing bundler 2.2.15
Fetching bundler-2.2.15.gem
Successfully installed bundler-2.2.15
1 gem installed
The following gems are missing
 * racc (1.5.2)
 * nio4r (2.5.7)
 * websocket-driver (0.7.5)
 * bcrypt (3.1.16)
 * bindex (0.8.1)
 * msgpack (1.4.2)
 * bootsnap (1.7.5)
 * rbtree (0.4.4)
 * byebug (11.1.3)
 * commonmarker (0.22.0)
 * psych (3.3.2)
 * ffi (1.15.3)
 * pg (1.2.3)
 * puma (4.3.8)
Install missing gems with `bundle install`
/usr/local/lib/ruby/2.7.0/yaml.rb:3: warning: It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
LoadError: libruby.so.2.7: cannot open shared object file: No such file or directory - /home/circleci/project/vendor/bundle/ruby/2.7.0/gems/psych-3.3.2/lib/psych.so
Traceback (most recent call last):
	48: from /home/circleci/.rubygems/bin/bundle:23:in `<main>'
	47: from /home/circleci/.rubygems/bin/bundle:23:in `load'
	46: from /home/circleci/.rubygems/gems/bundler-2.2.15/exe/bundle:37:in `<top (required)>'
	45: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/friendly_errors.rb:130:in `with_friendly_errors'
	44: from /home/circleci/.rubygems/gems/bundler-2.2.15/exe/bundle:49:in `block in <top (required)>'
	43: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/cli.rb:24:in `start'
	42: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	41: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/cli.rb:30:in `dispatch'
	40: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	39: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	38: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	37: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/cli.rb:258:in `install'
	36: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/settings.rb:115:in `temporary'
	35: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/cli.rb:259:in `block in install'
	34: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/cli/install.rb:64:in `run'
	33: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/installer.rb:24:in `install'
	32: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/installer.rb:72:in `run'
	31: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/process_lock.rb:9:in `lock'
	30: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/process_lock.rb:9:in `open'
	29: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/process_lock.rb:12:in `block in lock'
	28: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/installer.rb:83:in `block in run'
	27: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/installer.rb:291:in `resolve_if_needed'
	26: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/definition.rb:173:in `resolve_remotely!'
	25: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/definition.rb:185:in `specs'
	24: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/spec_set.rb:82:in `materialize'
	23: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/spec_set.rb:82:in `map!'
	22: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/spec_set.rb:86:in `block in materialize'
	21: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/lazy_specification.rb:72:in `__materialize__'
	20: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/source/rubygems.rb:104:in `specs'
	19: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/source/rubygems.rb:406:in `remote_specs'
	18: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/index.rb:9:in `build'
	17: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/source/rubygems.rb:407:in `block in remote_specs'
	16: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/source/rubygems.rb:271:in `fetchers'
	15: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/source/rubygems.rb:271:in `map'
	14: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/source/rubygems.rb:273:in `block in fetchers'
	13: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/source/rubygems.rb:273:in `new'
	12: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/fetcher.rb:88:in `initialize'
	11: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/fetcher.rb:246:in `connection'
	10: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/rubygems_integration.rb:114:in `configuration'
	 9: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/rubygems_integration.rb:114:in `require_relative'
	 8: from /home/circleci/.rubygems/gems/bundler-2.2.15/lib/bundler/psyched_yaml.rb:12:in `<top (required)>'
	 7: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
	 6: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
	 5: from /usr/local/lib/ruby/2.7.0/yaml.rb:4:in `<top (required)>'
	 4: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
	 3: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
	 2: from /home/circleci/project/vendor/bundle/ruby/2.7.0/gems/psych-3.3.2/lib/psych.rb:13:in `<top (required)>'
	 1: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
/usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require': libruby.so.2.7: cannot open shared object file: No such file or directory - /home/circleci/project/vendor/bundle/ruby/2.7.0/gems/psych-3.3.2/lib/psych.so (LoadError)

Exited with code exit status 1

Image doesn't have libpq installed anymore?

Hey!

I tried switching from circleci/ruby:2.6-node to cimg/ruby:2.6-node, but now my build fail because libpq is not installed by default anymore? Is this supposed to be the case or is it an oversight? This is a rails app with Postgresql at the database, and the pg gem fails to install. Log excerpt from the install:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/home/circleci/project/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/ext
/usr/local/bin/ruby -I /usr/local/lib/ruby/site_ruby/2.6.0 -r
./siteconf20200406-136-3fc85q.rb extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/bin/$(RUBY_BASE_NAME)
	--with-pg
	--without-pg
	--enable-windows-cross
	--disable-windows-cross
	--with-pg-config
	--without-pg-config
	--with-pg_config
	--without-pg_config
	--with-pg-dir
	--without-pg-dir
	--with-pg-include
	--without-pg-include=${pg-dir}/include
	--with-pg-lib
	--without-pg-lib=${pg-dir}/lib

To see why this extension failed to compile, please check the mkmf.log which can
be found here:

/home/circleci/project/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0-static/pg-1.2.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in
/home/circleci/project/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3 for inspection.
Results logged to
/home/circleci/project/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0-static/pg-1.2.3/gem_make.out

An error occurred while installing pg (1.2.3), and Bundler cannot
continue.
Make sure that `gem install pg -v '1.2.3' --source 'https://rubygems.org/'`
succeeds before bundling.

In Gemfile:
  pg

Exited with code exit status 5

Feature Request: Test Basic Gem Installation on Images

Describe the Feature Request
Currently it appears no tests run on any images to ensure gems install properly / ruby is configured. Suggest having a basic test run to install a list of common gems ensuring ruby is properly installed gem install bcrypt / gem install rails / gem install pg (fairly common gems).

Is your feature request related to a particular problem?
The 3.3 images were published without jemalloc installed causing issues in installing all gems (see: #156).

How will this feature request benefit CircleCI jobs using this image?
This'll ensure the images work when published.

Describe the solution you would like to see
Run the tests on building the images.

Describe alternatives you have considered
N/A

Feature Request: Add Ruby 3.3.0-preview1

Describe the Feature Request
Add ruby 3.3.0-preview1 to docker images.

Is your feature request related to a particular problem?
just keeping up to date with latest rubies

How will this feature request benefit CircleCI jobs using this image?
Will speed up CI and job queues for customers that are using 3.3.0-preview1. Even though this is a 'preview' release, it primarily has performance benefits for YJIT, and has very few language changes. Heroku already supports this for their own platform, so I imagine many companies are testing against this and/or running with this version in production now.

Describe the solution you would like to see
I would like to see docker images ready to go with ruby 3.30-preview1

Describe alternatives you have considered
installing manually

Build ruby with `--enable-shared` flag

We tried to migrate to the new images from the legacy ones, but this ruby image doesn't work as a drop-in replacement for us right now, due to what might be an implementation detail.

Our process includes installing dependencies (and running tests) under the CircleCI Ruby image, and then caching those dependencies so that they're used (via bundle install --local) in a separate dependent job that builds our production docker image.

The official Ruby image has Ruby built with the --enable-shared flag (and I believe the legacy CircleCI images did as well), while the new CircleCI images are not. This flag has the effect of having native extensions be installed on differently named folders, (see here and here), which causes bundler to not pick up native extensions built during our previous stage.

We're still analyzing our options to work around this problem (including adjustments to our overall workflow, of course), but I would love to know if there's any way we could have images with Ruby compiled with this flag (without maintaining them ourselves). Any other suggestion around the issue is also appreciated.

Unable to bundle install project that relies on libruby.so.2.7

After replacing the ruby image used in a repository's circle ci config from circleci/ruby:2.7 to cimg/ruby:2.7. I saw errors during my bundle install step. I was prompted by circle ci via email to make this migration because legacy images would not be supported after Dec. 31, 2021. Would it be possible to include this in the image? If not what would be the best steps to include to remedy this?

circleci/config.py

 [...REDACTED FOR BREVITY...] 
  static_analysis:
    executor: rails
    steps:
      - cit/bundler-preamble:
          bundler-version: 2.0.2
          cache-breaker: "1"
 [...REDACTED FOR BREVITY...] 

Backtrace from the Bundle Install step in static_analysis

Fetching bundler-2.0.2.gem
Successfully installed bundler-2.0.2
1 gem installed
The following gems are missing
 [...REDACTED FOR BREVITY...] 
Install missing gems with `bundle install`
/usr/local/lib/ruby/2.7.0/yaml.rb:3: warning: It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
LoadError: libruby.so.2.7: cannot open shared object file: No such file or directory - /home/circleci/project/vendor/bundle/ruby/2.7.0/gems/psych-3.3.1/lib/psych.so
Traceback (most recent call last):
	45: from /home/circleci/.rubygems/bin/bundle:23:in `<main>'
	44: from /home/circleci/.rubygems/bin/bundle:23:in `load'
	43: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.22/exe/bundle:37:in `<top (required)>'
	42: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/friendly_errors.rb:128:in `with_friendly_errors'
	41: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.22/exe/bundle:49:in `block in <top (required)>'
	40: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:24:in `start'
	39: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	38: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:30:in `dispatch'
	37: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	36: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	35: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	34: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:258:in `install'
	33: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/settings.rb:131:in `temporary'
	32: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:259:in `block in install'
	31: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/cli/install.rb:60:in `run'
	30: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/installer.rb:24:in `install'
	29: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/installer.rb:72:in `run'
	28: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/process_lock.rb:9:in `lock'
	27: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/process_lock.rb:9:in `open'
	26: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/process_lock.rb:12:in `block in lock'
	25: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/installer.rb:84:in `block in run'
	24: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/installer.rb:247:in `ensure_specs_are_compatible!'
	23: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/definition.rb:190:in `specs'
	22: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/spec_set.rb:78:in `materialize'
	21: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/spec_set.rb:78:in `each'
	20: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/spec_set.rb:83:in `block in materialize'
	19: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:280:in `double_check_for'
	18: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:313:in `dependency_api_available?'
	17: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:402:in `api_fetchers'
	16: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:272:in `fetchers'
	15: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:272:in `map'
	14: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:274:in `block in fetchers'
	13: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:274:in `new'
	12: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/fetcher.rb:89:in `initialize'
	11: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/fetcher.rb:247:in `connection'
	10: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/rubygems_integration.rb:114:in `configuration'
	 9: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/rubygems_integration.rb:114:in `require_relative'
	 8: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/psyched_yaml.rb:12:in `<top (required)>'
	 7: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
	 6: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
	 5: from /usr/local/lib/ruby/2.7.0/yaml.rb:4:in `<top (required)>'
	 4: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
	 3: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
	 2: from /home/circleci/project/vendor/bundle/ruby/2.7.0/gems/psych-3.3.1/lib/psych.rb:13:in `<top (required)>'
	 1: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
/usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require': libruby.so.2.7: cannot open shared object file: No such file or directory - /home/circleci/project/vendor/bundle/ruby/2.7.0/gems/psych-3.3.1/lib/psych.so (LoadError)

Exited with code exit status 1
CircleCI received exit code 1

ruby with node 16 lts

Node js version 14 is old lts version. We want to migrate to new node but have to build image manually
It would be great to have pre-built ruby with new node lts 16

pkg-config is not installed.

Hello.

Today I try to migrate to this new generation image cimg/ruby:2.5.8-browsers from circleci/ruby:2.5.8-node-browsers then encountered rmagick native extension build error while bundle install.
Error log describe pkg-config is not installed.

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/home/circleci/****-server/vendor/bundle/ruby/2.5.0/gems/rmagick-2.16.0/ext/RMagick
/usr/local/bin/ruby -I /usr/local/lib/ruby/site_ruby/2.5.0 -r
./siteconf20201111-3277-iz0yzn.rb extconf.rb
checking for gcc... yes
checking for Magick-config... no
checking for pkg-config... no
Can't install RMagick 2.16.0. Can't find Magick-config or pkg-config in
/home/circleci/.rubygems/bin:/gems/bin:/home/circleci/bin:/home/circleci/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

yes i know, adding sudo apt-get install pkg-config step will resolve this error.

This issue is just for question:
"pkg-config package is optional for this docker image, is this intended?"

Node LTS not installed in current version 3.2.2

Hi,

Current Node LTS is 18.16.0 but installed version in ruby image 3.2.2-node is 18.15.0.

From what I read here, node LTS is used automatically when building the ruby image.

How do you usually manage this? We wait for the next ruby version or is it possible to rebuild an existing ruby image in order to benefit from the latest versions of the other softwares (node in my case)?

The issue I am facing is that I want to update node in our Ruby app, but I would like the CI to use the same node version as the deployed app, to avoid a possible situation where the tests are green on CircleCI but would break in production because of the node bump.

Thanks :)

cimg/ruby:2.7.5-browsers - Error: Can't find Python executable "python"

I am trying to update my app to use Ruby 2.7.5. Using the new cimg/ruby:2.7.5-browsers image gives me the following error when running in circleci and trying to yarn install:

[4/4] Building fresh packages...
error /home/circleci/project/node_modules/node-sass: Command failed.
Exit code: 1
Command: node scripts/build.js
Arguments: 
Directory: /home/circleci/project/node_modules/node-sass
Output:
Building: /usr/local/bin/node /home/circleci/project/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
gyp info it worked if it ends with ok
gyp verb cli [
gyp verb cli   '/usr/local/bin/node',
gyp verb cli   '/home/circleci/project/node_modules/node-gyp/bin/node-gyp.js',
gyp verb cli   'rebuild',
gyp verb cli   '--verbose',
gyp verb cli   '--libsass_ext=',
gyp verb cli   '--libsass_cflags=',
gyp verb cli   '--libsass_ldflags=',
gyp verb cli   '--libsass_library='
gyp verb cli ]
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb check python checking for Python executable "python2" in the PATH
gyp verb `which` failed Error: not found: python2
gyp verb `which` failed     at getNotFoundError (/home/circleci/project/node_modules/which/which.js:13:12)
gyp verb `which` failed     at F (/home/circleci/project/node_modules/which/which.js:68:19)
gyp verb `which` failed     at E (/home/circleci/project/node_modules/which/which.js:80:29)
gyp verb `which` failed     at /home/circleci/project/node_modules/which/which.js:89:16
gyp verb `which` failed     at /home/circleci/project/node_modules/isexe/index.js:42:5
gyp verb `which` failed     at /home/circleci/project/node_modules/isexe/mode.js:8:5
gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:198:21)
gyp verb `which` failed  python2 Error: not found: python2
gyp verb `which` failed     at getNotFoundError (/home/circleci/project/node_modules/which/which.js:13:12)
gyp verb `which` failed     at F (/home/circleci/project/node_modules/which/which.js:68:19)
gyp verb `which` failed     at E (/home/circleci/project/node_modules/which/which.js:80:29)
gyp verb `which` failed     at /home/circleci/project/node_modules/which/which.js:89:16
gyp verb `which` failed     at /home/circleci/project/node_modules/isexe/index.js:42:5
gyp verb `which` failed     at /home/circleci/project/node_modules/isexe/mode.js:8:5
gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:198:21) {
gyp verb `which` failed   code: 'ENOENT'
gyp verb `which` failed }
gyp verb check python checking for Python executable "python" in the PATH
gyp verb `which` failed Error: not found: python
gyp verb `which` failed     at getNotFoundError (/home/circleci/project/node_modules/which/which.js:13:12)
gyp verb `which` failed     at F (/home/circleci/project/node_modules/which/which.js:68:19)
gyp verb `which` failed     at E (/home/circleci/project/node_modules/which/which.js:80:29)
gyp verb `which` failed     at /home/circleci/project/node_modules/which/which.js:89:16
gyp verb `which` failed     at /home/circleci/project/node_modules/isexe/index.js:42:5
gyp verb `which` failed     at /home/circleci/project/node_modules/isexe/mode.js:8:5
gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:198:21)
gyp verb `which` failed  python Error: not found: python
gyp verb `which` failed     at getNotFoundError (/home/circleci/project/node_modules/which/which.js:13:12)
gyp verb `which` failed     at F (/home/circleci/project/node_modules/which/which.js:68:19)
gyp verb `which` failed     at E (/home/circleci/project/node_modules/which/which.js:80:29)
gyp verb `which` failed     at /home/circleci/project/node_modules/which/which.js:89:16
gyp verb `which` failed     at /home/circleci/project/node_modules/isexe/index.js:42:5
gyp verb `which` failed     at /home/circleci/project/node_modules/isexe/mode.js:8:5
gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:198:21) {
gyp verb `which` failed   code: 'ENOENT'
gyp verb `which` failed }
gyp ERR! configure error 
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at PythonFinder.failNoPython (/home/circleci/project/node_modules/node-gyp/lib/configure.js:484:19)
gyp ERR! stack     at PythonFinder.<anonymous> (/home/circleci/project/node_modules/node-gyp/lib/configure.js:406:16)
gyp ERR! stack     at F (/home/circleci/project/node_modules/which/which.js:68:16)
gyp ERR! stack     at E (/home/circleci/project/node_modules/which/which.js:80:29)
gyp ERR! stack     at /home/circleci/project/node_modules/which/which.js:89:16
gyp ERR! stack     at /home/circleci/project/node_modules/isexe/index.js:42:5
gyp ERR! stack     at /home/circleci/project/node_modules/isexe/mode.js:8:5
gyp ERR! stack     at FSReqCallback.oncomplete (node:fs:198:21)
gyp ERR! System Linux 5.11.0-1022-aws
gyp ERR! command "/usr/local/bin/node" "/home/circleci/project/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /home/circleci/project/node_modules/node-sass
gyp ERR! node -v v16.13.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok 
Build failed with error code: 1
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Exited with code exit status 1
CircleCI received exit code 1

cimg/ruby:2.7.5-node also fails with the same error. This works with cimg/ruby:2.7.4-browsers. Can 2.7.5 be fixed?

Thank you.

Install tzdata

Related to #35, this is the next bump I hit when trying to switch from circleci/ruby:2.6-node to cimg/ruby:2.6-node. The new image doesn't have tzdata installed by default. Since all rails app use it, I would say it's a good candidate for inclusion.

Support Ruby shell

description: >
Test ruby
steps:

  • run:
    shell: /usr/local/bin/ruby
    command: |
    puts "hello"
    and the error we're receiving is something like:

/usr/local/bin/ruby: No such file or directory -- puts 'hello' (LoadError)

Ruby with ImageMagick

It looks like the deprecated image circleci/ruby comes packaged with ImageMagick, while the convenience images do not.

Are there plans on including library with the convenience image?

Our use case is for our Rails application which makes use of Rail's ActiveStorage. The dependency of ImageMagick comes from one of the requirements to be able to use the image analysis and transformation functionality of the library. Namely, ActiveStorage's dependency on image_processing which uses either ImageMagick or GraphicsMagick.

cimg/ruby:3.1.3 file: command not found

First of all, I want to say thank you for your work

After upgrading from cimg/ruby:3.1.2 to cimg/ruby:3.1.3, I noticed that the file package no longer exists. I also created a repository to prove it (here are the build results).

I know I can install it myself, but it's a bit strange that it's gone.

Thanks one more time

Checkout error with ruby 3.2.1-browsers

Hello, we are facing issues with the new Ruby build released yesterday.

Here's an example of the failure:

https://app.circleci.com/pipelines/github/solidusio/solidus_starter_frontend/1841/workflows/2e2f78c2-56bd-4674-805d-536d299bf28c/jobs/6216

Spin Up Environment Output
Starting container cimg/ruby:3.2-browsers
cimg/ruby:3.2-browsers:
  using image cimg/ruby@sha256:7d832a7af59cbff465edfbfe0ed05a29de4808c84ce5cf1f0f5e2de2b424b258
  pull stats: Image was already available so the image was not pulled
  time to create container: 10ms
Warning: No authentication provided, using CircleCI credentials for pulls from Docker Hub.
  image is cached as cimg/ruby:3.2-browsers, but refreshing...
3.2-browsers: Pulling from cimg/ruby
Digest: sha256:7d832a7af59cbff465edfbfe0ed05a29de4808c84ce5cf1f0f5e2de2b424b258
Status: Image is up to date for cimg/ruby:3.2-browsers
Time to upload agent and config: 302.987646ms
Time to start containers: 328.100781ms

Here's another build using the same image, which succeeded instead:

https://app.circleci.com/pipelines/github/nebulab/solidus/843/workflows/4e61e6bb-ebfe-4cd5-9650-2047f4f20ec1/jobs/11697

Spin Up Environment Output
Starting container cimg/ruby:3.2-browsers
Warning: No authentication provided, using CircleCI credentials for pulls from Docker Hub.
  image cache not found on this host, downloading cimg/ruby:3.2-browsers
3.2-browsers: Pulling from cimg/ruby

Can it be an issue with caching?

Can't install the `patron` gem because `libcurl` is missing

I'm trying to switch to using the new cimg images but I'm having trouble with one app that depends on the patron gem. I can't install patron because its native extension fails with a message indicating that libcurl is missing.

Here's a config file that reproduces the error:

version: 2.1

jobs:
  test:
    docker:
      - image: cimg/ruby:2.6.6
    steps:
      - run: gem install patron

workflows:
  test:
    jobs:
      - test

This is the error that I get:

cimg/ruby (Failure)
$ circleci local execute --job test
Docker image digest: sha256:e8c08f3dc363f9b90915266df7220b9d4c1413fd66aed162a854da5ae1ae88c4
====>> Spin up Environment
Build-agent version 1.0.17801-1d37c01b (2019-10-15T22:27:37+0000)
Docker Engine Version: 20.10.5
Kernel Version: Linux 39d3af979711 5.10.25-linuxkit #1 SMP Tue Mar 23 09:27:39 UTC 2021 x86_64 Linux
Starting container cimg/ruby:2.6.6
  using image cimg/ruby@sha256:56a330fcccc76fd8bc64c9e56364e21e4daad555dccb21a9c82ece49d9f499e6

Using build environment variables
  BASH_ENV=/tmp/.bash_env-localbuild-1620857560
  CI=true
  CIRCLECI=true
  CIRCLE_BRANCH=
  CIRCLE_BUILD_NUM=
  CIRCLE_JOB=test
  CIRCLE_NODE_INDEX=0
  CIRCLE_NODE_TOTAL=1
  CIRCLE_REPOSITORY_URL=
  CIRCLE_SHA1=
  CIRCLE_SHELL_ENV=/tmp/.bash_env-localbuild-1620857560
  CIRCLE_WORKING_DIRECTORY=~/project


The redacted variables listed above will be masked in run step output

====>> gem install patron
  #!/bin/bash -eo pipefail
gem install patron
Fetching patron-0.13.3.gem
Building native extensions. This could take a while...
ERROR:  Error installing patron:
        ERROR: Failed to build gem native extension.

    current directory: /home/circleci/.rubygems/gems/patron-0.13.3/ext/patron
/usr/local/bin/ruby -I /usr/local/lib/ruby/site_ruby/2.6.0 -r ./siteconf20210512-28-1o6ru4q.rb extconf.rb
checking for curl-config... no
checking for -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=/usr/local/bin/$(RUBY_BASE_NAME)
        --with-curl-dir
        --without-curl-dir
        --with-curl-include
        --without-curl-include=${curl-dir}/include
        --with-curl-lib
        --without-curl-lib=${curl-dir}/lib
        --with-curl-config
        --without-curl-config
        --with-curllib
        --without-curllib
extconf.rb:10:in `<main>':   Can't find libcurl or curl/curl.h (RuntimeError)

  Try passing --with-curl-config, --with-curl-dir, or --with-curl-lib and --with-curl-include
  options to extconf.

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /home/circleci/.rubygems/extensions/x86_64-linux/2.6.0-static/patron-0.13.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/circleci/.rubygems/gems/patron-0.13.3 for inspection.
Results logged to /home/circleci/.rubygems/extensions/x86_64-linux/2.6.0-static/patron-0.13.3/gem_make.out
Error: Exited with code 1
Step failed
Error: runner failed (exited with 101)
Task failed
Error: task failed

Whereas if I swap in the old ruby image...

6c6
<       - image: cimg/ruby:2.6.6
---
>       - image: circleci/ruby:2.6.6

...it succeeds:

circleci/ruby (Success)
$ circleci local execute --job test
Docker image digest: sha256:e8c08f3dc363f9b90915266df7220b9d4c1413fd66aed162a854da5ae1ae88c4
====>> Spin up Environment
Build-agent version 1.0.17801-1d37c01b (2019-10-15T22:27:37+0000)
Docker Engine Version: 20.10.5
Kernel Version: Linux 032b737e2e0e 5.10.25-linuxkit #1 SMP Tue Mar 23 09:27:39 UTC 2021 x86_64 Linux
Starting container circleci/ruby:2.6.6
  using image circleci/ruby@sha256:22fc4f6bebe013515d8b0b61195ce8f090e230a7c25e669adfe9ace049b5a98b

Using build environment variables
  BASH_ENV=/tmp/.bash_env-localbuild-1620857466
  CI=true
  CIRCLECI=true
  CIRCLE_BRANCH=
  CIRCLE_BUILD_NUM=
  CIRCLE_JOB=test
  CIRCLE_NODE_INDEX=0
  CIRCLE_NODE_TOTAL=1
  CIRCLE_REPOSITORY_URL=
  CIRCLE_SHA1=
  CIRCLE_SHELL_ENV=/tmp/.bash_env-localbuild-1620857466
  CIRCLE_WORKING_DIRECTORY=~/project


The redacted variables listed above will be masked in run step output

====>> gem install patron
  #!/bin/bash -eo pipefail
gem install patron
Fetching patron-0.13.3.gem
Building native extensions. This could take a while...

Thank you for installing Patron. On OSX, make sure you are using libCURL with OpenSSL.
SecureTransport-based builds might cause crashes in forking environment.

For more info see https://github.com/curl/curl/issues/788
Successfully installed patron-0.13.3
1 gem installed
Success!

FWIW I see the same error with cimg/ruby:3.0.1 too

Update base image to 2023.01 to include missing `file` command

The file command stopped being included in the image.

This is a continuation of #103, which was accidentally closed because I added a Fix: tag to a PR in https://github.com/CircleCI-Public/cimg-base.

See the issue for details.

CircleCI-Public/cimg-base#224 was recently merged in cimg-base, hopefully fixing the missing file command, in the base image.

Now we need this image to be updated to include that fix. Would it be possible to get the base image updated? I believe the image needs to be updated to 2023.01.

Thank in advance.

Ruby 3.2 with YJIT Enabled

Are there plans to offer an image for an yjit-enabled ruby 3.2? Or to enable yjit on the standard 3.2 image?

cimg/ruby:3.1.3 LoadError: cannot load such file -- 3.1/ffi_c

I'm updating an app from Ruby 3.1.2 to 3.1.3 and I'm getting the following error when running the CI tests using the new cimg/ruby image.

#!/bin/bash -eo pipefail
bundle exec rails db:setup
rails aborted!

LoadError: libffi.so.7: cannot open shared object file: No such file or directory - /home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/ffi-1.15.5/lib/ffi_c.so
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/ffi-1.15.5/lib/ffi.rb:5:in `rescue in <main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/ffi-1.15.5/lib/ffi.rb:2:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-2.4.0/lib/sassc/native.rb:3:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-2.4.0/lib/sassc.rb:31:in `require_relative'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-2.4.0/lib/sassc.rb:31:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-rails-2.1.2/lib/sassc/rails.rb:5:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-rails-2.1.2/lib/sassc-rails.rb:3:in `require_relative'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-rails-2.1.2/lib/sassc-rails.rb:3:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootstrap-5.2.3/lib/bootstrap/engine.rb:4:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootstrap-5.2.3/lib/bootstrap.rb:61:in `register_rails_engine'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootstrap-5.2.3/lib/bootstrap.rb:11:in `load!'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootstrap-5.2.3/lib/bootstrap.rb:75:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler/runtime.rb:60:in `block (2 levels) in require'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler/runtime.rb:55:in `each'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler/runtime.rb:55:in `block in require'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler/runtime.rb:44:in `each'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler/runtime.rb:44:in `require'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler.rb:186:in `require'
/home/circleci/my-app/config/application.rb:9:in `<main>'
/home/circleci/my-app/Rakefile:6:in `require_relative'
/home/circleci/my-app/Rakefile:6:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/commands/rake/rake_command.rb:20:in `block in perform'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/command.rb:51:in `invoke'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/commands.rb:18:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:4:in `<main>'

Caused by:
LoadError: cannot load such file -- 3.1/ffi_c
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/ffi-1.15.5/lib/ffi.rb:3:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-2.4.0/lib/sassc/native.rb:3:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-2.4.0/lib/sassc.rb:31:in `require_relative'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-2.4.0/lib/sassc.rb:31:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-rails-2.1.2/lib/sassc/rails.rb:5:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-rails-2.1.2/lib/sassc-rails.rb:3:in `require_relative'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/sassc-rails-2.1.2/lib/sassc-rails.rb:3:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootstrap-5.2.3/lib/bootstrap/engine.rb:4:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootstrap-5.2.3/lib/bootstrap.rb:61:in `register_rails_engine'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootstrap-5.2.3/lib/bootstrap.rb:11:in `load!'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootstrap-5.2.3/lib/bootstrap.rb:75:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler/runtime.rb:60:in `block (2 levels) in require'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler/runtime.rb:55:in `each'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler/runtime.rb:55:in `block in require'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler/runtime.rb:44:in `each'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler/runtime.rb:44:in `require'
/home/circleci/.rubygems/gems/bundler-2.3.26/lib/bundler.rb:186:in `require'
/home/circleci/my-app/config/application.rb:9:in `<main>'
/home/circleci/my-app/Rakefile:6:in `require_relative'
/home/circleci/my-app/Rakefile:6:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/commands/rake/rake_command.rb:20:in `block in perform'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/command.rb:51:in `invoke'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/commands.rb:18:in `<main>'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/circleci/my-app/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:4:in `<main>'
(See full trace by running task with --trace)

Exited with code exit status 1
CircleCI received exit code 1

This works as expected using the Ruby 3.1.2 image so is it the case that we’d need to install the ffi lib manually now?

I have to install libmysqlclient-dev

I have to install libmysqlclient-dev to install mysql2 gem

  • run: sudo apt-get update -qq && sudo apt-get install -y build-essential libmysqlclient-dev

and I didn't need this in circleci's ruby image

or is there any better solution?

Bug Report: google-chrome-stable: command not found

Describe the bug
The "Install Google Chrome" step fails with the following error:

Google Chrome 124.0.6367.78 is currently installed; replacing it
^@^@Preparing Chrome installation for Debian-based systems
https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_116.0.5845.96-1_amd64.deb:
2024-07-18 23:04:23 ERROR 404: Not Found.
/bin/bash: line 130: google-chrome-stable: command not found
Google Chrome v116.0.5845.96 (stable) failed to install.

Exited with code exit status 1

To Reproduce
Run a workflow, with:

image: cimg/ruby:3.2-browsers

Expected behavior
The step passes, and my feature specs run.

Workarounds
Custom install of Google Chrome without the browsers branch (nasty)

Screenshots and Build Links
Can't share full details of our build, but this is what I can:

Screenshot 2024-07-19 at 9 08 39 AM Screenshot 2024-07-19 at 9 09 21 AM

Additional context
It broke yesterday morning ~11AM +1000, would've hoped it was temporary blip and would either fix itself, or be fixed.

Can't find the ImageMagick library or one of the dependent libraries

Hi there,

We just migrate to the new syntax of the docker images and at first we got the same error as here #69 but resolved it by changing the cache version (or so it seems).

Now it fails because of missing image magick libraries:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/home/circleci/repo/vendor/bundle/ruby/2.7.0/gems/rmagick-4.2.2/ext/RMagick
/usr/local/bin/ruby -I /usr/local/lib/ruby/site_ruby/2.7.0 -r
./siteconf20211208-184-1lyu133.rb extconf.rb
checking for brew... no
checking for pacman... no
checking for Ruby version >= 2.3.0... yes
checking for pkg-config... yes
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found


ERROR: Can't install RMagick 4.2.2.
Can't find the ImageMagick library or one of the dependent libraries.
Check the mkmf.log file for more detailed information.


*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/bin/$(RUBY_BASE_NAME)

To see why this extension failed to compile, please check the mkmf.log which can
be found here:

/home/circleci/repo/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0-static/rmagick-4.2.2/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in
/home/circleci/repo/vendor/bundle/ruby/2.7.0/gems/rmagick-4.2.2 for inspection.
Results logged to
/home/circleci/repo/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0-static/rmagick-4.2.2/gem_make.out

  /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/ext/builder.rb:93:in `run'
/usr/local/lib/ruby/site_ruby/2.7.0/rubygems/ext/ext_conf_builder.rb:47:in
`block in build'
  /usr/local/lib/ruby/2.7.0/tempfile.rb:291:in `open'
/usr/local/lib/ruby/site_ruby/2.7.0/rubygems/ext/ext_conf_builder.rb:26:in
`build'
/usr/local/lib/ruby/site_ruby/2.7.0/rubygems/ext/builder.rb:159:in
`build_extension'
/usr/local/lib/ruby/site_ruby/2.7.0/rubygems/ext/builder.rb:193:in `block in
build_extensions'
  /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/ext/builder.rb:190:in `each'
/usr/local/lib/ruby/site_ruby/2.7.0/rubygems/ext/builder.rb:190:in
`build_extensions'
/usr/local/lib/ruby/site_ruby/2.7.0/rubygems/installer.rb:845:in
`build_extensions'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/rubygems_gem_installer.rb:66:in
`build_extensions'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/rubygems_gem_installer.rb:26:in
`install'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/source/rubygems.rb:192:in
`install'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/installer/gem_installer.rb:54:in
`install'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/installer/gem_installer.rb:16:in
`install_from_spec'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/installer/parallel_installer.rb:186:in
`do_install'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/installer/parallel_installer.rb:177:in
`block in worker_pool'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/worker.rb:62:in
`apply_func'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/worker.rb:57:in
`block in process_queue'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/worker.rb:54:in
`loop'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/worker.rb:54:in
`process_queue'
/home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/worker.rb:91:in
`block (2 levels) in create_threads'

An error occurred while installing rmagick (4.2.2), and Bundler cannot
continue.

In Gemfile:
  rmagick

Exited with code exit status 5
CircleCI received exit code 5

Should we install image magick as a dependency? Would it be cached?
Thank you.

Can't install the sqlite3 gem because libsqlite3-dev is not installed

When I was attempting to upgrade from circleci/ruby to cimg/ruby I was unable to run my Rails application which tests on sqlite3.

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/sqlite3-1.4.2/ext/sqlite3
/usr/local/bin/ruby -I /usr/local/lib/ruby/site_ruby/2.7.0 -r
./siteconf20210629-509-1habn66.rb extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'brew install sqlite3',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/bin/$(RUBY_BASE_NAME)
	--with-sqlcipher
	--without-sqlcipher
	--with-sqlite3-config
	--without-sqlite3-config
	--with-pkg-config
	--without-pkg-config
	--with-sqlcipher
	--without-sqlcipher
	--with-sqlite3-dir
	--without-sqlite3-dir
	--with-sqlite3-include
	--without-sqlite3-include=${sqlite3-dir}/include
	--with-sqlite3-lib
	--without-sqlite3-lib=${sqlite3-dir}/lib

To see why this extension failed to compile, please check the mkmf.log which can
be found here:

/home/circleci/project/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0-static/sqlite3-1.4.2/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/sqlite3-1.4.2 for
inspection.
Results logged to
/home/circleci/project/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0-static/sqlite3-1.4.2/gem_make.out

An error occurred while installing sqlite3 (1.4.2), and Bundler cannot
continue.
Make sure that `gem install sqlite3 -v '1.4.2' --source 'https://rubygems.org/'`
succeeds before bundling.

In Gemfile:
  sqlite3

Exited with code exit status 5

Unable to load rails database when using postgres and "db/structure.sql"

This tries to use psql, which is not in the docker image.

When I have a rails env that uses postgresql and is configured to use config.active_record.schema_format = :sql, then when I try to run rake db:setup (which calls db:schema:load) the following error occurs:

Created database 'h2_test'
rails aborted!
failed to execute:
psql --set ON_ERROR_STOP=1 --quiet --no-psqlrc --file /home/circleci/project/db/structure.sql h2_test

Please check the output above for any errors and make sure that `psql` is installed in your PATH and has proper permissions.

/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/postgresql_database_tasks.rb:111:in `run_cmd'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/postgresql_database_tasks.rb:86:in `structure_load'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/database_tasks.rb:314:in `structure_load'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/database_tasks.rb:328:in `load_schema'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/database_tasks.rb:435:in `block in load_schema_current'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/database_tasks.rb:506:in `block (2 levels) in each_current_configuration'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/database_tasks.rb:503:in `each'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/database_tasks.rb:503:in `block in each_current_configuration'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/database_tasks.rb:502:in `each'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/database_tasks.rb:502:in `each_current_configuration'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/tasks/database_tasks.rb:434:in `load_schema_current'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4/lib/active_record/railties/databases.rake:462:in `block (3 levels) in <main>'
/home/circleci/project/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task.rb:273:in `block in execute'

Provide 2.7.8 image

I realized just now that 2.7.8 was released yesterday however it would be great to have a 2.7.8-based image.

Thank you!

Bug Report: Unable to Install gems with native extensions (e.g. `bcrypt`, `pg`, etc) on cimg/ruby:3.3.0

Describe the bug
Unable to install gems with native extensions (e.g. bcrypt, pg, etc) on 3.3.0 images due to missing jemalloc headers. Attempting to the following error:

Fetching bcrypt-3.1.20.gem
Building native extensions. This could take a while...
ERROR:  Error installing bcrypt:
	ERROR: Failed to build gem native extension.

    current directory: /home/circleci/.rubygems/gems/bcrypt-3.1.20/ext/mri
/usr/local/bin/ruby extconf.rb
creating Makefile

current directory: /home/circleci/.rubygems/gems/bcrypt-3.1.20/ext/mri
make DESTDIR\= sitearchdir\=./.gem.20240102-13-gnagja sitelibdir\=./.gem.20240102-13-gnagja clean

current directory: /home/circleci/.rubygems/gems/bcrypt-3.1.20/ext/mri
make DESTDIR\= sitearchdir\=./.gem.20240102-13-gnagja sitelibdir\=./.gem.20240102-13-gnagja
compiling bcrypt_ext.c
In file included from /usr/local/include/ruby-3.3.0/ruby/internal/config.h:22,
                 from /usr/local/include/ruby-3.3.0/ruby/ruby.h:15,
                 from /usr/local/include/ruby-3.3.0/ruby.h:38,
                 from bcrypt_ext.c:1:
/usr/local/include/ruby-3.3.0/x86_64-linux/ruby/config.h:82:40: fatal error: jemalloc/jemalloc.h: No such file or directory
   82 | #define RUBY_ALTERNATIVE_MALLOC_HEADER <jemalloc/jemalloc.h>
      |                                        ^
compilation terminated.
make: *** [Makefile:248: bcrypt_ext.o] Error 1

make failed, exit code 2

Gem files will remain installed in /home/circleci/.rubygems/gems/bcrypt-3.1.20 for inspection.
Results logged to /home/circleci/.rubygems/extensions/x86_64-linux/3.3.0/bcrypt-3.1.20/gem_make.out

To Reproduce

docker run -it cimg/ruby:3.3.0 bash
gem install bcrypt

Expected behavior
Gems install.

Workarounds
This appears to be an issue with the Dockerfile.template including a flag not present in any other Dockerfile for usage of jemalloc. It appears this flag was introduced without building an image:

#139

docker image for the latest ruby release

It would be nice if there existes imaged like cimg/ruby:3 which would give me the most recent ruby image withing major release. Maybe there should exist cimg/ruby:lastest this is just the latest release.

And if you want to be super cool a nighlty release of master of ruby would be cool like cimg/ruby:master or dev or nightly

Feature Request: Ruby 3.3.3 enhancement

Describe the Feature Request

Ruby v3.3.3 just released.

Is your feature request related to a particular problem?

Since the version number is v3.3.3, the regular expression for this file may need to allow for a leading v.

if [[ $version =~ ^[0-9]+(\_[0-9]+)*$ || $version =~ ^[0-9]+(\.[0-9]+)*$ ]]; then

curl --silent https://github.com/ruby/ruby/tags.atom | ggrep -E '(title)' | tail -n +2 | sed -e 's/^[ \t]*//' | sed -e 's/<title>//' -e 's/<\/title>//' 
v3.3.3
3.3.2
3.1.6
3.4.0-preview1
3.3.1
3.2.4
3.1.5
3.0.7
3.2.3
3.3.0

Feature Request: Build Ruby with jemalloc

Describe the Feature Request
It's well-documented that jemalloc reduces the memory usage of ruby, and especially its tendency to leak memory.

Is your feature request related to a particular problem?
High memory usage by ruby runners

How will this feature request benefit CircleCI jobs using this image?
Ruby jobs will use less memory, and thus smaller instance size.

Describe the solution you would like to see
Build ruby with jemalloc support

Describe alternatives you have considered

  1. Installing & loading jemalloc in our images that are based on this base image
  2. Forking

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.