Моя команда столкнулась с этой проблемой при обновлении нашего приложения до Rails 5.2.Мы не используем Heroku, поэтому это проблема с Rails в целом вместо Heroku.
При запуске любого файла Ruby с rails runner
мы обнаружили, что __FILE
будет использовать абсолютный путь, если ENV["RAILS_ENV"]
было установлено "test" или "production", но использовать относительный путь, если установлено "development" или не задано.Интересно, что если бы вместо среды был установлен флаг -e
, то __FILE__
всегда использовал бы относительный путь.
Мы обнаружили, что удаление bootsnap
в качестве зависимости решило проблему для нас.Это также означает, что вам придется удалить строку require "bootsnap/setup"
из config/boot.rb
.
Похоже, что может быть ошибка, связанная с тем, что Rails и Bootsnap одновременно читают переменные среды и каким-то образом перезаписывают то, как устанавливает Ruby__FILE__
.Не стесняйтесь отслеживать эту проблему: https://github.com/rails/rails/issues/36550