Подтвердить что ты не робот

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
4b9b3361

Ответ 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 снова начал работать.

Спасибо!