0
votes

I am using the prawn gem to create pdf's. So, to create tables requires using the separate prawn-table gem.

For some reason, I am unable to require the prawn table gem and have no clues as to why.

The result is:

require': cannot load such file -- prawn-table (LoadError)

For some reason, the prawn-table gem cannot be loaded. Why not?

The gems exist in the gem env path (see below):

bundle info prawn
  * prawn (2.4.0)
        Summary: A fast and nimble PDF generator for Ruby
        Homepage: http://prawnpdf.org
        Path: /home/cb/.gem/ruby/2.6.6/gems/prawn-2.4.0

bundle info prawn-table
  * prawn-table (0.2.2)
        Summary: Provides tables for PrawnPDF
        Homepage: https://github.com/prawnpdf/prawn-table
        Path: /home/cb/.gem/ruby/2.6.6/gems/prawn-table-0.2.2

I call the prawn generator like so...

require 'prawn'
require 'prawn/measurement_extensions'
require 'prawn-table'

def generate_pdf(invoice, mode)
 Prawn::Document.generate(invoice.file, margin_top: 0, page_size: 'A4',
                                           info:
  {...

which results in:

invoicer generate --mode development
Traceback (most recent call last):
        20: from ./bin/invoicer:4:in `<main>'
        19: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:85:in `require'
        18: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:85:in `require'
        17: from /home/cb/work/invoicer/lib/invoicer.rb:15:in `<top (required)>'
        16: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/activesupport-6.1.3/lib/active_support/dependencies.rb:332:in `require'
        15: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/activesupport-6.1.3/lib/active_support/dependencies.rb:299:in `load_dependency'
        14: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/activesupport-6.1.3/lib/active_support/dependencies.rb:332:in `block in require'
        13: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:148:in `require'
        12: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:148:in `require'
        11: from /home/cb/work/invoicer/lib/invoicer/invoice_process.rb:5:in `<top (required)>'
        10: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/activesupport-6.1.3/lib/active_support/dependencies.rb:332:in `require'
         9: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/activesupport-6.1.3/lib/active_support/dependencies.rb:299:in `load_dependency'
         8: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/activesupport-6.1.3/lib/active_support/dependencies.rb:332:in `block in require'
         7: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:148:in `require'
         6: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:148:in `require'
         5: from /home/cb/work/invoicer/lib/invoicer/generate_pdf.rb:4:in `<top (required)>'
         4: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/activesupport-6.1.3/lib/active_support/dependencies.rb:332:in `require'
         3: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/activesupport-6.1.3/lib/active_support/dependencies.rb:299:in `load_dependency'
         2: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/activesupport-6.1.3/lib/active_support/dependencies.rb:332:in `block in require'
         1: from /home/cb/.rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:148:in `require'
/home/cb/.rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:148:in `require': cannot load such file -- prawn-table (LoadError)

My gem env looks like this:

RubyGems Environment:

  • RUBYGEMS VERSION: 3.2.14
  • RUBY VERSION: 2.6.6 (2020-03-31 patchlevel 146) [x86_64-linux]
  • INSTALLATION DIRECTORY: /home/cb/.gem/ruby/2.6.6
  • USER INSTALLATION DIRECTORY: /home/cb/.gem/ruby/2.6.0
  • RUBY EXECUTABLE: /home/cb/.rubies/ruby-2.6.6/bin/ruby
  • GIT EXECUTABLE: /usr/bin/git
  • EXECUTABLE DIRECTORY: /home/cb/.gem/ruby/2.6.6/bin
  • SPEC CACHE DIRECTORY: /home/cb/.gem/specs
  • SYSTEM CONFIGURATION DIRECTORY: /home/cb/.rubies/ruby-2.6.6/etc
  • RUBYGEMS PLATFORMS:
    • ruby
    • x86_64-linux
  • GEM PATHS:
    • /home/cb/.gem/ruby/2.6.6
    • /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0
  • GEM CONFIGURATION:
    • :update_sources => true
    • :verbose => true
    • :backtrace => false
    • :bulk_threshold => 1000
  • REMOTE SOURCES:
  • SHELL PATH:
    • /home/cb/.gem/ruby/2.6.6/bin
    • /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/bin
    • /home/cb/.rubies/ruby-2.6.6/bin
    • /usr/local/sbin
    • /usr/local/bin
    • /usr/sbin
    • /usr/bin
    • /sbin
    • /bin
    • /usr/games
    • /usr/local/games
    • /snap/bin
    • .
    • bin
rails 6.1 load path
rails c
Loading development environment (Rails 6.1.3)
irb(main):001:0> $:
[
    [ 0] "/home/cb/work/invoicer/lib",
    [ 1] "/home/cb/work/invoicer/vendor",
    [ 2] "/home/cb/work/invoicer/app/helpers",
    [ 3] "/home/cb/work/invoicer/app/mailers",
    [ 4] "/home/cb/work/invoicer/app/models",
    [ 5] "/home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/actionview-6.1.3/lib",
    [ 6] "/home/cb/work/invoicer",
    [ 7] "/home/cb/.gem/ruby/2.6.6/gems/whenever-1.0.0/lib",
    [ 8] "/home/cb/.gem/ruby/2.6.6/gems/web-console-4.1.0/lib",
    [ 9] "/home/cb/.gem/ruby/2.6.6/gems/sqlite3-1.4.2/lib",
    [10] "/home/cb/.gem/ruby/2.6.6/extensions/x86_64-linux/2.6.0-static/sqlite3-1.4.2",
    [11] "/home/cb/.gem/ruby/2.6.6/gems/rails-6.1.3/lib",
    [12] "/home/cb/.gem/ruby/2.6.6/gems/sprockets-rails-3.2.2/lib",
    [13] "/home/cb/.gem/ruby/2.6.6/gems/sprockets-4.0.2/lib",
    [14] "/home/cb/.gem/ruby/2.6.6/gems/railties-6.1.3/lib",
    [15] "/home/cb/.gem/ruby/2.6.6/gems/thor-1.1.0/lib",
    [16] "/home/cb/.gem/ruby/2.6.6/gems/rack-mini-profiler-2.3.1/lib",
    [17] "/home/cb/.gem/ruby/2.6.6/gems/prawn-table-0.2.2/lib",
    [18] "/home/cb/.gem/ruby/2.6.6/gems/prawn-2.4.0/lib",
    [19] "/home/cb/.gem/ruby/2.6.6/gems/ttfunk-1.7.0/lib",
    [20] "/home/cb/.gem/ruby/2.6.6/gems/pdf-core-0.9.0/lib",
    [21] "/home/cb/.gem/ruby/2.6.6/gems/method_source-1.0.0/lib",
    .
    .
    .
    [93] "/home/cb/.rubies/ruby-2.6.6/lib/ruby/2.6.0",
    [94] "/home/cb/.rubies/ruby-2.6.6/lib/ruby/2.6.0/x86_64-linux"
]
1
See if this helps.Arun Kumar Mohan
Unfortunately no. That article would seem to suggest that bundler is not handling the dependencies correctly, however, trying the various combinations of forcing the dependencies makes no differencewillyab

1 Answers

1
votes

IMO instead of

require "prawn-table"

you should use

require "prawn/table"