2012-06-19 85 views
23

對於我的大型應用程序,Rails控制檯需要一段時間才能加載。有沒有辦法更簡單地單一命令?在控制檯之外運行Rails命令

我也想能夠自動化的東西,並echo "query" | rails console是不是一個偉大的方式來做事情。

想法?

編輯:如果我有需要的話,我可以查詢到一個長時間運行的過程呢?

+0

我很好奇你的用例是什麼,因爲它似乎有可能是一個更好的解決方案。 –

+0

我正在使用Geckoboard從正在運行的應用程序獲取統計信息,使用JSON提要我正在設置這些查詢......我是否完全錯誤? – tekknolagi

+0

將代碼直接構建到應用程序中並通過HTTP獲取數據可能更有意義。如果它是敏感信息,則需要某種授權,例如,一個帶有請求的API密鑰。 –

回答

39

有外界控制檯運行命令主要有兩種方式:

  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在別名後面發送命令。這種行動當然是完全不安全的,應該三重防範在靠近生產的任何地方跑步,但這會很容易設置。