2010-11-12 7 views
0

Я требует ActiveSupport в сценарии Ruby, например, так:Использование ActiveSupport в Руби 1.9.2 не удается

require 'rubygems' 
require 'active_support/core_ext/hash' 

использовать some_hash.with_indifferent_access.

В Ruby 1.8, который работал хорошо, но Ruby 1.9 выдает следующее исключение:

<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- active_support/core_ext/hash (LoadError) 
    from <internal:lib/rubygems/custom_require>:29:in `require' 
    from backup.rb:3:in `<main>' 

Что такое правильный способ сделать это в Руби 1.9.2?

ответ

1

Во-первых, Ruby 1.9 включает rubygems уже, поэтому вам не нужно включать это.

Во-вторых, это работает отлично для меня под Ruby 1.9.1 и Ruby 1.9.2 с ActiveSupport 3.0.3. Вы уверены, что у вас есть нужный камень activesupport в той же среде Ruby, с которой вы тестируете? (Возможно, ruby --version и gem list могут показать что-то наперекосяк.)

+0

Я забыл упомянуть, что это происходит при попытке выполнить код в задании Cron. Теперь я завернул код в «bash -l -c», который должен загрузить всю среду и, надеюсь, правильные пути к gem ... будет отчитываться, если это сработает. –

+0

Нет, не получилось. $ PATH показывает, что все необходимые пути включены, но загрузка ActiveSupport все еще не работает ... Я взял ленивый маршрут и удалил «some_hash.with_indifferent_access» и требование ActiveSupport на данный момент. Любые идеи, и я был бы счастлив попробовать их ... :) –

2

Ран в этот же вопрос с рубином 1.9.2 и ActiveSupport 2.3.5. Ran gem update activesupport, обновленный до 3.2.9, и проблема исчезла.