【问题标题】:heroku run rake > no such file to load -- fakerheroku run rake > 没有要加载的文件——faker
【发布时间】:2017-06-14 21:38:51
【问题描述】:

运行“heroku run rake”时出现此错误:

  no such file to load -- faker
/app/lib/tasks/sample_data.rake:1:in `require'
/app/lib/tasks/sample_data.rake:1:in `<top (required)>'

我有 gem 'faker', '0.3.1' 组 :development, :test 在 Gemfile 中做。

我在 sample_data.rake 中需要 'faker'

source 'https://rubygems.org'

gem 'rails', '3.2.11'
gem 'gravatar_image_tag', '0.1.0'

group :development, :test do
  gem 'sqlite3', '1.3.5'
  gem 'rspec-rails', '2.8'
 gem 'guard-spork', '1.2.0'
 gem 'faker', '0.3.1'
  gem 'spork', '0.8.4'
  gem 'will_paginate', '3.0'
gem 'webrat', '0.7.1'
 gem 'capybara', '1.1.2'
gem 'annotate', '2.5.0'
gem 'factory_girl_rails', '1.0'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.5'
  gem 'coffee-rails', '3.2.2'
  gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.2'

group :production do
  gem 'pg', '0.12.2'
end

【问题讨论】:

  • 能否请您包含您的 gemfile
  • 我刚刚将 gemfile 添加到原始帖子中

标签: ruby-on-rails heroku


【解决方案1】:

Heroku 默认不安装 testdevelopment gems。

如果您想在您的生产中加载fake,您应该从group :development, :test do 中删除gem 'faker', '0.3.1' 并将其放在任何组之外:

  source 'https://rubygems.org'
  gem 'rails', '3.2.11'
  gem 'gravatar_image_tag', '0.1.0'
  gem 'faker', '0.3.1'

  group :development, :test do
  gem 'sqlite3', '1.3.5'
  ...

但是,如果您不想加载fake,则必须确保仅在调用任务时才需要您的require fake

task :sample_data => :environment do
  require 'faker'  #must be inside the task.
  ...
end

希望对你有帮助。

编辑

您可以通过以下方式告诉 Bundler 不加载 Gem:

 gem 'faker', '0.3.1', :require => false

【讨论】:

  • 按照您在发布原始帖子之前的说明,我已将 raker 置于群组之外。我仍然收到同样的错误。刚才又做了一遍检查。
  • 你想在你的作品中加载faker吗?
  • 不生产,只开发。
【解决方案2】:

我在“Rub on Rails 3 教程”中遇到了这个问题。 根据 gabrielhilals 的回答,解决方法是将 require 'faker' 移到任务内部

修复前:

require 'faker'
namespace :db do
  desc "Fill database with sample data"
  task :populate => :environment do
    ...
    ...
  end
end

修复后:

namespace :db do
  require 'faker'
  desc "Fill database with sample data"
  task :populate => :environment do
    ...
    ...
  end
end

【讨论】:

    猜你喜欢
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2011-06-09
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多