0

听起来很奇怪,在我的本地版本中使用 Prawn gem 生成 pdf 的代码成功运行,而在在线版本中它只显示空的 pdf 页面。我还尝试在本地版本中将环境更改为“生产”,但仍然无法重现此问题。

我用来生成该pdf的代码是:

 write_attribute(:filepath, "/reports/#{self.publisher.email}/#{Time.now.to_s(:report_filename)}.#{self.format}")
  Prawn::Document.generate(RAILS_ROOT + self.filepath) do |pdf|
    titles = self.display_titles
    items = self.display_items.map do |item|
      titles.collect { |title| item[title.gsub(' ', '')].to_s }
    end
    pdf.table items, :border_style => :grid,
      :row_colors => ["FFFFFF", "DDDDDD"],
      :headers => titles, 
      :align => self.table_aligns
  end

有人可以帮忙吗?

更新 1

在本地版本中运行 gem list prawn 给了我这个:

*** LOCAL GEMS ***

prawn (0.8.4)
prawn-core (0.8.4)
prawn-layout (0.8.4)
prawn-security (0.8.4)

在线运行时给了我:

*** REMOTE GEMS ***

prawn (0.8.4)
prawn-blank (0.0.1)
prawn-core (0.8.4)
prawn-fast-png (0.2.3)
prawn-flexible-table (0.1.2)
prawn-format (0.2.3)
prawn-graph (0.0.4)
prawn-js (0.7.1)
prawn-layout (0.8.4)
prawn-security (0.8.4)
prawn-svg (0.9.1.10)
prawn_commander (0.1.2)
prawn_rails (0.0.4)
prawnto (0.0.3)

这是什么线索吗?

4

2 回答 2

0

确保您在本地和生产中使用相同版本的虾。

gem list prawn --local

注意:如果您在任一位置解压了 gem,您可能需要检查您的供应商目录。


更新

服务器上的日志中显示任何错误?

此外,请仔细检查以确保您在本地安装的所有 prawn gem 都已解压缩到供应商目录中。如果有任何未解包的 gem,它们将在本地工作,因为丢失的 gem 将从 ruby​​gems 环境中加载。

我强烈推荐使用Bundler,因为它有助于避免任何依赖解析问题。

于 2010-11-12T21:00:31.537 回答
0

正如一位朋友指出的,Prawn 不喜欢被 Frozen Prawn。使用 sudo 安装 gem 以确保其正常工作。

于 2010-11-15T10:30:08.583 回答