0

テスト環境にシードする特定のもの、具体的にはCanCanのユーザーロールが必要です。しかし、開発中のすべてをロードしているようです。

lib / tasks / test _ seed.rake

namespace :db do
  namespace :test do
    task :prepare => :environment do
      Rake::Task["db:seed"].invoke
    end
  end
end

これは、bundle exec rake db:test:prepareを実行した後にseeds.rbを正しくプルします。

db / seeds.rb

admin = Role.create( { name: "admin" }, :without_protection => true)
user  = Role.create( { name: "user"  }, :without_protection => true)

if Rails.env.production? || Rails.env.development?

  admin = User.create!({ name:     "Admin",
                         email:    "admin@example.com",
                         password: "foobar",
                         password_confirmation: "foobar",
                         role_ids:  1 },
                         :without_protection => true)
  admin.confirm!    

  if Rails.env.development?

    48.times do |n|
      name  = Faker::Name.name
      email = "example-#{n+1}@example.com"
      password  = "foobar"
      fake = User.create!({ name:     name,
                            email:    email,
                            password: password,
                            password_confirmation: password },
                            :without_protection => true)
      fake.confirm!
    end
  end
end

すべて良さそうですが、それでは.......。

$ rails console test
Loading test environment (Rails 3.2.8)
  > User.first
User Load (1.0ms) SELECT "users".* FROM "users" LIMIT 1
  => #<User id: 1, email: "admin@example.com" ..................
  > Rails.env.development?
  => false

どうしたの?

4

4 に答える 4

0

開発環境とテスト環境で同じデータベースを使用している可能性があります。database.yml を確認してください

于 2012-11-11T12:45:30.840 に答える
0

まず、ターミナルで実行してみてください。 echo $RAILS_ENV

  • 表示されている場合testは、答えがあります。
  • config/database.ymlそうでない場合は、両方の環境で同じデータベースを使用しているかどうかを確認してください。

あなたも確認してくださいconfig/environment.rb

于 2015-09-29T12:53:25.077 に答える
0

実行してみてください:

$ RAILS_ENV=test rake db:seed

于 2015-09-29T12:45:12.733 に答える