2013-01-05 36 views
2

我有一個ruby腳本(.rb),它打開文件並在解析後生成一個csv文件。如何將獨立維護的ruby腳本合併到rails應用程序

我獨立維護腳本並可能在其他應用程序中使用。

現在我剛剛複製並粘貼到我的控制器的代碼...我知道這是不正確的!

我該如何將這個ruby腳本合併到我的應用程序中?

我可以做它的寶石嗎?

謝謝。

回答

1

使它成爲寶石並安裝它是一種選擇。否則,將文件的目錄註冊爲加載路徑。這部分可能取決於操作系統。例如,對於Ubuntu Linux操作系統,我做終端:

export RUBYLIB=path_to_the_directory_where_the_file_is 

然後,require該文件並使用它。如果你希望你的庫的行爲不同,這取決於它是否是從命令或者從另一個Ruby腳本直接調用,常見的方法是在你的庫來編寫:

if __FILE__ == $0 
    commands_to_execute_when_called_directly_from_command 
end 
+0

非常有幫助,謝謝。我會玩註冊遠程repo到我的heroku服務器,以查看之間的差異和寶石...謝謝。 – twinturbotom

1

我們不寫基於Ruby的命令行所有的工具,並把它們當作普通的Linux應用程序。使用back ticks或%x來調用它們或使用常規管道(|)鏈接它們就像我們常規應用程序一樣簡單。

如果我們要投入大量數據,通常我們會使用OptionParser添加一個--json標誌,它允許我們將JSON發送到調用程序,使得重用數據變得更容易,而不必解析CSV或列數據。

您可以在* nix系統上安裝/usr/local/bin這些應用程序,確保路徑設置爲在那裏搜索,然後在shell,Ruby或任何其他能夠使用子shell的語言之間共享代碼。

僅僅因爲它們是用Ruby編寫的,並不意味着它們必須是寶石或模塊。紅寶石的能力遠不止於此,並能很好地適應通常的寄主生態。

+0

這聽起來不錯,適合本地使用,將它綁定到rails應用程序我會設置一個ENV []參考腳本遠程回購?謝謝! – twinturbotom

+0

你可以這樣做。或者,將其路徑放在Rails應用程序擁有用戶的PATH變量中,或者在調用它時明確指向它。 –

相關問題