在我的本地环境中使用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'
答案 0 :(得分:0)
你的代码在本地和prod上可能是相同的,看起来你在本地和生产上使用相同的Rails / Ruby版本(好东西!),但也许你的数据不是。也许有什么不对的是,在生产中你正在检索一个Job并导航到某个协会,但是那个联系不存在,你得到一个零和kaboom?
答案 1 :(得分:0)
事实证明,这是逗号宝石中的合法错误 - https://github.com/comma-csv/comma/releases
我报告并接受,修复并发布了v 3.1.1