Ruby gem: ffi
gem install ffi -v 1.3.1 gem 'ffi', '~> 1.3.1' To lock this gem at this specific version, update your Gemfile:
gem 'ffi', '1.3.1' 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.
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.3.1
# Verify installation
RUN ruby -e "require 'ffi'; puts 'Successfully loaded ffi'"
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.3.1
# Verify installation
RUN ruby -e "require 'ffi'; puts 'Successfully loaded ffi'"
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.3.1
# Verify installation
RUN ruby -e "require 'ffi'; puts 'Successfully loaded ffi'"
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.3.1
# Verify installation
RUN ruby -e "require 'ffi'; puts 'Successfully loaded ffi'"
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.3.1
# Verify installation
RUN ruby -e "require 'ffi'; puts 'Successfully loaded ffi'"
Deploy with Nixpacks (Railway, Render, etc.)
# nixpacks.toml for ffi 1.3.1 [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.3.1"] [phases.build] cmds = ["ruby -e \"require 'ffi'; puts 'Successfully loaded ffi'\""]
Save this as nixpacks.toml in your project root.
Deploy with Cloud Native Buildpacks (Heroku, Paketo, etc.)
# package.toml for ffi 1.3.1 # 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.
Develop with Nix using ruby-nixpkgs
# shell.nix for ffi 1.3.1
# 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.3.1";
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.3.1"
echo "Use: gem install ffi -v 1.3.1"
'';
}
Save this as shell.nix in your project root, then run nix-shell.
Develop with Devenv for declarative development environments
# devenv.nix for ffi 1.3.1
# 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.3.1"
echo "Use: gem install ffi -v 1.3.1"
'';
}
Save this as devenv.nix in your project root, then run devenv shell.
Develop with Nix Flakes for reproducible development environments
# flake.nix for ffi 1.3.1
# Usage: nix develop
{
description = "Development environment for ffi 1.3.1";
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.3.1"
echo "Use: gem install ffi -v 1.3.1"
'';
};
}
);
}
Save this as flake.nix in your project root, then run nix develop.