Вы заставляете Ruby, установленный Apple, запускаться, то есть Ruby 1.8.7:
#!/usr/bin/ruby -w
вместо одного из ваших Ruby, управляемых RVM.Попробуйте:
#!/usr/bin/env ruby -w
Таким образом, если вы хотите, чтобы ваша система Ruby запускала код, вы можете указать RVM переключиться на него:
rvm use system
, и он ответит: Now using system ruby.
В качестве альтернативы вы можете использовать любой из управляемых RVM Ruby для запуска кода:
rvm 1.8.7
, если у вас RVM установлен экземпляр 1.8.7 или
rvm 1.9.2
или
rvm default
, если вы устанавливаете Ruby по умолчанию для RVM, что всегда является хорошей идеей:
rvm use 1.9.2 --default
Вы можете проверить, какие версии Ruby RVM находятся под его контролем:
$ rvm list
rvm rubies
ruby-1.8.7-p334 [ x86_64 ]
=> ruby-1.9.2-p180 [ x86_64 ]
Теперь, переходя к реальному коду, у вас есть ошибка.При попытке получить цену за элемент вы ищете неправильный CSS, не находя ценовой узел, получая значение nil
, а затем пытаясь получить text
от него.Используйте это вместо:
price = item.at_css(".camelPrice").text[/\$[0-9\.]+/]
Ваш вывод будет выглядеть примерно так:
Fisher-Price Power Wheels Batman Lil Quad Ride-On
- $59.97
/ip/Fisher-Price-Batman-Lil-Quad/10098697
После внесения изменения в строку #!
и исправления в строку price
,Я запустил ваш код, используя Ruby 1.8.7 в моей системе, вместе с управляемыми RVM 1.8.7 и 1.9.2 без проблем.