2011-02-16 2 views
16

처음으로 heroku에 레일 3 앱을 배포하려고합니다. 그것은 확인을 밀어 보이지만 나는 다음과 같은 오류가heroku rake db : migrate>로드 할 파일이 없습니다. - faker

heroku rake db:migrate 

를 실행하려고하면

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

SampleApp::Application.load_tasks 
:

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 호선은 마지막입니다)

이제 faker gem을 사용하여 개발 데이터베이스에 샘플 데이터를 채우는 sample_data.rake라는 작업이 있는데 그 작업에는 다음 줄이 있습니다.

require 'faker' 

상단에는 문제의 원인이되어야합니다.

어떻게이 오류를 해결할 수 있습니까? 아니면이 작업 파일을 heroku가 무시할 수있는 방법이 있습니까? 어쨌든 난센스 샘플 데이터로 생산 버전을 채우기를 원하지 않을 것입니다. 그런데

는 사기꾼 내 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 

답변

21

이동이 (가) 작업에 문을 필요로한다. 예를

# 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 'faker', '0.3.1', :require => false 
+0

첫 번째 솔루션은 저에게 효과적이지 않았지만': require => false'를 추가하면 –

+0

첫 번째 솔루션이 효과적이었습니다. 너 락! – Jashwant

1

를 사용, 시몬의 첫 번째 방법은 작동하지 않았다,하지만 두 번째는 않았다 : require 'faker'가 레이크 파일에서 삭제할 수 있습니다.

1

너무 lib 디렉토리/작업/sample_data.rake 파일에 '사기꾼'을 필요로하고 (자식을 통해이 변경 내용을 커밋 후) 성공적으로 실행하기 위해 $heroku rake db:migrate --app <my app name>을 허용 Heroku가,에 파일을 밀어하고 heorku 사이트를 ERGO 주석 다시 일하기 시작했다.

감사합니다!

관련 문제