18

我正在開發一個使用Ruby on Rails的應用程序,主要是作爲學習語言的藉口。分發脫機Ruby on Rails應用程序的選項

這並非是一個基於Web的應用程序 - 也許我選擇了錯誤的語言,但是......

我的理解是,爲了在某人運行此應用程序的實例別人的計算機,他們需要在rails上安裝ruby,以及web服務器(或webrick,也許)以及我的應用程序代碼。

我只是好奇,如果有任何其他選項分發我的應用程序作爲獨立的應用程序,或者也許只是一個簡單的方法來打包一個Web瀏覽器和ROR與我的應用程序一起簡單,一步安裝?

回答

7

我個人從未需要這樣做。但是,我已經跑過本教程http://www.erikveen.dds.nl/distributingrubyapplications/rails.html,我認爲這會有所幫助。本教程將介紹如何將Rails應用程序實際轉換爲獨立的exe文件。

+0

這看起來正是我所需要的,有潛在的2個缺點: 1)目前還不清楚是否點擊生成的可執行文件實際啓動網絡服務器,或者如果沒有,它做了什麼 2)它看起來不像你可以打包跨平臺的應用程序。是這樣嗎? – Brent 2008-09-11 23:48:14

1

通過將Ruby凍結到您想要在項目中使用的Rails版本,您可以包含Ruby on Rails。他們把這叫做冰凍。用戶不需要安裝Rails來使用你的應用程序。您可以使用您在項目中使用的任何庫。如果項目使用庫,只需將其放置在項目的Vendor文件夾下。然後使用類似於@Josh回答的工具來打包它。

您將需要一個Web服務器來運行該項目。這是沒有辦法的。 Ruby on Rails在這方面就像ASP.NET一樣,因爲它是一個服務器端框架。服務器運行代碼並使用Rails框架將HTML輸出到瀏覽器。

不幸的是,你可能選擇了錯誤的框架來做你想做的事情。除了Ruby on Rails,您可能還想看看Shoes,它是使用Ruby開發GUI應用程序的框架。

3

注意,Slingshot似乎是一個死了的項目(見評論)。我會在這裏留下這個答案的歷史目的和它回來的機會

Joyent的Slingshot可能是一個不錯的選擇。

Joyent的彈弓允許開發者部署Rails的像一個標準的桌面應用程序的應用程序,其工作在線和離線(帶同步),具有拖放,並與所有其他桌面應用程序的交互。

隨着Joyent的彈弓:

  • 創建一個混合網絡/桌面應用程序
  • 同步在線和離線數據
  • 使用在線和離線應用(一個或多個)
  • 部署和更新相同的代碼您的應用程序很容易
  • 拖入和拖出應用程序

這裏有一些進一步的聯繫,以幫助您評估和/或幫助您開始:

+1

這仍然可用嗎?我無法在任何地方找到它。鏈接都是死路一條。 – stellard 2010-01-28 08:58:26

1

你總是可以考慮將Ruby編譯爲JVM字節碼(通過JRuby)或.NET字節碼(通過IronRuby)分發給擁有這些虛擬機並且不想安裝Ruby運行時的人員。

您可能想要查看Shoes在Ruby中構建桌面應用程序。 Rails真的被調整用於構建網站。

0

你不具體說它是否應該是一個GUI應用程序。從其他答案中,我會這樣猜測。

因此,你需要澄清你的目標是什麼。 RoR是Web應用程序的專用框架。如果您的目標是學習RoR,我會說讓自己一些便宜的網絡託管,並使自己的應用程序。如果你的目標是學習Ruby,那麼不一定需要Rails,Shoes,IronRuby,JRuby,MacRuby等等。

2

大多數人將ruby程序(包括Rails webapps)作爲獨立的exe文件的方式是通過rubyscript2exe。他們描述瞭如何在http://www.erikveen.dds.nl/distributingrubyapplications/rails.html上打包Rails應用程序。 Ruby,Rails和所有關聯的庫都將包含在EXE文件中。

正如其他人提到的,Ruby不一定是Rails,如果你真的想在Ruby中編寫一個可分發的GUI應用程序的簡單方法,Shoes是一個很好的開始尋找的地方。