config.gem требует гем?

У меня есть куча операторов config.gem в моем файле environment.rb:

config.gem "fastercsv", :version => "~>1.5.0"
  config.gem "parseexcel", :version => "~>0.5.2"
  config.gem "geokit", :version => "~>1.4.1"
  config.gem "facebooker", :version => "~>1.0.50"

...

Если я сделаю «rake gems: install», я получу эту проблему: rake aborted! нет такого файла для загрузки - fastcsv

Ну ... я знаю, что нет такого файла для загрузки, потому что я пытаюсь установить его. Я подозреваю, что это может произойти из-за местоположения моего запроса. У меня есть модуль в моей директории lib:

module SmartContactsImporter

  require 'fastercsv'
  require 'parseexcel'
...

Возможно, Rails не нравится, когда я требую гем, но это кажется глупым, поскольку нет ничего плохого в том, чтобы ваш модуль зависел от гема. Есть идеи, как решить эту проблему?

ОБНОВЛЕНИЕ Оказывается, что эта проблема также произошла с Mechanize, Geokit, и список продолжается. Немного странно, что config.gem не работает достаточно легко из коробки. К вашему сведению, я не замораживаю свои драгоценности.

12.10.2009 23:25:39
2 ОТВЕТА
РЕШЕНИЕ

Если вы пропустите требование, SmartContactsImporterэто должно сработать ( config.gem "fastercsv"выполнит требование для вас).

Вы можете обойти это, когда requireнеобходимо environment.rbс:

begin
  require "rack/cache"
rescue LoadError
  STDERR.puts "not loaded rack/cache: #{$!}"
end

Это некрасиво, но делает свое дело.

2
13.10.2009 00:58:03

Вы не должны требовать внутри вашего модуля, config.gem потребует это для вас.

Есть также связанная проблема с config.gem, когда он будет пытаться потребовать зависимый гем, который еще не установлен во время установки гемов, но, похоже, это еще не так.

0
13.10.2009 00:58:53