Openshift не может найти драгоценные камни
Я пытаюсь развернуть тривиальное приложение на устройстве, содержащем пакеты "Ruby 1.9" и "PostgreSQL 9.2". Похоже, развертывание прошло успешно. Когда я указываю свой браузер на сервер, я получаю Passenger "Приложение Ruby (Rack) не может быть запущено" с сообщением об ошибке "Не удалось найти rake-0.9.6 ни в одном из источников (Bundler::GemNotFound)". Ssh и "установка gem" не помогли (драгоценный камень установлен, но не там, где Пассажир может его найти - я не могу переместить его туда, где его хочет Пассажир, потому что у меня нет привилегий root). В соответствии с привилегиями Root для установки гемов ruby в Openshift, этот гем должен быть указан в моем Gemfile.lock. Я сделал это, и это не помогло. Вот мой config.ru:
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:password@some.gem.server.com/
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)
Этот пример отлично работает, когда я запускаю его на своем ноутбуке через "стойку". Я также могу развернуть это в Dokku. Код явно не ссылается на Thin (это то, что я хотел использовать, но я не против Пассажира).
Я также попытался использовать вместо этого "Advanced Ruby картридж" и указать Thin ("rhc env set OPENSHIFT_RUBY_SERVER=thin -a app_name"). На этот раз отправка результатов в "CLIENT_ERROR: Не удалось выполнить: 'control build'" с бесполезным предложением "--trace" (что не принято "gem push"). ssh Выполнение "gear postreceive --trace", кажется, зависает (на OS X), пока я не нажму клавишу, а затем я получу трассировку стека на стороне клиента. Когда я перезапускаю приложение из консоли, я получаю "Невозможно завершить запрошенную операцию" и "[31mbundler: команда не найдена: тонкий запуск -C ...". Странно, кажется, что Thin предназначен для включения в этот картридж. В любом случае, я указал это в Gemfile.lock (см. Выше), поэтому еще раз кажется, что драгоценные камни, которые я указываю в Gemfile.lock, не видны.