1

我正在编写一个类来编写名为“BravoManagementXlsReport”的 XLS 文件。它当前位于以下目录中:

在此处输入图像描述

所有其他报告都继承自xls_report,所以我也这样做了。

class BravoManagementXlsReport < XlsReport
  attr_reader :file_name
  ...
end

当我运行工人时,我得到:

2014-02-24T16:22:58Z 18204 TID-ovbv17qdg WARN: uninitialized constant BravoManagementXlsReport

我以为我应该重新启动工作人员,但那没有用,所以我重新启动了 Rails 服务器,但也没有用。在我尝试的控制台中:

[2] toolkit »  ManagementXlsReport // this returns the object
=> ManagementXlsReport < XlsReport
[3] toolkit »  BravoManagementXlsReport // this is obviously not finding it
NameError: uninitialized constant BravoManagementXlsReport

[1] toolkit »  XlsReport.descendants // this returns everything but the new file
=> [
  [0] SocioeconomicDevelopmentXlsReport < XlsReport,
  [1] EnterpriseDevelopmentXlsReport < XlsReport,
  [2] PreferentialProcurementXlsReport < XlsReport,
  [3] IntermediaryBillXlsReport < XlsReport,
  [4] ScorecardXlsReport < XlsReport,
  [5] TrainingProgramXlsReport < XlsReport,
  [6] GeneralXlsReport < XlsReport,
  [7] EmploymentEquityXlsReport < XlsReport,
  [8] ManagementXlsReport < XlsReport,
  [9] SkillsDevelopmentXlsReport < XlsReport
]

有什么我想念的吗?我试着看看我是否拼错了一些东西,但我看不到它。

4

1 回答 1

0

我终于知道发生了什么事。路径没有被导轨加载。在应用程序配置文件中,我发现了这个。我认为它只是糟糕的遗留代码让我感到困惑。

# These are imported so that the elements are downloadable to excel
require "#{Rails.root}/lib/reports/xls_report.rb"
[:employment_equity, :management, :skills_development, :enterprise_development, :preferential_procurement, :socioeconomic_development, :general, :training_program, :scorecard, :intermediary_bill].each do |file|
  require "#{Rails.root}/lib/reports/#{file}_xls_report.rb"
end

所以我只是用自动路径加载器替换了它:

config.autoload_paths += %W( #{Rails.root}/lib/reports )

现在它工作得很好:) 非常感谢你的帮助!希望这最终能帮助别人。

于 2014-02-25T07:24:50.830 回答