2012-06-19 14 views
23

Büyük uygulamam ile Rails konsolunun yüklenmesi biraz zaman alır. Tek komutlara daha kolay bir yol var mı?Konsolun dışındaki Rayları Çalıştır komutları

Ayrıca, işleri otomatik hale getirmeyi de çok isterim ve echo "query" | rails console, işleri yapmanın harika bir yolu değildir.

Düşünceler?

DÜZENLEME: İhtiyacım olduğunda sorguları ping yapabileceğim uzun süren bir işlemden ne haber?

+0

Bunun için kullanım durumunuzun ne olduğunu merak ediyorum, muhtemelen daha iyi bir çözüm olduğu anlaşılıyor. –

+0

Çalışan bir uygulamadan istatistikleri almak için Geckoboard kullanıyorum, bu sorgularla kurduğum bir JSON feed'i kullanıyorum ... tamamen yanlış mı yapıyorum? – tekknolagi

+0

Bu kodu doğrudan uygulamanıza yerleştirmek ve HTTP üzerinden verileri almak daha mantıklı olacaktır. Hassas bilgi ise, bir çeşit yetkilendirmeyi gerektirir. istek ile bir API anahtarı. –

cevap

39

konsolda dışında komutları çalıştırmak için iki ana yol vardır:

    bağlıdır
  1. Rake görev: Çevre
  2. raylar koşucu (daha önce komut/koşucu), örneğin:

    $ raylar runner "sorgu"

İkisi oldukça iyi raylar kılavuz üzerinde belgelenmiştir: http://guides.rubyonrails.org/command_line.html

btw: Bu yöntemlerin her ikisi de, bir konsolun ateş etmesinin aynı zamanını alacaktır, ancak bunlar, birleştirici olmayan görevler için kullanışlıdır.

18

Sadece boru içeri:

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

Artık nedeniyle Spring arasında, çok daha hızlı soru başlangıçta sorulduğunda sonra daha olmalıdır. Anında değil, yine de tüm uygulamayı hızlandırmaktan çok daha hızlı. o bir saniyenin altında çalışmalıdır, hızlı şeritte için bunu kullanın (sizin gerekli komutu varsayarak hızlı):

echo 'puts Article.count' | spring rails c 

Eğer gerçekten tek bir uzun süren süreç istiyorsanız, bir denetleyici oluşturarak bunu kolayca olabilir POST'a ne yaparsanız onu çalıştırır, sonra bir takma adın arkasına kıvrılarak komutlar gönderir. Eylem elbette tamamıyla güvensiz olacak ve üretimin yakınında herhangi bir yerde koşmaya karşı üçlü korumalı olmalıydı, ancak kurulumu kolay olacaktı.

İlgili konular