Язык ввода-вывода: Исключение: объект не отвечает на URL

Сегодня я использую пример "семь языков за семь недель".

Пример кода:

futureResult := URL with("http://google.com/") @fetch
writeln("Do something immediately while fetch goes on in background...")

writeln("This will block until the result is available.")

writeln("fetched ", futureResult size, " bytes")

Запуск за исключением:

Io$ io future.io

  Exception: Object does not respond to 'URL'
  ---------
  Object URL                           future.io 1
  CLI doFile                           Z_CLI.io 140
  CLI run                              IoState_runCLI() 1

Непосредственно запустить URL в IO со следующей ошибкой:

~$ io
Io 20110905
Io> URL

  Exception: Object does not respond to 'URL'
  ---------
  Object URL                           Command Line 1

Io> 

Моя среда это:

Убунту 14.04

2 ответа

Решение

Следуя посту, я сделал следующее:

$ sudo apt-get install libevent-dev
$ ./build.sh
$ ./build.sh install

Ошибка URL исправлена. Но выдается следующая ошибка:

Сделайте что-нибудь немедленно, пока выборка продолжается в фоновом режиме... Это будет блокировать, пока результат не станет доступен. исключение: Ошибка не отвечает на размер --------- Размер ошибки
future.io 6 Размер ошибки future.io 6 CLI doFile Z_CLI.io 140 CLI запускается
IoState_runCLI() 1

Пост помогите установить Io

Для всех, кто, как и я, спустя годы столкнулся с этой проблемой (или любой другой проблемой «Исключение: объект не отвечает на X»), следуя вместе с Брюсом Тейтом «Семь языков за семь недель», решение может быть следующим :

Есть некоторые объекты/библиотеки, которые, судя по документации, должны быть включены в ядро ​​Io, но это не так. Вы должны установить их как аддоны с жутким.

Для этого следуйте инструкциям здесь. По сути, вам нужно найти правильный аддон в группе IoLanguage на Github и установить его.

Эта конкретная проблема с объектом URL еще больше осложняется парой проблем, о которых я расскажу ниже.

  1. Надстройки для URL нет, вместо этого функциональность для URL покрывается надстройкой под названием Socket (находится здесь ).
  2. Чтобы получить жуткую установку Socket, вам сначала нужно установить что-то под названием libevent. Я сделал это, зайдя на веб-сайт libevent , загрузив самую последнюю стабильную версию, распаковав файлы в каталог, а затем следуя инструкциям по сборке libevent с помощью CMake на странице libevent на github.
  3. Объект Socket, похоже, не поддерживает https. Количество веб-сайтов, которые все еще используют http, сокращается. Google, веб-сайт, использованный в примере в книге «Семь языков за семь недель» , отказался от http много лет назад. Первый веб-сайт, который мне удалось найти, который все еще использует http, — это китайский новостной веб-сайт , но вы можете найти и другие примеры, погуглив «Веб-сайты, все еще использующие http».

После учета всех этих проблем я, наконец, заставил свою версию кода работать.

      url := URL with("http://xinhuanet.com/")
// Had to find a website still using http, https is unsupported by Socket.
futureResult := url @fetch
// Moved this call to own line for personal clarity
writeln("Do something immediately while fetching.")
writeln("The below statement will block until the result is available.")
writeln("fetched ", futureResult size, " bytes") // Blocks until complete

И мой вывод выглядит так:

      Do something immediately while fetching.
The below statement will block until the result is available.
fetched 99992 bytes
Другие вопросы по тегам