6

Windows 2008 Server x64 ボックスを ruby​​gems 1.5.0 に更新したところrake clobber build、Gemcutter が提供する rake タスク ( ) を使用して gem をビルドできなくなりました。次のエラーが表示されます。

rake aborted!
undefined method `write' for #<Syck::Emitter:0x37dda38>
C:/Ruby192/lib/ruby/1.9.1/psych/visitors/emitter.rb:17:in `end_document'
C:/Ruby192/lib/ruby/1.9.1/psych/visitors/emitter.rb:17:in `visit_Psych_Nodes_Document'
C:/Ruby192/lib/ruby/1.9.1/psych/visitors/visitor.rb:10:in `accept'
C:/Ruby192/lib/ruby/1.9.1/psych/visitors/emitter.rb:10:in `block in visit_Psych_Nodes_Stream'
C:/Ruby192/lib/ruby/1.9.1/psych/visitors/emitter.rb:10:in `each'
C:/Ruby192/lib/ruby/1.9.1/psych/visitors/emitter.rb:10:in `visit_Psych_Nodes_Stream'
C:/Ruby192/lib/ruby/1.9.1/psych/visitors/visitor.rb:11:in `accept'
C:/Ruby192/lib/ruby/1.9.1/psych/nodes/node.rb:36:in `to_yaml'
C:/Ruby192/lib/ruby/1.9.1/psych.rb:166:in `dump'
C:/Ruby192/lib/ruby/1.9.1/psych/core_ext.rb:13:in `psych_to_yaml'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:706:in `node_export'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:706:in `add'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:706:in `encode_with'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:727:in `block (2 levels) in to_yaml'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:726:in `map'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:726:in `block in to_yaml'
C:/Ruby192/lib/ruby/1.9.1/syck.rb:401:in `call'
C:/Ruby192/lib/ruby/1.9.1/syck.rb:401:in `emit'
C:/Ruby192/lib/ruby/1.9.1/syck.rb:401:in `quick_emit'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:725:in `to_yaml'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/builder.rb:78:in `block (2 levels) in write_package'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_output.rb:73:in `block (3 levels) in add_gem_contents'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_writer.rb:83:in `new'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_output.rb:67:in `block (2 levels) in add_gem_contents'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_output.rb:65:in `wrap'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_output.rb:65:in `block in add_gem_contents'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_writer.rb:113:in `add_file'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_output.rb:63:in `add_gem_contents'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_output.rb:31:in `open'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/package.rb:68:in `open'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/builder.rb:77:in `block in write_package'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/builder.rb:76:in `open'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/builder.rb:76:in `write_package'
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/builder.rb:39:in `build'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/jeweler-1.5.2/lib/jeweler/commands/build_gem.rb:16:in `run'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/jeweler-1.5.2/lib/jeweler.rb:87:in `build_gem'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/jeweler-1.5.2/lib/jeweler/tasks.rb:84:in `block in define'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:636:in `call'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:636:in `block in execute'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:631:in `each'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:597:in `block in invoke_with_call_chain'
C:/Ruby192/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2029:in `block (2 levels) in top_level'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2029:in `block in top_level'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2001:in `block in run'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/bin/rake:31:in `<top (required)>'
C:/Ruby192/bin/rake:19:in `load'
C:/Ruby192/bin/rake:19:in `<main>'

以下を含むバンドルの使用に基づく:

Using rake (0.8.7)
Using bundler (1.0.10)
Using diff-lcs (1.1.2)
Using git (1.2.5)
Using jeweler (1.5.1)
Using json (1.5.1)
Using rcov (0.9.9)
Using rspec-core (2.1.0)
Using rspec-expectations (2.1.0)
Using rspec-mocks (2.1.0)
Using rspec (2.1.0)
Using syntax (1.0.0)
Using systemu (1.2.0)
Using win32console (1.3.0)

システムにインストールされた次のgem

activemodel (3.0.3, 3.0.1)
activerecord (3.0.3, 3.0.1)
activerecord-sqlserver-adapter (3.0.9, 3.0.6, 3.0.5)
activesupport (3.0.3, 3.0.1)
archive-tar-minitar (0.5.2)
arel (2.0.7, 2.0.3, 1.0.1)
builder (3.0.0, 2.1.2)
bundler (1.0.10, 1.0.7)
capistrano (2.5.19)
capistrano_winrm (0.0.1)
capybara (0.4.1.1, 0.4.0)
celerity (0.8.7, 0.8.6)
childprocess (0.1.6)
color (1.4.1)
columnize (0.3.2)
cucumber (0.10.0, 0.9.4)
culerity (0.2.15, 0.2.13)
dbi (0.4.5)
deprecated (3.0.0)
diff-lcs (1.1.2)
ffi (1.0.5 x86-mingw32, 1.0.4 x86-mingw32, 0.6.3 x86-mingw32)
gemcutter (0.6.1)
gherkin (2.3.3 x86-mingw32, 2.2.9 x86-mingw32)
git (1.2.5)
handsoap (1.1.8, 1.1.7)
highline (1.6.1)
hoe (2.9.1, 2.8.0)
httpclient (2.1.6.1, 2.1.6)
i18n (0.5.0, 0.4.2)
ironruby-dbi (0.1.0)
jeweler (1.5.2, 1.5.1)
json (1.5.1 x86-mingw32, 1.4.6 x86-mingw32)
json_pure (1.5.1, 1.4.6)
justeat (0.1.0, 0.0.2)
linecache19 (0.5.11)
macaddr (1.0.0)
mime-types (1.16)
minitest (2.0.2, 1.6.0)
mssqlclient (0.1.0)
net-scp (1.0.4)
net-sftp (2.0.5)
net-ssh (2.1.0, 2.0.23)
net-ssh-gateway (1.0.1)
net-ssh-multi (1.0.1)
net-ssh-shell (0.1.0)
nokogiri (1.4.4.1 x86-mingw32)
open4 (1.0.1)
Platform (0.4.0)
popen4 (0.1.2)
rack (1.2.1)
rack-test (0.5.7, 0.5.6)
rake (0.8.7)
rake-dotnet (1.0.2, 1.0.1, 0.2.2, 0.2.1, 0.2.0)
rake-remote_task (2.0.2)
rcov (0.9.9)
rdiscount (1.6.8, 1.6.5)
rdoc (3.5.3, 3.1, 2.5.8)
rdoc-data (2.5.3)
rspec (2.5.0, 2.3.0, 2.1.0, 2.0.1)
rspec-core (2.5.1, 2.3.1, 2.1.0, 2.0.1)
rspec-expectations (2.5.0, 2.3.0, 2.1.0, 2.0.1)
rspec-mocks (2.5.0, 2.3.0, 2.1.0, 2.0.1)
ruby-debug-base19 (0.11.24)
ruby-debug-ide (0.4.16)
ruby-odbc (0.99994, 0.99993, 0.99992)
ruby_core_source (0.1.4)
rubyforge (2.0.4)
rubygems-update (1.5.0)
rubyntlm (0.1.1)
rubyzip (0.9.4)
selenium-webdriver (0.1.2)
syntax (1.0.0)
systemu (1.2.0)
term-ansicolor (1.0.5)
trollop (1.16.2)
tzinfo (0.3.24, 0.3.23)
uuid (2.3.1)
vlad (2.1.0)
webrat (0.7.3, 0.7.2)
win32-api (1.4.8 x86-mingw32, 1.4.7 x86-mingw32)
win32-process (0.6.5)
win32console (1.3.0 x86-mingw32)
windows-api (0.4.0)
windows-pr (1.1.3, 1.1.2)
winrm (0.0.6)
xpath (0.1.3, 0.1.2)

リセット CSSを使用して、再試行してください。これらの div のコンテンツがこの問題を引き起こしている可能性があります。

4

4 に答える 4

20

更新:#1239には、バンドラー1.0.21または1.1にアップグレードすると問題が解決する可能性があるという報告があります。(ポインタを提供してくれたforforfに感謝します!)

gem install bundler

これは、 bundlerの既知のバグ(#1239 )です。Rakefileの先頭に追加require 'psych'するというLarschの回避策は、私のRailsプロジェクトには役立ちませんでした(何らかの理由で-それは単に何も変更しませんでした)がRUBYOPT='-rpsych'、回避策として設定すると、問題は解決しました:

RUBYOPT='-rpsych' bundle install

(これを指摘してくれたMoroに感謝します。)

インストールと更新にのみ必要なようです。アプリケーション自体(つまり、としてもrakeを呼び出すなどbundle exec)は、RUBYOPTを設定しなくても機能し続ける必要があります。


背景として、単にpsychモジュールを要求するだけで違いが生じる理由は次のように思われます。YAMLが必要なときにPsychがロードされない限り、YAMLは(古い)Syckライブラリを自動的に使用します。もちろん、この種の暗黙の動作は、ここで見られる問題を含め、多くの問題を引き起こします。

于 2011-07-21T11:43:11.783 に答える
7

この Hoe バグ レポートでは回避策が説明されています。Rakefile の他の何よりも前に require 'psych' を追加します。私のために働きます。

于 2011-02-16T13:06:25.300 に答える
1

サーバーとして Puma を使用して Rails アプリを実行しようとすると、この問題が発生しました。その答えは、ここにいる人々が言っ​​ていたことでした。つまり、指定しない場合、Ruby は psych (新しい yaml パーサー) の代わりに syck (古い yaml パーサー) を使用しようとします。config/boot.rb次の行でファイルを変更する必要がありました。

require 'psych'
YAML::ENGINE.yamler = 'psych'

syck の使用を強制的に停止し、psych に切り替えるには。その後、すべてが機能しました。

于 2013-02-27T02:54:09.273 に答える
1

debianでも同様の問題がありました。1.0.10 ではなく古いバージョンのバンドラー (1.0.9) に戻すと、問題が修正されました。

于 2011-02-14T14:16:11.260 に答える