win下bundle install表示jsonインストールエラー解決方法

2562 ワード

環境:win 7,ruby 1.9.3 p 392(私を軽蔑して、winの下でrailsをいじって死ぬのではありませんか、ただ时にはlinuxを切るのがおっくうで、いいでしょうただたまにwinを使ってやはりそれが走ることができることを望みます.)
本明細書の方法1は、windowsプラットフォームによるcコンパイラによる各種gemのインストール失敗(fast-stemmer,rdiscount,curbなど)の解決にも同様に適用される.
エラー:1つのrails projectでbundle installを実行する(またはoctopressブログを作成するときにbundle installを実行する)他のgemは正しくインストールできますが、jsonでは不明なエラー=.
次のようになります.
 
Installing json (1.7.7)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
	C:/Ruby193/bin/ruby.exe extconf.rb
creating Makefile
make 
generating generator-i386-mingw32.def
compiling generator.c
In file included from c:/Ruby193/include/ruby-1.9.1/ruby.h:32:0,
		 from ../fbuffer/fbuffer.h:5,
		 from generator.c:1:
c:/Ruby193/include/ruby-1.9.1/ruby/ruby.h:109:14: error: size of array 'ruby_check_sizeof_voidp' is negative
...//    n =。=

 
各种の资料を调べて、ついにこれがjsonがcのコンパイラを采用した原因であることを発见して、方法1:soの上でこの问题の解决http://stackoverflow.com/questions/7780756/cannot-install-json-gem-in-rails-using-windowsを见てくださいこの言い方によって、Devkitを诘めてすむのでさえすれば、リンクをダウンロードします:http://rubyinstaller.org/downloads/用法https://github.com/oneclick/rubyinstaller/wiki/Development-Kit
はい、私は間違っています.方法2は根本を治さないだけです.fast-stemmerのgemに出会ったとき(octopressが使います)は間違っています.上のwikiの使い方は結局この問題を解決しました.一歩一歩辛抱強く見てください.
肝心ないくつかのステップ:devkitダウンロードは4.5.2バージョン、つまりダウンロードインタフェースが与えた最初のバージョンです.
ruby rakeを実行します.rb installエラー時(skipping because of existing gemsとは何か)は実行するだけです
ruby rake.db install--forceでいいです.
検査方法:gem install json--platform=ruby
インストールに成功し、with native extensionsのメッセージを見るべきです(どうせ私のところは中国語のようですが、原因がまた間違っています=.=)
次に、ruby-rubygems-e"require'json';puts JSON.load('[42]').inspect"を実行します.
出力すべき[42]
これで大功を成し遂げた~
方法2:どうせlinuxを切るのはp事ではない.jsonの服装はあまりよくない.だからwinの下でrailsをいじるな!!!しかし私は昨夜新しい方法を見つけて、純粋なrubyで書いたjson_pureはjsonに代わって、具体的な方法は以下の通りです:作業ディレクトリの下でgemfileを見つけます.lock、テキストエディタで開き、json 1.7を見つけます.7をjson_に変更pure 1.7.7その後bundle installを実行し、your bundle is completeで完了します.(rubygems.org不安定を考慮して推奨http://ruby.taobao.orgのgem)
ここは速度に対する需要を犠牲にして、結局cは走るのが少し速い=.=よい方法ではない
また、ヤアンは頑張って、彼らのために祈っています.