Skip to content

A warning appears every time a gem with native extensions is loaded by bundler during local development #8754

Description

@uvlad7

Describe the problem as clearly as you can

bin/console (or any bundle exec / require "bundler/setup" stuff) prints Ignoring tzfrb-0.1.0 because its extensions are not built. Try: gem pristine tzfrb --version 0.1.0 warnings when tzfrb is a local gem with native extensions

Did you try upgrading rubygems & bundler?

Yes

Post steps to reproduce the problem

Create a gem

 bundle gem tzfrb --ext=rust 
 cd tzfrb
 bundle install
 bundle exec rake compile
  • How your ruby is setup (OS package, from source, using a version manager).
    Installed via mise
vladimir@np940x5n:~/tzfrb (master)$ bundler -v
Bundler version 2.6.9
vladimir@np940x5n:~/tzfrb (master)$ ruby -v
ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [x86_64-linux]

Which command did you run?

bin/console

What were you expecting to happen?

Pry session without warnings on top
I was able to suppress this with

module AnnoyingGemWarningSilencer
    def contains_requirable_file?(file)
        return super unless source.is_a?(Bundler::Source::Gemspec)
        return false if ignored?

        super
    end
end

Gem::BasicSpecification.prepend(AnnoyingGemWarningSilencer)

on top of my bin/console

What happened instead?

Ignoring tzfrb-0.1.0 because its extensions are not built. Try: gem pristine tzfrb --version 0.1.0
Ignoring tzfrb-0.1.0 because its extensions are not built. Try: gem pristine tzfrb --version 0.1.0
Ignoring tzfrb-0.1.0 because its extensions are not built. Try: gem pristine tzfrb --version 0.1.0
Ignoring tzfrb-0.1.0 because its extensions are not built. Try: gem pristine tzfrb --version 0.1.0
# extension is built
3.3.0 :001 > Tzfrb.hello('Ruby')
 => "Hello from Rust, Ruby!" 

If not included with the output of your command, run bundle env and paste the output below

Environment

Bundler       2.6.9
  Platforms   ruby, x86_64-linux
Ruby          3.3.6p108 (2024-11-05 revision 75015d4c1f6965b5e85e96fb309f1f2129f933c0) [x86_64-linux]
  Full Path   /home/vladimir/.local/share/mise/installs/ruby/3.3.6/bin/ruby
  Config Dir  /home/vladimir/.local/share/mise/installs/ruby/3.3.6/etc
RubyGems      3.6.9
  Gem Home    /home/vladimir/.local/share/mise/installs/ruby/3.3.6/lib/ruby/gems/3.3.0
  Gem Path    /home/vladimir/.gem/ruby/3.3.0:/home/vladimir/.local/share/mise/installs/ruby/3.3.6/lib/ruby/gems/3.3.0
  User Home   /home/vladimir
  User Path   /home/vladimir/.gem/ruby/3.3.0
  Bin Dir     /home/vladimir/.local/share/mise/installs/ruby/3.3.6/bin
Tools         
  Git         2.34.1
  RVM         not installed
  rbenv       not installed
  chruby      not installed

Bundler Build Metadata

Built At          1980-01-02
Git SHA           8a2a14d63da
Released Version  true

Bundler settings

gem.changelog
  Set for the current user (/home/vladimir/.bundle/config): false
gem.ci
  Set for the current user (/home/vladimir/.bundle/config): false
gem.coc
  Set for the current user (/home/vladimir/.bundle/config): false
gem.linter
  Set for the current user (/home/vladimir/.bundle/config): "rubocop"
gem.mit
  Set for the current user (/home/vladimir/.bundle/config): false
gem.test
  Set for the current user (/home/vladimir/.bundle/config): false
nexus.profitero.dev
  Set for the current user (/home/vladimir/.bundle/config): "data-acquisition-service:[REDACTED]"

Gemfile

Gemfile

# frozen_string_literal: true

source "https://rubygems.org"

# Specify your gem's dependencies in tzfrb.gemspec
gemspec

gem "irb"
gem "rake", "~> 13.0"

gem "rake-compiler"

gem "rubocop", "~> 1.21"

Gemfile.lock

PATH
  remote: .
  specs:
    tzfrb (0.1.0)
      rb_sys (~> 0.9.91)

GEM
  remote: https://rubygems.org/
  specs:
    ast (2.4.3)
    date (3.4.1)
    erb (5.0.1)
    io-console (0.8.0)
    irb (1.15.2)
      pp (>= 0.6.0)
      rdoc (>= 4.0.0)
      reline (>= 0.4.2)
    json (2.12.2)
    language_server-protocol (3.17.0.5)
    lint_roller (1.1.0)
    parallel (1.27.0)
    parser (3.3.8.0)
      ast (~> 2.4.1)
      racc
    pp (0.6.2)
      prettyprint
    prettyprint (0.2.0)
    prism (1.4.0)
    psych (5.2.6)
      date
      stringio
    racc (1.8.1)
    rainbow (3.1.1)
    rake (13.3.0)
    rake-compiler (1.3.0)
      rake
    rake-compiler-dock (1.9.1)
    rb_sys (0.9.116)
      rake-compiler-dock (= 1.9.1)
    rdoc (6.14.0)
      erb
      psych (>= 4.0.0)
    regexp_parser (2.10.0)
    reline (0.6.1)
      io-console (~> 0.5)
    rubocop (1.76.0)
      json (~> 2.3)
      language_server-protocol (~> 3.17.0.2)
      lint_roller (~> 1.1.0)
      parallel (~> 1.10)
      parser (>= 3.3.0.2)
      rainbow (>= 2.2.2, < 4.0)
      regexp_parser (>= 2.9.3, < 3.0)
      rubocop-ast (>= 1.45.0, < 2.0)
      ruby-progressbar (~> 1.7)
      unicode-display_width (>= 2.4.0, < 4.0)
    rubocop-ast (1.45.0)
      parser (>= 3.3.7.2)
      prism (~> 1.4)
    ruby-progressbar (1.13.0)
    stringio (3.1.7)
    unicode-display_width (3.1.4)
      unicode-emoji (~> 4.0, >= 4.0.4)
    unicode-emoji (4.0.4)

PLATFORMS
  ruby
  x86_64-linux

DEPENDENCIES
  irb
  rake (~> 13.0)
  rake-compiler
  rubocop (~> 1.21)
  tzfrb!

BUNDLED WITH
   2.6.9

Gemspecs

tzfrb.gemspec

# frozen_string_literal: true

require_relative "lib/tzfrb/version"

Gem::Specification.new do |spec|
  spec.name = "tzfrb"
  spec.version = Tzfrb::VERSION
  spec.authors = ["uvlad7"]
  spec.email = ["uvlad7@gmail.com"]

  spec.summary = "TODO: Write a short summary, because RubyGems requires one."
  spec.description = "TODO: Write a longer description or delete this line."
  spec.homepage = "TODO: Put your gem's website or public repo URL here."
  spec.required_ruby_version = ">= 3.1.0"
  spec.required_rubygems_version = ">= 3.3.11"

  spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"

  spec.metadata["homepage_uri"] = spec.homepage
  spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
  spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."

  # Specify which files should be added to the gem when it is released.
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
  gemspec = File.basename(__FILE__)
  spec.files = IO.popen(%w[git ls-files -z], chdir: __dir__, err: IO::NULL) do |ls|
    ls.readlines("\x0", chomp: true).reject do |f|
      (f == gemspec) ||
        f.start_with?(*%w[bin/ test/ spec/ features/ .git appveyor Gemfile])
    end
  end
  spec.bindir = "exe"
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
  spec.require_paths = ["lib"]
  spec.extensions = ["ext/tzfrb/extconf.rb"]

  # Uncomment to register a new dependency of your gem
  # spec.add_dependency "example-gem", "~> 1.0"
  spec.add_dependency "rb_sys", "~> 0.9.91"

  # For more information and examples about making a new gem, check out our
  # guide at: https://bundler.io/guides/creating_gem.html
end

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions