heroku rake db: migrate> нет такого файла для загрузки - фейкер - PullRequest
16 голосов
/ 16 февраля 2011

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

Вот мой рэйкфайл (последняя строка 7):

require File.expand_path('../config/application', __FILE__)
require 'rake'

SampleApp::Application.load_tasks

Теперь у меня есть задача под названием sample_data.rake, которая использует гем faker для заполнения базы данных разработки примерами данных, и эта задача имеет строку:

require 'faker'

вверху, что должно быть причиной проблемы.

Как я могу исправить эту ошибку или есть способ, которым я могу заставить heroku игнорировать этот файл задачи? Я не собираюсь заполнять рабочую версию бессмысленными образцами данных в любом случае.

Кстати, 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

Ответы [ 3 ]

21 голосов
/ 16 февраля 2011

Переместите оператор требуемого в задачу.Например,

# sample_data.rake
require 'faker'

task :sample_data => :environment do
 # ...
end

до

# sample_data.rake
task :sample_data => :environment do
  require 'faker'

 # ...
end

. Таким образом, библиотека потребуется только при вызове задачи.

Другой вариант - не требоватьФейкер в вашем файле рейка.Фактически, он уже загружен Bundler, когда пакет выполняется в разработке.

Если вы не хотите, чтобы Bundler загружал Gem, используйте

gem 'faker', '0.3.1', :require => false
1 голос
/ 01 апреля 2012

Я тоже прокомментировал требование 'faker' в файле lib / tasks / sample_data.rake и (после принятия этого изменения с помощью git) отправил файлы в heroku, что позволило успешно выполнить $heroku rake db:migrate --app <my app name>, и, следовательно, на сайте heorkuснова начал работать.

Спасибо!

1 голос
/ 23 мая 2011

для меня первый подход Симоны не сработал, но второй сработал: require 'faker' можно удалить из файла rake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...