heroku rake db:migrate>没有这样的文件加载 - faker
问题描述:
我想部署一个rails 3应用程序到heroku第一次。这似乎推OK,但是当我尝试运行heroku rake db:migrate>没有这样的文件加载 - faker
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 gem用示例数据填充开发数据库,该任务包含以下行:
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
答
移动的要求语句转换成任务。 例如
# sample_data.rake
require 'faker'
task :sample_data => :environment do
# ...
end
到
# sample_data.rake
task :sample_data => :environment do
require 'faker'
# ...
end
这样,该库将仅在需要时被调用的任务。
另一种选择是在你的rake文件中不需要Faker。 事实上,Bundle在开发中执行时已经装载。
如果你不想捆扎机加载宝石,使用
gem 'faker', '0.3.1', :require => false
答
对我来说,Simone的第一种方法没有工作,但第二个做的:require 'faker'
可以从耙文件被删除。
答
我也注释掉需要“骗子”的lib /任务/ sample_data.rake文件(提交通过的git这种变化后)推文件的Heroku,这让 $heroku rake db:migrate --app <my app name>
成功执行,并ERGO的heorku网站再次开始工作。
谢谢!
第一个解决方案对我不起作用,但添加`:require => false`确实 – 2012-07-17 04:00:46