Распаковка драгоценных камней [Rails 2.3.5] - PullRequest
5 голосов
/ 10 апреля 2010

В моем файле environment.rb определены следующие гемы:

  config.gem "authlogic"
  config.gem "paperclip"
  config.gem "pauldix-feedzirra", :lib => "feedzirra", :source => "http://gems.github.com"
  config.gem 'whenever', :lib => false, :source => 'http://gemcutter.org/'

У меня они установлены на моем локальном компьютере, и все работает хорошо. Поскольку я работаю на общем сервере (DreamHost), мне нужно распаковать эти гемы, чтобы они заработали (не могу установить их, как я делал на своем компьютере, чтобы заставить их работать).

Перед загрузкой я запустил на локальном компьютере следующее:

rake gems:unpack

Это создало следующие папки в /vender/gems:

authlogic-2.1.3, paperclip-2.3.1.1, pauldix-feedzirra-0.0.18, whenever-0.4.1

Похоже, они все там.

Когда я запускаю rake db:migrate на сервере, я получаю следующую ошибку:

Missing these required gems:
  pauldix-feedzirra

По какой-то причине распакованный камень Фидзирры не обнаружен. Кто-нибудь может подсказать, почему это происходит, и потенциальное решение?

Спасибо!


РЕДАКТИРОВАТЬ: Спасибо, но код для помещения в environment.rb не работает, и упаковщик не будет правильно установлен на моем сервере. Любые другие предложения?

Ответы [ 4 ]

2 голосов
/ 10 апреля 2010

Это не совсем ответ, но так как я никогда не смог заставить config.gem работать должным образом, я рекомендую использовать Bundler , когда могу. Он просто работает и хорошо обрабатывает взаимозависимости между драгоценными камнями. Он также заменяет config.gem в Rails 3 из того, что я понимаю.

1 голос
/ 26 мая 2010

Я замечаю две вещи о feedzirra: во-первых, это зависит от 3 других драгоценных камней и, по крайней мере, от одного из этих сборочных расширений. И я собираюсь назвать это «feedzirra» - я не фанат непродуманного фиаско github по автоматической упаковке.

Если бы это было только первое, тогда бы rake gems: unpack: зависимостей добились цели.

Однако, по крайней мере, бордюр (от которого зависит feedzirra) строит расширения, и их просто нельзя распаковать. Вы можете либо заставить Dreamhost установить их (удачи), либо установить их в локальный каталог gem вашего пользователя.

Для этого вам нужно обновить ваш .gemrc и убедиться, что он содержит строку вроде: : user_install: true

Тогда рейк драгоценные камни: установить

Если ваша среда развертывания не позволит вам создавать исполняемые файлы, в этом случае вам придется раскошелиться на менее ограниченный пакет - я точно знаю, что Dreamhost действительно предоставляет пакеты, которые позволяют использовать гем-расширения.

(И есть отдельная проблема развертывания libcurl ...)

0 голосов
/ 19 апреля 2010

Не знаю, полезны ли мои подсказки, потому что feedzirra - это скомпилированное расширение (против CURL, я думаю). Лучшее решение - обычно установить на вашем сервере feedzirra gem (он сам скомпилируется).


Вы не установили (распаковал) камень feedzirra, но pauldix-feedzirra. Возможно, вам нужна распакованная корма тоже.

Попробуйте добавить

config.gem feedzirra

в environment.rb и запускать локально

rake gems:install
rake gems:unpack

Похоже, feedzirra распакованный камень отсутствует в /vendor/plugins. Посмотрите, будет ли скопирован там фидзирра после этих команд ...

0 голосов
/ 10 апреля 2010

Попробуйте подписать этот код в envoirment.rb

.
  config.load_paths += Dir["#{RAILS_ROOT}/vendor/gems/**"].map do |dir| 
    File.directory?(lib = "#{dir}/lib") ? lib : dir
  end
...