2012-06-19 18 views
23

私の大規模なアプリケーションでは、Railsコンソールのロードに時間がかかります。単一のコマンドをより簡単に行う方法はありますか?コンソールの外でRailsコマンドを実行する

私はまた、自動化できるようにしたいと思います。echo "query" | rails consoleはすばらしい方法ではありません。

思考?

EDIT:必要なときにいつでもクエリにpingを実行できますか?

+0

これはあなたのユースケースが何であるか不思議です。おそらくもっと良い解決策があるようです。 –

+0

Geckoboardを使用して実行中のアプリケーションから統計情報を取得しています.JSONフィードを使用しています。これらのクエリを設定しています...私は完全に間違っていますか? – tekknolagi

+0

このコードをアプリに直接作り、HTTP経由でデータを取得する方がいいでしょう。機密情報の場合は、何らかの承認が必要です(例:要求を伴うAPIキー。 –

答えて

39

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

  1. に依存rakeタスク:環境
  2. レールランナー(以前にスクリプト/ランナー)、例えば:

    $レールランナーは、 「クエリ」

はどちらもかなりよく、レールガイドに記載されています:http://guides.rubyonrails.org/command_line.html

btw:これらの方法はどちらもコンソールとして起動するのに同じ時間がかかりますが、非中立的な作業には便利です。中

18

ジャストパイプそれ:

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

今はその後、質問は元々ためSpringの、尋ねられたときよりもはるかに高速でなければなりません。すぐにはできませんが、アプリ全体をスピンアップするよりもずっと速いです。それは第二の下で実行する必要があり、高速車線のためにこれを使用します(あなたに必要なコマンドと仮定すると高速です):

echo 'puts Article.count' | spring rails c 

あなたが本当に単一長時間実行プロセスが必要な場合は、コントローラを作成することによってそれを行う簡単にできあなたがそれにPOSTしたものを単に実行し、エイリアスの背後にあるcurlを使ってコマンドを送信します。もちろん、このアクションは完全に安全ではなく、プロダクションの近くでどこからでも実行できるようにする必要がありますが、セットアップは簡単です。

関連する問題