微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

rails 6.1: 无法加载此类文件 -- prawn-table

如何解决rails 6.1: 无法加载此类文件 -- prawn-table

我正在使用 prawn gem 创建 pdf。因此,创建表需要使用单独的 prawn-table gem。

出于某种原因,我无法要求使用 prawn table gem 并且不知道为什么。

结果是:

require': 无法加载此类文件 -- prawn-table (LoadError)

由于某种原因,无法加载 prawn-table gem。 为什么不呢?

宝石存在于 gem env 路径中(见下文):

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

我这样称呼对虾生成器...

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:
  {...

导致:

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)

我的 gem 环境如下所示:

RubyGems 环境:

  • 红宝石版本:3.2.14
  • Ruby 版本:2.6.6(2020 年 3 月 31 日补丁级别 146)[x86_64-linux]
  • 安装目录:/home/cb/.gem/ruby/2.6.6
  • 用户安装目录:/home/cb/.gem/ruby/2.6.0
  • 红宝石可执行文件:/home/cb/.rubies/ruby-2.6.6/bin/ruby
  • GIT 可执行文件:/usr/bin/git
  • 可执行目录:/home/cb/.gem/ruby/2.6.6/bin
  • SPEC 缓存目录:/home/cb/.gem/specs
  • 系统配置目录:/home/cb/.rubies/ruby-2.6.6/etc
  • RUBYGEMS 平台:
    • 红宝石
    • x86_64-linux
  • 宝石路径:
    • /home/cb/.gem/ruby/2.6.6
    • /home/cb/.rubies/ruby-2.6.6/lib/ruby/gems/2.6.0
  • 宝石配置:
    • :update_sources => 真
    • :verbose => 真
    • :backtrace => false
    • :bulk_threshold => 1000
  • 远程资源:
  • 外壳路径:
    • /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
    • .
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"
]

解决方法

IMO 而不是

require "prawn-table"

你应该使用

require "prawn/table"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。