Установите Ruby Curb gem в windows XP
Я пытаюсь сделать загрузку файлов с ruby 1.8, и кажется, что нет хороших готовых решений. Все они, похоже, нуждаются в каком-то стороннем патче или вилке проекта для работы. Я бы использовал mechanize, но мне действительно нужно взаимодействовать с XML api, и mechanize, похоже, специально для работы непосредственно с веб-страницами. Я пробовал RestClient, но у него нет этой функциональности для составных форм из коробки, вы должны использовать вилку проекта, чтобы заставить его работать. Похожие ситуации, похоже, существуют для Net: HTTP Я думаю, что curb будет способом пойти, так как я могу использовать multicurl в любом случае для некоторых других вещей, которые я планирую сделать. Однако на моей машине windows я не могу установить драгоценный камень бордюра. gem install curb дает ошибку, говоря, что мне нужно указать, где живет библиотека curl.. Я пробовал передавать варианты extconf, но пока не повезло. Вот выход gem install curb без каких-либо опций
C:rubylibrubygems.8gemscurb-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
любые идеи, как я могу получить это работа?
11 ответов
Мэтт,
У меня были проблемы с установкой бордюрного камня в Windows раньше. Пытаясь увидеть, как другие решили это, я столкнулся с множеством вопросов и не очень много решений. Сделать это снова Сегодня вечером я решил документировать свои шаги и результаты: http://beginrescue.blogspot.com/2010/07/installing-curb-with-ruby-191-in.html
извините за blogspam, надеюсь, это кому-то полезно.
пит
в конечном счете, в win7 с ruby 1.9.1 для меня работало следующее (Где пути должны быть обновлены, чтобы отразить местоположение (и версию) вашей версии 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"
Это займет несколько минут, поэтому будьте терпеливы.
Я использовал конфигурацию установки Эвана в его ответе с правильным двоичным файлом libcurl от мастера:http://curl.haxx.se/dlwiz/
самоцвет устанавливает обочину -- --с-curl-lib="C:/curl/curl-7.21.1-devel-mingw32/bin" --with-curl-include="C:/curl/curl-7.21.1-devel-mingw32/include"
этот работал для меня на Win XP 64 бит.
обязательно выберите libcurl с описанием о том, что является двоичным для программного обеспечения libcurl развитие.
глядя на основную проблему вы пытаетесь решить. Я искал клиента multpart-post раньше и потратил много времени, пробуя различные драгоценные камни/инструменты. Единственным, кого я нашел удовлетворительным, был Ник 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
Как я уже прокомментировал, Я нашел решение, которое просто использовало rest-client, предоставленный в GitHub gems.. gem install rest-клиент сделаю работу. Оттуда вы можете сделать многотомный пост, который может содержать 1 или более файлов.. Он обладает всей гибкостью, которая может понадобиться в rest-клиенте. См. документацию здесь:http://rdoc.info/projects/archiloque/rest-client для примеров о том, как его использовать.
единственное, что я обнаружил, что это не правильно разбирал печенье. Печенье моя компания использует могут иметь знаки равенства в ценности и не разбирать их. Я поставил некоторые хаки, чтобы обойти проблему, но в конце концов это вернулось, чтобы укусить меня.. Поэтому буквально на днях я начал анализировать код от Mechanize / WEBrick и смог использовать CookieJar от Mechanize для управления куки-файлами от rest-client.. Надеюсь, я смогу заставить автора rest-client встроить эту функциональность в rest-client, чтобы другие не у меня те же проблемы, что и у меня..
для Windows 8 команда:
gem install curb -- --with-curl-lib=C:/Utils/curl-7.32.0-dev/lib64 --with-curl-include=C:/Utils/curl-7.32.0-dev/include
и он почти устанавливается. Теперь есть предупреждения/ошибки" неопределенная ссылка"
Это тоже работает, на Windows 10 x64:
самоцвет устанавливает обочину -- --с-curl-lib="C:/Users/WindowsVM/binaries/curl-7.40.0-devel-mingw64/lib64" --with-curl-include="C:/Users/WindowsVM/binaries/curl-7.40.0-devel-mingw64/include"
когда вы говорите, что передали параметры конфигурации extconf.rb, вы имели в виду в команде gem install?
Если нет, я считаю, что это будет что-то вроде
gem установить бордюр -- --с-curl-dir=dir
Это может быть другой вариант конфигурации, но ... это немного нужно передать ему параметры.
потратив на это много времени, я сдаюсь...
ответы, приведенные выше, не работают для меня, и некоторые из ссылок "curl" сломаны, я даже не могу загрузить с официального сайта.
то, что я хочу, довольно просто: установите curb gem На cygwin.
теперь я переключился на VirtalBox и установил на нем сервер Ubuntu. затем я устанавливаю его за 20 минут без каких-либо проблем.
Итак, люди, работающие под cygwin, давайте перейдем к Виртуальная Машина!
я попробовал все решения выше, и ничего не получилось, я сдался, но, к счастью, позже наткнулся на этот пост http://jooglar.com/edely/content/installing-libcurl-ruby-windows и инструкции там работали отлично.
вот направления, в случае, если сайт идет брюхом вверх:
1. Загрузите версию библиотеки "libcurl"
От http://curl.haxx.se/dlwiz/?type=lib
2. Установить где угодно, но путь не может содержать пробелы.
Убедитесь, что при распаковке файла вы найдете каталоги "bin"и " include"
3. Добавьте путь libcurl (оканчивающийся на /bin;) в систему PATH
переменная
предупреждение: использовать /
ВМЕСТО \
в пути. На пути не должно быть пробелов. Для образец:
C:/curl/curl-7.26.0-devel-mingw32/bin;
4. Установить gem
предупреждение: ЕЩЕ РАЗ, ИСПОЛЬЗУЙТЕ /
ВМЕСТО \
в пути. Смотреть выше.
командной например: 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-...
, это был gotcha для меня.]
на данный момент это должно сработать. У меня получилось. Если это не так, вы можете попробовать остальные инструкции:
если это не работа, скопируйте следующее .dll
файлы в каталог ruby/bin и снова запустите предыдущую команду.
-
libcurl.dll
-
libssl32.dll
-
libeay32.dll
кроме того, если это не сработает...обновите DevKit и снова запустите предыдущую команду. Загрузите последнюю версию и с консоли перейдите в каталог DevKit и запустите
ruby dk.rb install --force