Heroku rake db: migrate> нет такого файла для загрузки - faker
Я пытаюсь развернуть приложение rails 3 для heroku в первый раз. Кажется, он отжимается нормально, но когда я пытаюсь запустить
heroku rake db:migrate
Я получаю следующую ошибку:
rake aborted!
no such file to load -- faker
/app/98c71cc3-375f-4397-9de3-034dd7268be3/home/Rakefile:7
(See full trace by running task with --trace)
(in /app/98c71cc3-375f-4397-9de3-034dd7268be3/home)
Здесь мой rakefile (строка 7 является последней):
require File.expand_path('../config/application', __FILE__)
require 'rake'
SampleApp::Application.load_tasks
Теперь у меня есть задача, называемая sample_data.rake, которая использует камень faker для заполнения базы данных разработки с образцами данных, и эта задача имеет строку:
require 'faker'
наверху, что должно быть причиной проблемы.
Как я могу исправить эту ошибку или есть способ, которым я могу заставить герою игнорировать этот файл задачи? Я все равно не хочу заполнять производственную версию бессмысленными образцами данных.
Кстати, faker активен только в среде разработки в моем gemsfile:
# gemfiles for the rspec testing environment
group :development do
gem 'rspec-rails', '2.5.0'
gem 'annotate-models', '1.0.4'
gem 'faker', '0.3.1'
end
Ответы
Ответ 1
Переместите инструкцию require в задание.
Например,
# sample_data.rake
require 'faker'
task :sample_data => :environment do
# ...
end
к
# sample_data.rake
task :sample_data => :environment do
require 'faker'
# ...
end
Таким образом, библиотека будет требоваться только при вызове задачи.
Другая альтернатива - не требовать Faker в вашем файле рейка.
Фактически, он уже загружен Bundler, когда пакет выполняется в процессе разработки.
Если вы не хотите, чтобы Bundler загружал Gem, используйте
gem 'faker', '0.3.1', :require => false
Ответ 2
для меня первый подход Simones не работал, но второй сделал: require 'faker'
можно удалить из файла рейка.
Ответ 3
Я тоже прокомментировал запрос "faker" в файле lib/tasks/sample_data.rake и (после совершения этого изменения через git) нажал файлы на герою, что позволило
$heroku rake db:migrate --app <my app name>
, чтобы успешно выполнить, и ergo сайт heorku снова начал работать.
Спасибо!