2014-07-07 53 views
2

我想運行我自己的函數,這些函數在Rails中放入我的~/.bashrc中,類似於調用環境變量的方式,例如, <%= ENV["EXAMPLE_VARIABLE"] %>〜我會在相似的背景下使用它。在Rails中運行自定義bash函數

我讀過一些關於這個主題的熱門問題(Calling Bash commands from Ruby; Execute Shell command from Ruby script),但我似乎無法將它們使用。

我想調用一個在我的~/.bashrc中加載的函數並返回它返回的值。我試過用irb進行測試,但我一直沒有找到方法找到錯誤,並且不知道我在做什麼。

實例函數來進行測試:

#! /bin/bash 

function get_custom_domain { 
    echo localhost 
} 
+0

你可以提出有問題的代碼,或者更精確地描述你想要完成的工作嗎? – dax

+0

我已經添加了一個示例函數來玩。我只是將函數本身添加到我的'〜/ .bashrc'中,並且(使用重新初始化的bash),它按照bash命令的預期工作。 – Jonathan

+1

+1個人資料圖片 – konsolebox

回答

1

壞實踐使用功能在任何rc文件rc == run control when bash load,創建單獨的.sh腳本,並把在軌道根目錄(或任何其他)我用這種方式爲我的bash腳本:

在RAILS_ROOT具有script.sh必須是可執行的(chmod +x script.sh):

#!/bin/bash 
if [ $1 -eq "1" ]; then 
    echo "Starting server"; 
    exit 0; 
fi 

if [ $1 -eq "2" ]; then 
    echo "Time for sleep"; 
    exit 0; 
fi 
從應用

和呼叫我用純Ruby對象一樣執行器:

class Executer 
    class << self 

    def search_script(command) 
     script = Dir['*.sh'].first 
     if command == 1 
     system("./#{script} #{command}") 
     elsif command == 2 
     system("./#{script} #{command}") 
     end 
    end 

    end 
end 

=> Executer.search_script(1) 
=> # Starting server 

我希望這個例子是有幫助的。

+0

事情是我希望能夠從我創建的任何rails應用程序運行此操作,而無需手動將此粘貼複製到此腳本中,或者我也可以不使用它。建議嗎? – Jonathan

+0

@defaye抱歉,但我的英語非常糟糕。你能解釋一下你的評論嗎? –

+0

我想在不加載腳本的情況下全局運行我的腳本(在我的計算機上的任何rails_root中)。這不可能嗎?也許某種形式的'system(「./# {script}#{command}」)'是我需要的嗎? – Jonathan