5

'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)>'

Gemfileのグループ:development、:testdoの下にgem'faker'、'0.3.1'があります。

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
4

2 に答える 2

10

Herokuは、デフォルトではインストールtestまたはgemを実行しません。development

本番環境にロードfakeする場合は、から削除gem 'faker', '0.3.1'して、group :development, :test doグループ外に配置する必要があります。

  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
于 2013-02-04T17:24:32.527 に答える
1

この問題は「RubonRails3チュートリアル」で発生しました。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
于 2014-01-11T10:34:30.887 に答える