Heroku上的逗号宝石导出失败 - 在当地环境中工作

时间:2013-08-21 22:12:00

标签: ruby-on-rails-3 mongodb heroku model-associations

在我的本地环境中使用the comma gem并完全导出CSV文件。还处理在AWS实例上运行的临时环境。

只能在Heroku上失败。

Heroku说:

2013-08-21T21:55:34.875724+00:00 app[web.1]: NoMethodError (undefined method `klass' for nil:NilClass):
2013-08-21T21:55:34.875724+00:00 app[web.1]:   app/models/job.rb:220:in `block in <class:Job>'
2013-08-21T21:55:34.875724+00:00 app[web.1]:   app/controllers/jobs_controller.rb:25:in `block (2 levels) in index'
2013-08-21T21:55:34.875724+00:00 app[web.1]:   app/controllers/jobs_controller.rb:18:in `index'

我的工作模型中的第220行是:

Comma do
...
    customer :first_name
...
end

job.rb包含以下行:

  belongs_to :customer

customer.rb有:

  has_many :jobs

正如我所提到的,整个事情在我的本地方框上运行良好 - 我点击导出按钮然后弹出所有作业,每个客户都在相应的列中。

无论出于何种原因,它只能在Heroku上失败。

我在Heroku上使用Ruby 2.0.0-p0,根据文档,Comma gem仅验证高达1.9.2 - 但是 - 我正在使用Ruby 2.0.0-p0登台服务器AND在我的本地环境中,再次,它是工作

这是真正让我失望的'klass',因为我的代码中没有任何内容。我已经阅读了有关同一错误及其解决方案的其他主题,但我没有像嵌套模型这样的东西形式等。

Heroku&amp; amp;是一个问题。 Ruby 2.0和关联?我双方都有has_many和belongs_to,但似乎仍然误解了这个联想......

更新

从框架跟踪:

comma (3.1.0) lib/comma/extractors.rb:72:in `get_association_class'  <====
comma (3.1.0) lib/comma/extractors.rb:55:in `block in method_missing'
comma (3.1.0) lib/comma/extractors.rb:48:in `each'
comma (3.1.0) lib/comma/extractors.rb:48:in `method_missing'
comma (3.1.0) lib/comma/extractors.rb:15:in `instance_eval'
comma (3.1.0) lib/comma/extractors.rb:15:in `results'

2 个答案:

答案 0 :(得分:0)

你的代码在本地和prod上可能是相同的,看起来你在本地和生产上使用相同的Rails / Ruby版本(好东西!),但也许你的数据不是。也许有什么不对的是,在生产中你正在检索一个Job并导航到某个协会,但是那个联系不存在,你得到一个零和kaboom?

答案 1 :(得分:0)

事实证明,这是逗号宝石中的合法错误 - https://github.com/comma-csv/comma/releases

我报告并接受,修复并发布了v 3.1.1