Приложение Heroku не запускается - `require ': такой файл не загружается - sinatratestapp (LoadError) - PullRequest
12 голосов
/ 20 октября 2010

Я пытаюсь запустить приложение 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.

Я пытался делать, как это следует, но какРубин нуб мои экзамены ничего не привели.

Ответы [ 5 ]

38 голосов
/ 20 октября 2010

С помощью запроса в службу поддержки Heroku и этого вопроса я нашел решение.

Ruby 1.9.2 автоматически не включает "."в $ LOAD_PATH.Чтобы обойти это, измените config.ru, указав require './sinatratestapp' вместо require 'sinatratestapp'.

3 голосов
/ 03 марта 2011

Вы можете поместить следующую строку в файл config.ru, и это также исправит проблему. Это также повлечет за собой широкое применение приложения, поэтому оно вернет ощущение поведения до 1.9.2:

$ LOAD_PATH.unshift (Dir.getwd)

ПРИМЕЧАНИЕ: я не смог проверить на Heroku

МОЯ ПРОБЛЕМА: заставить единорога вести себя правильно с приложением (ruby <1.9.2) sinatra без Gemfile, config.ru или config / unicorn.rb. </p>

1 голос
/ 20 октября 2010

Мне кажется, я столкнулся с этой проблемой, когда экспериментировал с Синатрой. Ruby 1.9 по умолчанию не включает текущий каталог в путь, поэтому вы должны неявно указать require 'sinatratestapp' в нашем config.ru файле.

0 голосов
/ 13 декабря 2011

Спасибо за совет. В сообщении Heroku не упоминалось о файле .gems http://blog.heroku.com/archives/2009/3/5/32_deploy_merb_sinatra_or_any_rack_app_to_heroku/

0 голосов
/ 20 октября 2010

Мои проекты Sinatra имеют одинаковую структуру и выглядят примерно одинаково, единственное отличие состоит в том, что в моем файле .gems я не указываю версию.

мои .gems выглядит так:

sinatra
hpricot
...