7

これがバグなのか、それとも実際に migration.rb ファイルが削除されたのかはわかりません。generate を使用して、次の移行を作成しました。

$ rails generate migration add_delta_to_submissions

    invoke  active_record  
    create    db/migrate/20111020175649_add_delta_to_submissions.rb  

次に、列を含めるのを怠ったことに気付いたので、コンソールで上矢印を使用して、生成を破棄で上書きしました。

$ rails destroy migration add_delta_to_submissions

    invoke  active_record  
    remove    db/migrate/20111020175649_add_delta_to_submissions.rb  

ここまでは問題ありませんでしたが、今度は必要な列で移行を実行します。ここで問題が発生します-上向き矢印をもう一度使用しましたが、1回だけ-列情報を追加しました:

$ rails destroy migration add_delta_to_submissions delta:integer

    invoke  active_record  
    remove    migration.rb  

GENERATE や DESTROY のように不安定なコマンドに上向き矢印を使用するべきではないことはわかっていますが (教訓が得られました!)、そのコマンドは migration.rb ファイルを削除したことを示して戻ってきました。migration.rb ファイルがあることさえ知りませんでした。特に、簡単に削除できるファイルはありませんでした。

念のため、migration という単語の末尾に文字 x を追加して、コマンド コンソールをだますことにしました。すると、次のメッセージが表示されました。

$ rails destroy migrationx add_delta_to_submissions delta:integer

    Could not find generator migrationx.  

したがって、rails destroy コマンドにバグがある可能性があると思います。add_delta_to_submissions.rb ファイルがなくなったことに気付くと、それを切り取り、.rb の migration という単語 (または DESTROY の後の任意の単語) に追加しました。ちょっと危なそうです……。

それに関係なく、migration.rbファイルが削除されたので、RAILS環境(Rails 3.1、Ruby 1.8.7)が何らかの形で侵害されたかどうか知りたいです。もしそうなら - その状況を修正するための私のオプションは何ですか?

よろしくお願いします...

4

3 に答える 3

2

また、destroy コマンドのパラメーターとして存在しない移行名を入力した場合にも発生します。

$rails migration destroy non-existing-migration-name 

invoke    active_record
remove    migration.rb

でも無害だと思います。

于 2012-11-30T18:00:22.887 に答える
1

システムにgitがありますか?今日も同じことが起こり、私は走りました:

git diff | grep migration

私のシステムには何も出てきませんでした。ファイルを検索しましたが、Rails 3.1 プロジェクトのいずれにも migration.rb が見つかりませんでした。おそらく、何の害もなく無視できますか?

于 2011-12-15T03:59:32.677 に答える
0

同じことが私にも起こりました。

ActiveRecord内にmigration.rbファイルがあるようです。ActiveRecord::Baseを拡張することはできますが、railsプロジェクトディレクトリ内のどこかからこれらのファイルに実際にアクセスできるかどうかはわかりません。

自動railsdestroyコマンドではなく、手動で移行ファイルを削除する前例があるようです。

于 2013-01-09T01:53:24.420 に答える