air*_*lok 7 ruby ruby-on-rails
当我向Postgres数据库中添加项目时,一切似乎都运行正常.在不改变任何内容的情况下,只要我的应用程序中的任何地方启动Madeleine,我的Rails应用就会失败:
EncodingError in EventsController#update
invalid encoding symbol
app/controllers/events_controller.rb:137:in `update'
Run Code Online (Sandbox Code Playgroud)
137是问题线:
135 def update
136 @event = Event.find(params[:id])
137 m = SnapshotMadeleine.new("bayes_data")
....
end
Run Code Online (Sandbox Code Playgroud)
但是,我能够在控制台中对事物进行分类,这是导致我混淆的一部分.在控制台中,这很好用:
m = SnapshotMadeleine.new("bayes_data") {}
=> #<Madeleine::DefaultSnapshotMadeleine:0x000...
m.system
=> #<Classifier::Bayes:0x000...
m.system.classify "test"
Run Code Online (Sandbox Code Playgroud)
我正在使用Madeleine最新的Classifier宝石.
我认为我的快照中有些东西在尝试加载时被破坏了,所以我删除了它,但这并没有解决问题.这是我的倒数第二个快照(现在是最新的快照):
a = File.read('bayes_data/000000000000000000041.snapshot')
a.encoding
=> #<Encoding:UTF-8>
a.valid_encoding?
=> true
Run Code Online (Sandbox Code Playgroud)
不知道这里发生了什么.我看到一些Ruby 1.9.3-p125的人有类似的问题,所以我升级到最新的稳定版本1.9.3-p194,但这也没有帮助.
这里是Classifier文档的链接,它提到了如何使用Madeleine:http://classifier.rubyforge.org/
我非常感谢能够深入了解这里发生的事情.谢谢!
我在使用 mysql 适配器时遇到了 Rails_admin gem 的问题,该适配器无法识别编码,也许您可以检查您的 postgres 适配器是否是,如果不是,请尝试另一个适配器