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 прерван! нет такого файла для загрузки -- fastcsv

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

module SmartContactsImporter

  require 'fastercsv'
  require 'parseexcel'
...

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

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


person Tony    schedule 12.10.2009    source источник


Ответы (2)


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

Вы можете обойти это, когда require требуется в environment.rb с помощью:

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

Это некрасиво, но это помогает.

person cwninja    schedule 13.10.2009

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

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

person Ryan Bigg    schedule 13.10.2009