Openshift не может найти драгоценные камни

Я пытаюсь развернуть тривиальное приложение на механизме, содержащем пакеты «Ruby 1.9» и «PostgreSQL 9.2». Развертывание, похоже, прошло успешно. Когда я указываю свой браузер на сервер, я получаю Passenger "Приложение Ruby (Rack) не может быть запущено" с сообщением об ошибке "Не удалось найти rake-0.9.6 ни в одном из источников (Bundler::GemNotFound)". Ssh и "gem install" не помогли (гем установлен, но не там, где Пассажир может его найти - я не могу переместить его туда, куда Пассажир хочет, потому что у меня нет прав root). В соответствии с привилегиями root для установки ruby ​​gems на Openshift, gem должен быть указан в моем Gemfile .замок. Я так делал, и это не помогло. Вот мой конфиг.ру:

  require 'rubygems' 
  require 'bundler'
  $LOAD_PATH << './lib'
  ENV['DATABASE_URL'] = "#{ENV['OPENSHIFT_POSTGRESQL_DB_URL']}/phone_book"
  Bundler.require
  require 'phone_book/controllers'
  Ramaze.start(:root => Ramaze.options.roots, :started => true)
  run Ramaze

Вот мой Bundle.lock:

  GEM
    remote: https://anybody:[email protected]/
    remote: https://rubygems.org/
    specs:
      daemons (1.1.9)
      eventmachine (1.0.3)
      haml (4.0.4)
        tilt
      haml-contrib (1.0.0.1)
        haml (>= 3.2.0.alpha.13)
      innate (2012.03)
        rack (~> 1.4.1)
      mysql2 (0.3.15)
      pg (0.17.1)
      phone_book (0.0.0)
        haml (= 4.0.4)
        haml-contrib (~> 1.0.0)
        innate (= 2012.03)
        mysql2 (~> 0.3)
        pg (~> 0.17)
        rack (= 1.4.5)
        rake (= 0.9.6)
        ramaze (= 2012.04.14)
        sass (~> 3.3)
        sequel (~> 4.8)
        sqlite3 (~> 1.3.9)
        thin (~> 1.2)
      rack (1.4.5)
      rake (0.9.6)
      ramaze (2012.04.14)
        innate (>= 2012.03)
      sass (3.3.0)
        rake
      sequel (4.8.0)
      sqlite3 (1.3.9)
      thin (1.6.2)
        daemons (>= 1.0.9)
        eventmachine (>= 1.0.0)
        rack (>= 1.0.0)
      tilt (2.0.0)

  PLATFORMS
    ruby

  DEPENDENCIES
    phone_book (~> 0.0)

Этот пример отлично работает, когда я запускаю его на своем ноутбуке через «rackup». Я также могу развернуть это в Dokku. Код явно не ссылается на Thin (это то, что я хотел использовать, но я не возражаю против Passenger).

Я также попытался вместо этого использовать «Расширенный картридж Ruby» и указать Thin («rhc env set OPENSHIFT_RUBY_SERVER=thin -a app_name»). На этот раз отправка приводит к "CLIENT_ERROR: Failed to execute: 'control build'" с бесполезным предложением "--trace" (которое не принимается "gem push"). Выполнение ssh «gear postreceive --trace», кажется, зависает (в OS X), пока я не нажму клавишу, а затем я получу трассировку стека на стороне клиента. Когда я перезапускаю приложение из консоли, я получаю «Невозможно выполнить запрошенную операцию» и «[31mbundler: команда не найдена: тонкий старт -C…». Странно, похоже, что Thin предназначен для этого картриджа. В любом случае, я указал его в Gemfile.lock (см. выше), так что снова оказывается, что драгоценные камни, которые я указываю в Gemfile.lock, не видны.


person user3389408    schedule 11.03.2014    source источник
comment
Вы получаете какие-либо ошибки при git push? Вы видите, что он выполняет установку пакета, когда вы выполняете git push? какое конкретное сообщение об ошибке вы получаете? Есть ли код где-то вроде github, где другие могут попробовать его и посмотреть, в чем проблема?   -  person    schedule 12.03.2014
comment
Я поместил код приложения в github.com/entropicrune/phonebook_example, а код для его локального запуска в github.com/entropicrune/phonebook_deploy   -  person user3389408    schedule 12.03.2014
comment
git push сообщил об успехе для механизма Ruby 1.9 и не удалось для картриджа Advanced Ruby. Я сделал несколько репозиториев, указанных в комментарии к вопросу.   -  person user3389408    schedule 12.03.2014
comment
Я не вижу здесь никакого кода: github.com/entropicrune/phonebook_example   -  person    schedule 12.03.2014
comment
Извини! Не удалось нажать. Это там сейчас.   -  person user3389408    schedule 12.03.2014
comment
В дополнение к локальному выполнению и развертыванию на Dokku, я могу развернуть это на Heroku (при условии, что я сначала удалю зависимость sqlite3 и требую «sqlite3» в строке 6 из models.rb). Удаление sqlite3 допустимо, если вы не используете URL-адрес базы данных sqlite.   -  person user3389408    schedule 13.03.2014