7

Postgres データベースに項目を追加したところ、すべてが正常に機能しているように見えました。何も変更しなくても、Rails アプリは、アプリ内のどこでも Madeleine を起動すると失敗し始めました。

EncodingError in EventsController#update
  invalid encoding symbol
  app/controllers/events_controller.rb:137:in `update'

137 は問題の行です。

135 def update
136   @event = Event.find(params[:id])
137   m = SnapshotMadeleine.new("bayes_data")
      ....
    end

ただし、コンソールで物事を分類することはできますが、これが混乱の原因の一部です. コンソールでは、これは正常に機能します。

m = SnapshotMadeleine.new("bayes_data") {}
   => #<Madeleine::DefaultSnapshotMadeleine:0x000...
m.system
   => #<Classifier::Bayes:0x000...
m.system.classify "test"

Madeleine で最新の Classifier gem を使用しています。

ロードしようとしたスナップショットで何かが破損していると考えたので、それを削除しましたが、問題は解決しませんでした。これが私の最後から2番目のスナップショットです(現在は最新のものです):

a = File.read('bayes_data/000000000000000000041.snapshot')
a.encoding
   => #<Encoding:UTF-8>
a.valid_encoding?
   => true

ここで何が起こっているのかわかりません。Ruby 1.9.3-p125 で同様の問題を抱えている人が何人かいたので、最新の安定版リリースである 1.9.3-p194 にアップグレードしましたが、それも役に立ちませんでした。

マドレーヌの使用方法についても言及している Classifier のドキュメントへのリンクは次のとおりです: http://classifier.rubyforge.org/

ここで何が起こっているのかについての洞察をいただければ幸いです。ありがとう!

4

3 に答える 3

0

エンコードを認識していない mysql アダプターを使用した rails_admin gem に問題がありました。postgres アダプターが有効かどうかを確認し、そうでない場合は別のものを試してください。

于 2012-10-27T21:49:47.297 に答える
0

標準の Marshal クラスが機能しない理由はわかりませんが、使用して良い結果が得られました

m = SnapshotMadeleine.new("bayes_data", YAML) do 
  b = Classifier::Bayes.new "Positive", "Negative
end

その後

m = SnapshotMadeleine.new("bayes_data", YAML)

元帥と何かが壊れた?よくわかりません。

于 2012-11-01T03:43:20.080 に答える