ffi 1.9.24

Ruby gem: ffi

Install This Version

Using gem command

gem install ffi -v 1.9.24

In your Gemfile

gem 'ffi', '~> 1.9.24'

Frequently Asked Questions

How do I lock the ffi gem at version 1.9.24?

To lock this gem at this specific version, update your Gemfile:

gem 'ffi', '1.9.24'

Then run:

bundle install

Note: This is an older version. Consider upgrading to the latest version (1.17.2) for the newest features and security fixes.

Docker Installation

Alpine Linux

FROM alpine:latest

# Install Ruby and build tools
RUN apk add --no-cache ruby ruby-dev build-base

# Install system dependencies
RUN apk add --no-cache \
    musl-dev

# Note: The following dependencies do not have package lists for alpine:
# - libffi (canonical: libffi)
# - libffi-8 (canonical: libffi-8)
# - libffi-alloc (canonical: libffi-alloc)
# - libffi_c (canonical: libffi_c)
# - libffi_convenience (canonical: libffi_convenience)
# - libshlwapi (canonical: libshlwapi)

# Install the gem
RUN gem install ffi -v 1.9.24

# Verify installation
RUN ruby -e "require 'ffi'; puts 'Successfully loaded ffi'"

Arch Linux

FROM archlinux:latest

# Install Ruby and build tools
RUN pacman -Sy --noconfirm ruby base-devel

# Install system dependencies
RUN pacman -Sy --noconfirm \
    glibc

# Note: The following dependencies do not have package lists for arch:
# - libffi (canonical: libffi)
# - libffi-8 (canonical: libffi-8)
# - libffi-alloc (canonical: libffi-alloc)
# - libffi_c (canonical: libffi_c)
# - libffi_convenience (canonical: libffi_convenience)
# - libshlwapi (canonical: libshlwapi)

# Install the gem
RUN gem install ffi -v 1.9.24

# Verify installation
RUN ruby -e "require 'ffi'; puts 'Successfully loaded ffi'"

Debian

FROM debian:bookworm-slim

# Install Ruby and build tools
RUN apt-get update -qq && apt-get install -y --no-install-recommends ruby ruby-dev build-essential

# Install system dependencies
RUN apt-get update -qq && \
    apt-get install -y --no-install-recommends     libc6-dev&& \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Note: The following dependencies do not have package lists for debian:
# - libffi (canonical: libffi)
# - libffi-8 (canonical: libffi-8)
# - libffi-alloc (canonical: libffi-alloc)
# - libffi_c (canonical: libffi_c)
# - libffi_convenience (canonical: libffi_convenience)
# - libshlwapi (canonical: libshlwapi)

# Install the gem
RUN gem install ffi -v 1.9.24

# Verify installation
RUN ruby -e "require 'ffi'; puts 'Successfully loaded ffi'"

Fedora

FROM fedora:latest

# Install Ruby and build tools
RUN dnf install -y ruby ruby-devel gcc gcc-c++ make

# Install system dependencies
RUN dnf install -y \
    glibc-devel && \
    dnf clean all

# Note: The following dependencies do not have package lists for fedora:
# - libffi (canonical: libffi)
# - libffi-8 (canonical: libffi-8)
# - libffi-alloc (canonical: libffi-alloc)
# - libffi_c (canonical: libffi_c)
# - libffi_convenience (canonical: libffi_convenience)
# - libshlwapi (canonical: libshlwapi)

# Install the gem
RUN gem install ffi -v 1.9.24

# Verify installation
RUN ruby -e "require 'ffi'; puts 'Successfully loaded ffi'"

Ubuntu

FROM ubuntu:24.04

# Install Ruby and build tools
RUN apt-get update -qq && apt-get install -y --no-install-recommends ruby ruby-dev build-essential

# Install system dependencies
RUN apt-get update -qq && \
    apt-get install -y --no-install-recommends     libc6-dev&& \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Note: The following dependencies do not have package lists for ubuntu:
# - libffi (canonical: libffi)
# - libffi-8 (canonical: libffi-8)
# - libffi-alloc (canonical: libffi-alloc)
# - libffi_c (canonical: libffi_c)
# - libffi_convenience (canonical: libffi_convenience)
# - libshlwapi (canonical: libshlwapi)

# Install the gem
RUN gem install ffi -v 1.9.24

# Verify installation
RUN ruby -e "require 'ffi'; puts 'Successfully loaded ffi'"

Nixpacks

Deploy with Nixpacks (Railway, Render, etc.)

# nixpacks.toml for ffi 1.9.24

[phases.setup]
# System dependencies:
aptPkgs = ["libc6-dev"]

# Note: The following dependencies do not have package lists for debian:
# - libffi (canonical: libffi)
# - libffi-8 (canonical: libffi-8)
# - libffi-alloc (canonical: libffi-alloc)
# - libffi_c (canonical: libffi_c)
# - libffi_convenience (canonical: libffi_convenience)
# - libshlwapi (canonical: libshlwapi)

[phases.install]
cmds = ["gem install ffi -v 1.9.24"]

[phases.build]
cmds = ["ruby -e \"require 'ffi'; puts 'Successfully loaded ffi'\""]

Save this as nixpacks.toml in your project root.

Cloud Native Buildpacks

Deploy with Cloud Native Buildpacks (Heroku, Paketo, etc.)

# package.toml for ffi 1.9.24
# Cloud Native Buildpacks configuration

# System dependencies:
[[build.env]]
name = "BP_APT_PACKAGES"
value = "libc6-dev"

# Note: The following dependencies do not have package lists for debian:
# - libffi (canonical: libffi)
# - libffi-8 (canonical: libffi-8)
# - libffi-alloc (canonical: libffi-alloc)
# - libffi_c (canonical: libffi_c)
# - libffi_convenience (canonical: libffi_convenience)
# - libshlwapi (canonical: libshlwapi)

# Gem installation will be handled by the Ruby buildpack
# which automatically installs gems from Gemfile or bundler

Save this as package.toml in your project root.

Nix Shell

Develop with Nix using ruby-nixpkgs

# shell.nix for ffi 1.9.24
# Usage: nix-shell
# Uses ruby-nixpkgs for gem management

{ pkgs ? import <nixpkgs> {} }:

let
  rubyVersion = pkgs.ruby_3_3;

  # Ruby environment with ruby-nixpkgs
  rubyEnv = pkgs.bundlerEnv {
    name = "ffi-1.9.24";
    ruby = rubyVersion;
    gemdir = ./.;
  };
in

pkgs.mkShell {
  buildInputs = [
    rubyVersion
    pkgs.bundler
    pkgs.ruby-nixpkgs

    # Note: The following dependencies do not have package lists for nixpkgs:
    # - libc (canonical: libc)
    # - libffi (canonical: libffi)
    # - libffi-8 (canonical: libffi-8)
    # - libffi-alloc (canonical: libffi-alloc)
    # - libffi_c (canonical: libffi_c)
    # - libffi_convenience (canonical: libffi_convenience)
    # - libshlwapi (canonical: libshlwapi)
  ];

  shellHook = ''
    echo "Ruby environment for ffi 1.9.24"
    echo "Use: gem install ffi -v 1.9.24"
  '';
}

Save this as shell.nix in your project root, then run nix-shell.

Devenv

Develop with Devenv for declarative development environments

# devenv.nix for ffi 1.9.24
# Usage: devenv shell

{ pkgs, lib, config, ... }:

{
  languages.ruby = {
    enable = true;
    version = "3.3.0";
  };

  packages = [

    # Note: The following dependencies do not have package lists for nixpkgs:
    # - libc (canonical: libc)
    # - libffi (canonical: libffi)
    # - libffi-8 (canonical: libffi-8)
    # - libffi-alloc (canonical: libffi-alloc)
    # - libffi_c (canonical: libffi_c)
    # - libffi_convenience (canonical: libffi_convenience)
    # - libshlwapi (canonical: libshlwapi)
  ];

  enterShell = ''
    echo "Development environment for ffi 1.9.24"
    echo "Use: gem install ffi -v 1.9.24"
  '';
}

Save this as devenv.nix in your project root, then run devenv shell.

Nix Flakes

Develop with Nix Flakes for reproducible development environments

# flake.nix for ffi 1.9.24
# Usage: nix develop

{
  description = "Development environment for ffi 1.9.24";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = nixpkgs.legacyPackages.${system};
        rubyVersion = pkgs.ruby_3_3;
      in
      {
        devShells.default = pkgs.mkShell {
          buildInputs = [
            rubyVersion
            pkgs.bundler

            # Note: The following dependencies do not have package lists for nixpkgs:
            # - libc (canonical: libc)
            # - libffi (canonical: libffi)
            # - libffi-8 (canonical: libffi-8)
            # - libffi-alloc (canonical: libffi-alloc)
            # - libffi_c (canonical: libffi_c)
            # - libffi_convenience (canonical: libffi_convenience)
            # - libshlwapi (canonical: libshlwapi)
          ];

          shellHook = ''
            echo "Development environment for ffi 1.9.24"
            echo "Use: gem install ffi -v 1.9.24"
          '';
        };
      }
    );
}

Save this as flake.nix in your project root, then run nix develop.

Other Versions