【问题标题】:Source Code vs Packaged App in RubyRuby 中的源代码与打包应用程序
【发布时间】:2014-04-20 07:55:00
【问题描述】:
我正在学习编写 Ruby 代码,开始学习开源代码。如何将我在 github 上看到的开源代码转换为可运行的应用程序?例如,如何将Pomodori's Github 的源代码转换为this page 的可下载应用程序?我有兴趣能够操纵源代码,然后将其转换为可运行的应用程序以查看更改。任何提示表示赞赏!
【问题讨论】:
-
Pomodori 是一个 MacRuby (macruby.org) 应用程序。但如果您刚刚开始,请先尝试一些更小/更简单的方法。
标签:
ruby-on-rails
ruby
github
open-source
【解决方案1】:
您可以看到 Pomodori 的唯一依赖项(列在 Gemfile 中)是 hotcococa gem:
# A sample Gemfile
source "http://rubygems.org"
gem "hotcocoa"
这里是使用hotcocoa 构建简单的GUI 应用程序的教程。 Hotcocoa,正如我的其他海报所指出的那样,它是基于 Macruby 构建的。
我认为直接使用 Macruby 本身是一个更好的选择。教程很多,而且比较新。你可以用 macruby 构建一个简单的stopwatch 应用程序(完整的安装说明是here)。
就我个人而言,如果我再次学习 ruby,我会从 David Black 的 The Well Grounded Rubyist 开始,或者如果您正在寻找免费资源,请通过 bastards book 或代码学院的 ruby 课程。
更新:一夜之间我突然想到你可能不熟悉 Ruby 的 REPL(读取评估打印循环)cli 工具 IRB,打开终端回车:
$ irb
这会加载一个交互式 ruby 会话,您可以阅读有关 irb on Ruby's official site 的更多信息。
【解决方案2】:
一般来说,Ruby 不像 C、C++ 等那样经过编译——它是直接从其源代码执行的。
用其他语言编译基本上有利于 1) 将尽可能多的应用程序转换为机器代码,因此在运行时速度更快,以及 2) 从最终结果中删除源代码。在 Ruby 中,有一些方法可以在一定程度上完成这两件事,但它们高度依赖于特定的 Ruby 实现(例如 MRI、JRuby、MacRuby)以及应用程序将在其上运行的操作系统。
正如 Wukerplank 所说,Pomodori 是用 MacRuby 编写的,这是一个特定于 Mac 的实现,有一个名为 macruby-deploy 的工具,可以制作实际的 OS X 应用程序。不幸的是,我上次检查时(2014 年初),MacRuby 没有在 OS X 10.9 上正确运行;当其主要作者 (Laurent Sansonetti) 创建商业产品 RubyMotion 时,它的开发大部分在 10.7/10.8 时代停滞不前。如果您不介意每年的订阅费,RubyMotion 可能是您想要调查的;它还针对 iOS,其应用程序可以进入 App Store;然而,它确实牺牲了 Ruby 的一些活力。
但同样,一般来说,人们通过调用 Ruby 解释器来运行 Ruby 程序(例如ruby program.rb)。如今,Ruby 解释器会进行一些即时编译以加快执行速度,但源代码仍然对代码的用户可见。