8

ruby 1.8 でファイルのアップロードをしようとしていますが、すぐに使える優れたソリューションがないようです。それらはすべて、サードパーティのパッチまたはプロジェクトのフォークが機能する必要があるようです。私は mechanize を使用しますが、実際には xml API とやり取りする必要があり、mechanize は Web ページを直接処理するために特別に作成されているようです。私はRestClientを試しましたが、すぐに使えるマルチパートフォームの機能はありません。プロジェクトのフォークを使用して機能させる必要があります。同様の状況が Net:HTTP にも存在するようです。私が計画している他のことのためにマルチカールをとにかく使用したいかもしれないので、縁石が行くべき道だと思います。ただし、私の Windows マシンでは、curb gem をインストールできないようです。gem install curb で、curl ライブラリの場所を指定する必要があるというエラーが表示されます。オプションを extconf に渡そうとしましたが、今のところ成功していません。これは、オプションなしの gem install curb の出力です

C:\ruby\lib\ruby\gems\1.8\gems\curb-0.5.4.0>gem install curb
Building native extensions.  This could take a while...
ERROR:  Error installing curb:
        ERROR: Failed to build gem native extension.

C:/ruby/bin/ruby.exe extconf.rb
checking for curl-config... no
checking for main() in curl.lib... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --srcdir=.
        --curdir
        --ruby=C:/ruby/bin/ruby
        --with-curl-dir
        --without-curl-dir
        --with-curl-include
        --without-curl-include=${curl-dir}/include
        --with-curl-lib
        --without-curl-lib=${curl-dir}/lib
        --with-curllib
        --without-curllib
extconf.rb:12:   Can't find libcurl or curl/curl.h (RuntimeError)

  Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
  options to extconf.


Gem files will remain installed in C:/ruby/lib/ruby/gems/1.8/gems/curb-0.5.4.0 for inspection.
Results logged to C:/ruby/lib/ruby/gems/1.8/gems/curb-0.5.4.0/ext/gem_make.out

これを機能させる方法はありますか?

4

11 に答える 11

18

マット、

以前、Windowsに縁石の宝石をインストールするのに問題がありました。他の人がこれをどのように解決したかを見ようとして、私は多くの質問に出くわしましたが、あまり多くの解決策はありませんでした。今夜もう一度やらなければならないので、自分の手順を文書化して結果を投稿することにしました:http: //beginrescue.blogspot.com/2010/07/installing-curb-with-ruby-191-in.html

blogspamについて申し訳ありませんが、これが誰かに役立つことを願っています。

ピート

于 2010-07-06T04:55:33.670 に答える
4

最終的に、ruby 1.9.1を使用するwin7では、次のことが機能しました(curlバージョンの場所(およびバージョン)を反映するようにパスを更新する必要があります(http://curl.haxx.se/downloadから取得できます)。 .html#Win32))

gem install curb -- --with-curl-lib="C:/curl/curl-7.21.1-devel-mingw32/bin" --with-curl-include="C:/curl/curl-7.21.1-devel-mingw32/include"

これは処理に数分かかりましたので、しばらくお待ちください。

于 2012-03-27T20:55:51.767 に答える
3

ウィザードの正しいlibcurlバイナリを使用して、彼の回答でEvanのインストール構成を使用しました:http: //curl.haxx.se/dlwiz/

gem install curb --- with-curl-lib = "C:/curl/curl-7.21.1-devel-mingw32/bin" --with-curl-include = "C:/curl/curl-7.21.1 -devel-mingw32 / include "

これは、WindowsXP64ビットでうまくいきました。

libcurlソフトウェア開発用のバイナリであることについての説明とともにlibcurlを選択してください。

于 2012-08-15T18:18:12.473 に答える
1

すでにコメントしたように、githubgemsで提供されているrest-clientを使用するだけの解決策を見つけました。geminstallrest-clientで作業が完了します。そこから、1つ以上のファイルを含むことができるマルチパート投稿を行うことができます。それは、RESTクライアントで必要となる可能性のあるすべての柔軟性を備えています。 使用方法の例については、 http: //rdoc.info/projects/archiloque/rest-clientのドキュメントを参照してください。

正しく機能しないことがわかったのは、Cookieの解析だけでした。私の会社が使用しているCookieは、値に等号が含まれている可能性があり、正しく解析されません。この問題を回避するためにいくつかのハックを入れましたが、最終的にはそれが戻ってきました。先日、Mechanize / WEBrickのコードの分析を開始し、MechanizeのCookieJarを利用して残りのCookieを管理することができました。 -client ..うまくいけば、rest-clientの作成者にこの機能をrest-clientに組み込んでもらい、他の人が私と同じ問題を抱えないようにすることができます。

于 2010-08-23T05:47:57.260 に答える
1

解決しようとしている根本的な問題を調べます。以前、マルチパート ポスト クライアントを探していて、さまざまな gem/tools を試すのに多くの時間を費やしました。私が満足に機能することがわかった唯一のものは、Nick Siegers multipart-post gemでした

とても使いやすかったです、おすすめです。

これが私のテスト用に作成したサンプルコードです

require "rubygems"
require 'net/http/post/multipart'

url = URI.parse('http://localhost:3000/mytest/1.xml')
File.open("c:/temp/readme.txt") do |jpg|
  req = Net::HTTP::Put::Multipart.new url.path,
    "mytest[attachment]" => UploadIO.new(jpg, "text/plain", "c:/temp/readme.txt")
  res = Net::HTTP.start(url.host, url.port) do |http|
    http.request(req)
  end
  puts res.inspect
end
于 2009-10-04T09:36:33.530 に答える
0

かなりの時間を費やした後、私はあきらめます...

上記の回答は私にはうまくいきません。また、「curl」リンクの一部が壊れており、公式 Web サイトからダウンロードすることさえできません。

私が望むのは非常に単純です: cygwin に縁石の宝石をインストールします。

ここで、VirtalBox に切り替え、Ubuntu サーバーをインストールしました。その後、問題なく 20 分でインストールできます。

ということで、cygwin を使っている人は仮想マシンに切り替えましょう!

于 2011-10-12T01:59:26.793 に答える
0

上記のすべての解決策を試してみましたが、何もうまくいきませんでした。あきらめましたが、幸いなことに、後でこの投稿http://jooglar.com/edely/content/installing-libcurl-ruby-windowsに出くわし、そこにある指示は完全に機能しました。

ウェブサイトがうまくいかない場合の指示は次のとおりです。


1. ライブラリの「libcurl」バージョンをhttp://curl.haxx.se/dlwiz/?type=lib
からダウンロードします。

2. どこにでもインストールしますが、パスにスペースを含めることはできません。
ファイルを解凍すると、ディレクトリ「bin」と「include」が見つかることを確認してください</p>

3. libcurl パス (/bin; で終わる) をシステムPATH変数
WARNING: USE /INSTEAD OF\に PATH に追加します。パスにスペースは使用できません。例えば: C:/curl/curl-7.26.0-devel-mingw32/bin;

4. gem をインストールします。
警告: PATH に/INSTEAD OFを使用してください。\上記を参照。

コマンド例:gem install curb -- --with-curl-lib=C:/curl/curl-7.26.0-devel-mingw32/bin --with-curl-include=C:/curl/curl-7.26.0-devel-mingw32/include


[NB:--以前のスタンドアロンに注意--with-...してください。これは私にとって落とし穴でした。]

この時点で、動作するはずです。それは私のために働いた。そうでない場合は、残りの手順を試すことができます。


うまくいかない場合は、次の.dllファイルを ruby​​/bin ディレクトリにコピーして、前のコマンドを再度実行します。

  • libcurl.dll
  • libssl32.dll
  • libeay32.dll

また、それが機能しない場合は、DevKit を更新して、前のコマンドを再度実行してください。最新バージョンをダウンロードし、コンソールから DevKit ディレクトリに移動して実行します ruby dk.rb install --force

于 2013-06-23T16:31:08.670 に答える
0

以下のコマンドの実行とその動作

gem install 縁石 --platform=mswin32

于 2010-09-22T20:41:09.683 に答える
0

構成オプションを extconf.rb に渡したというのは、gem install コマンドのことですか?

そうでない場合は、次のようなものになると思います

gem install curb -- --with-curl-dir=dir

これは別の設定オプションかもしれませんが、 -- は設定オプションを渡すために必要なビットです。

于 2009-10-04T03:56:59.737 に答える