問題タブ [syck]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 不正な文字列の YAML エンコーディング、モデルのシリアル化の問題
シリアル化された列を持つモデルが、保存されたデータを適切にロードしないという Ruby on Rails の問題を切り分けました。
入ってくるのはハッシュで、出てくるのはフォーマットの問題のために解析できない YAML 文字列です。シリアライザーは、与えられたものを適切に保存および取得できると期待しているため、何か問題が発生したようです。
問題の厄介な文字列は、次のようにフォーマットされています。
改行、インデントされた 2 行目、およびインデントされていない 3 行目の組み合わせにより、パーサーが失敗します。空白行またはインデントのいずれかを省略すると問題が解決するように見えますが、これはシリアライゼーション プロセスのバグのようです。かなり特殊な一連の状況が必要になるため、これは適切に処理されていない奇妙なエッジ ケースであると確信しています。
Ruby に同梱され、Rails で使用される YAML モジュールは、処理の大部分を Syck に委譲するように見えますが、送信するデータをエンコードする方法に関するいくつかのヒントを Syck に提供します。
yaml/rubytypes.rb には String#to_yaml の定義があります:
「:」で始まり、デシリアライズ時に Symbol と混同される可能性がある文字列のチェックがあるようです。:quote2 オプションは、エンコード プロセス中にそれを引用することを示す必要があります。上記の条件をキャッチするためにこの正規表現を調整しても、出力には何の影響もないように見えるので、YAML の実装に詳しい人がアドバイスしてくれることを願っています。
ruby-on-rails - ActiveRecordsがyamlに正しくシリアル化されていない
アクティブなレコードをシリアル化すると、実行しているボックスによってyamlの形式が異なることがわかります。1つの箱で私は得る:
それ以外の
最初のバージョンは問題です。yamlが逆シリアル化されたときにアクティブサポートがアクティブレコードを正しく入力するために何らかの魔法をかける必要があるためです。この違いの原因と、2番目の形式が使用されていることを確認するにはどうすればよいですか?
私はruby1.9.2を使用しており、yamlエンジンにsyckを使用するように強制しました
boot.rb(railsアプリ)で。
アップデート
もう少し掘り下げてみると、ActiveRecordタイプがyamlに登録されていないことがわかりました。それが機能するサーバーで、次の呼び出しを行います。
含まれるもの:
このタイプは、正しく動作していないサーバーから欠落しています。問題は、タイプが登録されていない理由がわからないことです。
ruby-on-rails - JRuby と YAML
Rails で YAML を使用する場合、boot.rb を次のように変更します。
通常の Ruby では問題なく動作します。
アプリケーションを Ruby から JRuby に転送すると、動作しません。
これらの行を JRuby のどこに記述すればよいですか?
ruby - Syck を使用して 1.9 の JRuby で YAML を実行するにはどうすればよいですか?
JRuby を Ruby 1.9 モードで実行し、Psych ではなく Syck を使用するように指示しても、何も機能しないようです。何か不足していますか?
背景: How do I deserialize classes in Psych? のPsych に関する問題のため、Syck を使用しようとしています。
ruby - 内部でTCPServerを使用してオブジェクトをシリアル化する方法は?
チェーン内の特定のスクリプトの頻繁に繰り返される実行を高速化するために、カスタム オブジェクトをディスクにシリアル化し始めました。
組み込みの Yaml や Marshal を使用します。
Yaml は正常に見えるテキスト ファイルに正常にシリアル化しますが、逆シリアル化しようとすると次のエラーが発生します。
ただし、Marshal エラーを介してバイナリ ファイルに保存しようとしても、次のようになります。
意図的$browser.close
に最後に行わないことで、Ruby スクリプトの有効期間が終了した後も、この TCPServer を存続させて実行し続けることができます。
どうすればこれを回避できるかについて何か考えはありますか? リロードが成功したら、ソケット/内部オブジェクトの有効性を再確認し、必要に応じてまったく新しいオブジェクトを再初期化することを約束します。
ruby-on-rails-3 - RailsイニシャライザでYAML.loadが返らない
Rails 3.1 アプリの初期化中に yaml 構成ファイルをロードしようとしていますが、YAML.load の呼び出しが返されません。これが私の初期化ファイルです:
そして、ここに私のstripe.ymlファイルがあります:
なんらかの理由で、YAML.load
コールは返されません。スタック トレースを実行すると、syck.rb の 135 行目でスタックしているように見えます。興味深いのは、アプリが壊れるまで放置する時間が長いほど、135 行目の呼び出しが多くなるということです。
Syck を使用する代わりに Psych を明示的に使用しようとしましたが、うまくいきませんでした。(それもぶら下がってしまいます。)
ruby-on-rails - ./script/delayed_job -nを使用して複数のキューでdelayed_jobsを実行すると、「未定義のメソッド」エラーが発生します
複数のキューで遅延ジョブを実行する際に問題が発生しました。最初は、すべてを1つのキューで実行したときに同じ問題が発生しました。
しかし、実行することによってそれを解決しました
現在、さまざまなキューを実行するために、次を使用しています。./script/delayed_job -n 2 start
エラーから始めます。エラーは次のとおりです。
"Syck :: DomainType#{method_name}がNoMethodErrorで失敗しました:undefined method` {method_name}'for#
ここで提案されているように、application.rbにコードを追加して解決しようとしました:
しかし、それは役に立ちませんでした。私が使用しているもの:Rails 3.0.9 Ruby 1.9.2 p290
ありがとう:)ムーズリー。
ruby - syck:sslが必要:異なるRubyバージョン?
鉄道の宝石のレーキタスクを実行しようとしていますhttps://github.com/preston/railroady#readme
以下のエラーメッセージでは、Ruby 1.9.3を使用しているときにsyckとしてRuby1.9.1を参照していると思います(以下を参照)。これは正常ですか?
プロセスは次のことに陥っています。
syck.rbの関連コードは次のとおりです。
yaml - YAML、delayed_job : Psych vs Syck. pysch に ruby オブジェクトの attr_accessors を読み込ませる方法
Ruby 1.9.3 でdelayed_job (3.0.3) を使用すると問題が発生します。以前は、ruby オブジェクトに設定されたすべての属性 (attr_accessors を含む) を読み取る yaml syck パーサーが付属する ruby 1.8.7 を使用していましたが、1.9.3 へのアップグレードにより、yaml パーサーは psych に切り替えられました (再データベースに永続化されたもの以外の属性は考慮されません。attr_accessors も考慮に入れるようにするにはどうすればよいでしょうか。私はsyckに切り替えようとしました:
しかし、まだ機能しません。
この問題の回避策はありますか?