2014-01-31 4 views
0

Я запускаю приложение Rails 3.2, которое зависит от автономного gem, chilkat. (http://www.chilkatsoft.com/ruby.asp).Bundler and Heroku с автономными gems

Я получил эту работу по моей среде разработки, выполнив следующие действия:

  1. Распаковка камень в мой поставщик/папку драгоценных камней
  2. Добавление этой строки в моей Gemfile

    gem 'chilkat', '9.4.1', path: 'vendor/gems/chilkat-9.4.1-universal-darwin-12', require: false  
    

(Эти шаги были предприняты с How to use Bundler with offline .gem file?)

НО когда я нажимаю код на Heroku, то приложение падает с ошибкой:

/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:317:in `rescue in depend_on': No such file to load -- chilkat (LoadError) 

Вы знаете, что мне нужно сделать, чтобы получить драгоценный камень установлен должным образом на Heroku? Благодаря!

+1

Я думаю, что вы тоже можете сделать в героике, в вашем терминале выполните команду «heroku run bash» и выполните те же действия, что и вы сделали в разработке –

+1

, вам нужно указать полный путь и закрыть драгоценный камень под героем в ** Gemfile ** в состоянии. Покажите вам полный след –

ответ

0

Хорошо, я выяснил проблему. У драгоценного камня Chilkat, который я использую, есть версии, специфичные для ОС, а версия, которую я разделял в вендоров/драгоценных камнях, для OSx не будет работать на Heroku/AWS. Поэтому, даже если бы путь был корректным в Heroku, сам камень не стал бы.

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что драгоценный камень Chilkat имеет специфику ОС, Bundler будет генерировать файл Gemfile.lock, специфичный для ОС, на котором была вызвана установка пакета (OSx в моем случае). Этот OSx-специфичный Gemfile.lock несовместим с машинами AWS, поэтому Heroku жалуется, что я не могу нажать код, поскольку Gemfile.lock не соответствует ожидаемому.

Это, похоже, известная проблема с Bundler (How to add Mac-specific gems to bundle on Mac but not on Linux?). Я мог бы просто избежать Gemfile.lock, но мы полагаемся на управление зависимостями версий, которое предоставляет Gemfile.lock. И я не хочу, чтобы все разработчики в моей команде переключились на разработку на Linux/Unix. Во всяком случае, это отдельная проблема, поэтому я закрываю это пока. Спасибо людям, которые прокомментировали!

Смежные вопросы