5

私はレーキが初めてで、いくつかのタスクを自動化する方法を見つけようとしています。そこで、最初のrake タスクを書き、失敗しました。

namespace :app do
  desc "Leaves application like new"
  task :reset => :environment do
    Rake::Task['db:drop:all'].invoke
    Rake::Task['db:create:all'].invoke
    Rake::Task['db:migrate'].invoke
    Rake::Task['db:seed'].invoke
  end
end

これが機能しない理由を知りたいです。呼び出し後:

rake app:reset

すべて正常に実行され、次のような移行メッセージが画面に表示されます。

==  CreateGalerias: migrating =================================================
-- create_table(:galerias)
NOTICE:  CREATE TABLE will create implicit sequence "galerias_id_seq" for serial column "galerias.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "galerias_pkey" for table "galerias"
   -> 0.1191s
==  CreateGalerias: migrated (0.1194s) ========================================

しかし、最後に次のメッセージが表示されます。

You have 11 pending migrations:
  20110704052637 CreatePersonas
  20110709100632 CreateOrganizaciones
  20110709100646 CreateEventos
  20110816102451 CreateMembresias
  20110816155851 CreateCelebraciones
  20110822135820 ActsAsTaggableOnMigration
  20120410063100 CreateDocumentos
  20120507200516 CreateUsuarios
  20120515214226 ActivaUnnaccent
  20120516091228 CreateGalerias
  20120517004708 SetupHstore
Run `rake db:migrate` to update your database then try again.

データベースを移行しただけではありませんか? なぜそれについて不平を言っているのですか?

4

1 に答える 1

2

db:drop:all と db:create:all はすべての環境で動作しますが、db:migrate と db:seed は動作しないため、意図しない環境で移行している可能性があることに注意してください。db:drop:all を db:drop に、db:create:all を db:create に変更して、次のような特定の環境を指定してタスクを実行してみてください。

rake RAILS_ENV=production app:reset
于 2012-06-26T14:51:03.320 に答える