2012-08-24 104 views
2

我發現我一直在做的事:如何創建運行腳本/控制檯的ruby腳本,然後使用該環境運行命令?

bundle exec script/console 
<wait for console to load> 
require migration 
generate some data 

很多......,我想知道是否有辦法讓這一切在bash腳本或東西。所以我可以做./generatedata並讓它運行上述命令。

+1

爲什麼你想要一個'ruby'腳本?這可以通過'bash'腳本輕鬆完成,只是一系列命令。 –

回答

3

我發現自定義rake任務是一個非常棒的工具,當您有需要在rails環境中運行代碼的工作時。看看這個railscast http://railscasts.com/episodes/66-custom-rake-tasks

+1

+1,而且很容易實現 - 對於非交互式的重複任務(提示提示),我認爲這是首選解決方案。另外它可以通過rails-sh非常快速地運行。 –

3

如果你想在控制檯運行一次性命令,你可以使用rails runner命令。因此,如果你有一個./generatedata.rb腳本執行你想在控制檯執行的ruby命令,你可以調用rails runner ./generatedata.rb,它會在Rails環境下針對數據庫運行你的ruby腳本。或者,您可以將shebang行添加到./generatedata.rb腳本中:#!/usr/bin/env rails runner。然後您只需執行./generatedata.rb腳本,它將自動使用rails runner

+0

也+1,雖然我可能會使它成爲一項任務。一個原因是,作爲一項任務,它可以通過rake-sh輕鬆運行,這意味着它可以比命令行rails runner腳本快得多。 –

+0

你說得對。這是一種替代方案,當你真的做一個快速任務時,並不真的覺得它需要成爲一個耙子任務。但它並不經常發生,所以我同意通常一個耙子任務是要走的路。 – alexsanford1