0

オブジェクトの json 表現を s3 に保存する遅延ジョブ タスクをキューに入れます。オブジェクトの属性の 1 つは、著作権記号を含む copyright_info です。著作権記号はデータベースに正常に表示され、コントローラーに「object.copyright_info」を配置すると、遅延ジョブ ファイルに「object.copyright_info」を配置すると、特殊文字が追加されます。

Controller

def create_json
  puts @object.copyright_info #copy right symbol appears correctly - "Copyright ©"
  Delayed::Job.enqueue SaveS3Json.new(@object)
end

json ファイルを保存します。

class SaveS3Json < Struct.new(:object)
  # encoding: utf-8

  def perform
    puts object.copyright_info #outputs "Copyright ©"
    # calls object.to_json and writes json file to s3
 end

ruby-1.9.2-p32 と Postgresql を使用して Heroku で実行しています。これと同じ作業をローカルで行うと、特殊文字が追加されないようです。

何か案は?

4

1 に答える 1

0

完全なオブジェクトではなくオブジェクト ID を Struct.new() クラスに渡すだけで問題を解決しました。SaveS3Json クラスで ID を取得したら、通常の Active Record .find(id) を実行するだけで、特殊文字を追加せずにオブジェクトが取得されました。

ありがとう!

于 2013-09-18T18:55:35.740 に答える