Ответ 1
С помощью запроса поддержки Heroku и этот вопрос я нашел решение.
Ruby 1.9.2 автоматически не включает "." в $LOAD_PATH. Чтобы обойти это, измените config.ru
, указав require './sinatratestapp'
вместо require 'sinatratestapp'
.
Я пытаюсь запустить приложение Heroku с помощью стека bamboo-mri-1.9.2
. Конечно, он работает нормально на Ruby 1.9.2. Но когда он запускается, он запускается при запуске при выполнении config.ru
, который выглядит следующим образом:
require 'sinatratestapp'
run Sinatra::Application
Мой .gems
файл:
sinatra --version '>= 1.0'
И само приложение как sinatratestapp.rb
:
require 'rubygems'
require 'sinatra'
get '/' do
"Hello from Sinatra on Heroku!"
end
Это все, что у меня есть в проекте, и пытаюсь запустить это на результатах Heroku:
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- sinatratestapp (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require'
from config.ru:1:in `block (3 levels) in <main>'
...
-----> Your application is requiring a file that it can't find.
Most often this is due to missing gems, or it could be that you failed
to commit the file to your repo. See http://docs.heroku.com/gems for
more information on managing gems.
Examine the backtrace above this message to debug.
Я пытался делать то, что он руководил, но как Ruby noob мои экзамены ничего не привели.
С помощью запроса поддержки Heroku и этот вопрос я нашел решение.
Ruby 1.9.2 автоматически не включает "." в $LOAD_PATH. Чтобы обойти это, измените config.ru
, указав require './sinatratestapp'
вместо require 'sinatratestapp'
.
Вы можете поместить следующую строку в свой файл config.ru, и она также устранит проблему. Это также будет иметь широкое применение, поэтому это вызовет ощущение поведения до 1.9.2:
$LOAD_PATH.unshift(Dir.getwd)
ПРИМЕЧАНИЕ. Я не смог проверить на Heroku
МОЯ ПРОБЛЕМА: Как единорог вести себя корректно с помощью приложения rubat < 1.9.2 sinatra без Gemfile, config.ru или config/unicorn.rb.
Я считаю, что столкнулся с этой проблемой, когда экспериментировал с Sinatra. Ruby 1.9 не включает текущий каталог по пути по умолчанию, поэтому вам нужно косвенно указать require 'sinatratestapp'
в нашем config.ru
файле.
Спасибо за подсказку. Не было упоминания файла .gems в сообщении Heroku http://blog.heroku.com/archives/2009/3/5/32_deploy_merb_sinatra_or_any_rack_app_to_heroku/
Мои проекты Sinatra имеют одинаковую компоновку и выглядят примерно одинаково, с той лишь разницей, что в моем файле .gems я не указываю версию.
my.gems выглядит следующим образом:
sinatra
hpricot