2011-05-25 70 views
3

這可能是一個愚蠢的問題,但我只是想知道在哪裏,或者它是否有可能運行一個ruby腳本,這與我希望它運行的rails應用程序無關。澄清,我正在開發一個主要用bash編寫的自動化測試套件,但我想創建一個允許其他用戶不通過命令行運行自動化測試的前端(我的rails應用程序)。所以我想基本上我想讓用戶從數據庫或表單字段中選擇某些參數,然後將這些參數傳遞給調用我的bash自動化腳本的ruby腳本。 我希望這很清楚。謝謝!在Rails應用程序中運行ruby腳本

回答

2

如果你想從一個rails應用程序調用腳本,它會變得複雜。你會希望使用後臺作業或某種類型的隊列來運行這些作業,因爲它們會阻止服務器,並且用戶將等待完成調用並加載結果,最有可能會超時。

請參閱delayed_job 並且您可能想嘗試在Ruby中創建一個可與應用程序接口的小包裝腳本。

祝你好運!

+0

感謝您的迴應,這是我甚至沒有想到的,但我首先想知道的是,我會在應用程序或控制器的模型部分中包含runner ruby​​腳本,還說我有我的ruby腳本保存爲一個單獨的文件,它應該存儲在哪裏? – mike 2011-05-25 22:42:48

+0

我會創建一個腳本,它有點與你自己的應用程序分開,感覺你的腳本如何與delayed_job進行交互很重要。或者你可以跳過這一步,直接使用delayed_job。請參閱延遲作業頁面上的示例以獲取更多信息。 – 2011-05-25 22:47:57

+0

謝謝德文我得到了我的基本應用程序,並正在通過delayed_job教程工作,我只是有幾個問題,說我從我的表單提交(我在控制器中創建def)我的參數後打電話給我的紅寶石腳本)和我的紅寶石包裝腳本是在my_app /腳本,我怎麼會從我的控制器調用該腳本? B)說如果我想從我的創建def來執行我的bash腳本,系統(「./ my_bash_script&」)會繞過對delayed_job的需求嗎? – mike 2011-05-26 01:48:14

2

短期任務,你應該使用systempopen

當任務不再那麼他們仍然需要在delayed_job

1

情況下,您可以添加腳本到腳本文件夾中的Rails應用程序的根目錄。啓動腳本是這樣的:

你的腳本可以[此處名稱] .RB

爲什麼我們在環境負荷的原因,所以我們可以在腳本中使用的軌道模式和軌道相關的東西:

#!/bin/env ruby 

ENV['RAILS_ENV'] = "production" # Set to your desired Rails environment name 
require '/[path to your rails app on your server]/config/environment.rb' 
require 'active_record' 

如果你想在你的服務器上運行它,那麼你必須在你的服務器上編輯你的crontab。或者你可以使用每當寶石(我有麻煩,但整個宇宙沒有)。相反,如果你有heroku,那麼有heroku調度程序,使運行腳本很容易。

相關問題