Путь, начинающийся с /
, - это не относительный путь, это абсолютный путь. Там написано перейдите в корень и перейдите по следующему пути
Первый шаг - проверить, откуда запускается ваше приложение. то есть, что является текущим каталогом. Для этого временно поместите <%= Dir.pwd %>
в поле зрения и попробуйте это как локально, так и в Heroku, чтобы сравнить две среды.
Затем попробуйте относительный путь из этой папки к изображению. например Если приложение запускается с /Users/Tim/projects/game
, то относительный путь к общедоступному - просто public
, поэтому путь к изображению будет File.join('public', @imagename)
Если вам нужна дополнительная помощь, укажите значение Dir.pwd
в обеих средах
Вот еще один подход:
__FILE__
- это специальная переменная Ruby, которая указывает относительный путь к текущему файлу.
Используя это, в файле .rb, который запускает ваше приложение, задайте константу следующим образом:
APP_ROOT = File.dirname(__FILE__)
(аналогичная строка в config.rb приложения используется для установки RAILS_ROOT
в приложении Rails)
Тогда, по вашему мнению, вы можете использовать:
FileTest.exist?(File.join(APP_ROOT, 'public', @imagename))