49

私の大きなアプリケーションでは、Rails コンソールの読み込みに時間がかかります。コマンドをより簡単に単一化する方法はありますか?

また、物事を自動化できるようにしたいecho "query" | rails consoleのですが、物事を行うのに最適な方法ではありません。

考え?

編集:必要なときにいつでもクエリをpingできる長時間実行プロセスはどうですか?

4

2 に答える 2

80

コンソール外でコマンドを実行するには、主に 2 つの方法があります。

  1. :environment に依存する Rake タスク

  2. rails runner (以前は script/runner)、例:

    $ rails runner "query"
    

どちらもレールガイドでかなりよく文書化されています: https://guides.rubyonrails.org/command_line.html#bin-rails-runner

ところで、これらの方法は両方とも、コンソールが起動するのと同じ時間がかかりますが、非対話的なタスクには役立ちます。

于 2012-06-20T00:07:36.450 に答える
44

パイプするだけです:

echo 'puts Article.count' | bundle exec rails c

Springのおかげで、質問が最初に尋ねられたときよりもはるかに高速になるはずです。即時ではありませんが、アプリ全体をスピンアップするよりもはるかに高速です。これを高速レーンに使用すると、1 秒未満で実行されます (必要なコマンドが高速であると仮定します)。

echo 'puts Article.count' | spring rails c

単一の長時間実行プロセスが本当に必要な場合は、POST を実行するだけのコントローラー アクションを作成し、エイリアスの背後で curl を使用してコマンドを送信することで、簡単に実行できます。もちろん、アクションは完全に安全ではなく、本番環境に近い場所で実行されないように 3 重に保護する必要がありますが、セットアップは簡単です。

于 2014-08-04T21:54:40.650 に答える