Shoes 4
Shoes 4:Shoes的下一个版本
关于Shoes
Shoes是一个用于跨平台(Mac、Windows和Linux)GUI编程的小型DSL。它感觉像真正的Ruby,而不仅仅是另一个C++库的包装器。有关一些示例、手册和免费书籍,请查看Shoes网站。
基本用法
想看看Shoes是什么样子的吗?好吧,给你看看!给定以下脚本:
Shoes.app width: 300, height: 200 do
background lime..blue
stack do
para "欢迎来到Shoes的世界!"
button "点击我" do alert "点击得好!" end
image "http://shoesrb.com/img/shoes-icon.png",
margin_top: 20, margin_left: 10
end
end
这将生成以下应用程序:
外观和感觉会因你的操作系统而异,因为Shoes 4使用原生小部件。
Shoes的一些历史
很久很久以前,有一个叫_why的人。他创建了一个名为Hackety Hack的项目,旨在向所有人教授编程。为了触及地球的每个角落,_why决定让Hackety Hack能在Windows、Mac OS X和Linux上运行。这需要大量工作,所以_why决定与世界分享他的工具包。于是,Shoes诞生了。
预览版
嗨,感谢你的关注!Shoes 4目前处于预览阶段。它现在支持几乎所有的shoes DSL,但仍有一些不支持的地方和已知问题。我们现在定期在rubygems上发布更新的预览版,以便于安装。如果你还不太冒险,你仍然可以使用旧版shoes!
安装Shoes 4
有两种方式可以获得Shoes 4 - 预览版gem发布和直接从github安装。这两种方式都需要安装当前版本的JRuby。
我们建议使用JRuby 9.X+,目前我们大多数测试是在9.1版本上进行的。JRuby 1.7.x 可能可以工作,但自4.0.0.pre6版本以来就未经测试。
获取JDK和JRuby
因此,你的第一步是安装JDK(shoes也可以使用OpenJDK)和JRuby。确保为你的操作系统获取适当的JRuby版本。在Linux/Mac上,你也可以使用Ruby安装工具来安装JRuby。例如rvm:
$ rvm install jruby
JDK版本注意事项: JRuby 9版本需要7或8版本的JDK - JDK 9目前还不能与JRuby一起使用,因此也不能与Shoes一起使用。此外,在JDK主要版本中,确保安装最新的更新,我们遇到过新版本解决了一些错误的情况。
SWT要求: 请注意,Shoes 4默认后端基于SWT。这通常不是问题(除了需要JRuby/JDK,如上所述),因为你不需要自己安装SWT。但是,这意味着我们有与SWT相同的基本系统要求。对于Linux来说,这意味着你需要GTK+ >= 2.10或者如果你喜欢的话>= 3.0。此外,目前还没有ARM支持(如树莓派所需要的)。
将Shoes 4作为gem安装
*nix (Mac OSX/Linux)
$ gem install shoes --pre
Windows
C:\tmp> jruby -S gem install shoes --pre
从github安装Shoes 4
如果你想要最新版本或想贡献代码,你需要直接从github仓库安装。
*nix (Mac OSX/Linux)
-
Fork仓库并克隆你的fork,或者
$ git clone git://github.com/shoes/shoes4.git
-
设置本地环境
$ cd shoes4 $ gem install bundler && bundle install
注意:如果您安装了rvm、rbenv或类似的工具,它可能会提示您应该使用特定版本的jruby。这是因为我们保持.ruby-version文件的更新。您应该能够使用JRuby 9.0.0.0或更高版本运行它。不过,我们推荐使用最新版本。
- 您已准备就绪!
Windows
-
Fork仓库并克隆您的fork,或者
C:\tmp> git clone git://github.com/shoes/shoes4.git
-
设置本地环境
C:\tmp>cd shoes4 C:\tmp\shoes4>jruby -S gem install bundler C:\tmp\shoes4>jruby -S bundle install
-
您已准备就绪!
运行Shoes应用
Shoes 4带有一个命令行应用运行器。只需将Shoes应用的文件名传递给它即可。
$ bin/shoes samples/simple_sound.rb
注意: 对于Windows,使用C:\tmp\shoes4>bin\shoes samples\simple_sound.rb
。如果您将Shoes 4作为gem安装,只需执行C:\tmp> shoes path\to\file.rb
使用SWT后端时,还有一个简单的ruby启动脚本,您可以按如下方式使用:
$ bin/shoes-swt samples/simple_sound.rb
这在Mac上还不能工作,因为JRuby(JVM)需要一些额外的参数。在这里,您可以执行以下操作(基本上是bin/shoes所做的):
$ jruby -J-XstartOnFirstThread bin/shoes-swt samples/simple_sound.rb
另一种选择是在应用程序顶部添加require 'shoes'
,然后您可以简单地执行
$ jruby path/to/file.rb
在OS X上,您仍然需要为JRuby提供额外的参数
$ jruby -J-XstartOnFirstThread path/to/file.rb
想看看shoes能做什么?
您可以运行rake samples
,随机的我们认为正常工作的样例将会运行,直到您按Ctrl + C退出。其中一些非常简单,而其他的则更复杂,甚至是游戏!
如果您发现这些样例有任何问题,请告诉我们!
通过将SHOES_USE_INSTALLED
环境变量设置为true,您还可以使用已安装的shoes版本(shoes
命令)来运行样例,而不是本地的bin/shoes
。
打包Shoes应用
打包功能还处于初期阶段,请谨慎使用。
为了打包应用,您需要在环境中安装Shoes gem。如果您没有进行gem安装,您始终可以从当前源代码生成gem并安装:
$ rake install:all
现在,您可以打包应用了。但首先,请注意以下几点:
- 打包器将包含您的shoes脚本目录及其下的所有内容,除非您告诉它不要这样做。
- 如果打包器检测到
.gemspec
或Gemfile
,可能无法正常工作。它使用Warbler,而Warbler总是会寻找这些文件。如果您运行规格,您可能会注意到一些类似这样的警告:
warning: Bundler `path' components are not currently supported. The `shoes-4.0.0.pre1' component was not bundled. Your application may fail to boot!
这是Warbler在说话。实际上,我们偷偷地加入了Shoes gem,但不要告诉别人。
好的,现在真的开始了。最简单的方法是将您的脚本单独放在一个目录中,然后:
$ bin/shoes package --mac path/to/directory-of/your-shoes-app.rb
这将生成一个Mac应用,您可以在path/to/directory-of/pkg/your-shoes-app.app
中找到它。
您还可以将shoes应用打包成jar文件:
$ bin/shoes package --jar path/to/directory-of/your-shoes-app.rb
您可以在与上面相同的目录中找到jar文件,即path/to/directory-of/pkg/your-shoes-app.jar
如果您想要更多控制(比如您想为应用命名为"Shoes App"以外的名称,或者您不想包含我们之前谈到的所有文件),请创建一个app.yaml
文件。有关更多详细信息,请参阅示例。
注意: 如果您使用app.yaml
,您将必须自定义或注释掉每个选项。示例仅仅是一个示例 ;)
当您的脚本旁边有一个app.yaml
文件时,您有三个选项:
$ bin/shoes package --mac path/to/directory-of/your-shoes-app.rb
$ bin/shoes package --mac path/to/directory-of/app.yaml
$ bin/shoes package --mac path/to/directory-of
打包器将使用这些命令中的任何一个找到您的指令。同样,您会在项目目录内的pkg
目录中找到您的应用。通过bin/shoes --help
了解更多信息。
哦,您还可以使用bin/shoes
来运行您的Shoes应用。
想要贡献?
太棒了,谢谢您! 你可以尝试修复我们的一个问题。
我们引入了一个新标签"新手友好",用于我们认为适合初学者开始贡献的问题。这些问题要么相对容易解决,要么不依赖太多其他Shoes代码(例如全新功能),因此更容易上手。
请随意处理任何问题 - 如有需要我们会提供帮助。这个标签只是一个建议!=)
此外,在samples/README中有一份已经可以运行的样例列表,以及其他所有样例。你可以尝试让一个新样例运行起来。为此,你可以运行rake non_samples
来随机运行一个我们认为不能工作的样例。如果你只想列出不能工作的样例,也可以运行rake list_non_samples
。
无论做什么,请确保编写规格说明,因为Shoes 4是以TDD方式开发的(参见下面的运行规格说明部分)。所以确保不要破坏任何测试 :-)
如果你对测试或实现不确定,只需开一个问题或拉取请求。拉取请求不需要完成 - 它们是很好的讨论起点!我们很乐意帮助你准备好你的贡献,以便合并到Shoes 4中!
事实上,我们非常欢迎早期的拉取请求,以便审查代码并帮助你熟悉Shoes 4!=)
如果你有问题,也可以随时到FreeNode IRC的#shoes频道询问。人们可能不会立即回应,但过一段时间后总会有人回复 :-)
有时重构一些代码或编写一些规格说明也是熟悉项目的好方法。如果你想尝试这种方法,可以查看我们的Code Climate来寻找重构的候选对象,或者在本地运行规格说明后,查看coverage目录并打开index.html - 它显示了我们当前的覆盖率数据。看到一些没有覆盖到的内容,也许你可以为它编写一个规格说明?
有关如何运行前面提到的规格说明的信息,请参考以下部分 :-)
运行规格说明
Shoes 4是使用RSpec以TDD风格开发的。你应该编写并运行规格说明 :)
最简单的方法是使用rake任务。
$ bundle exec rake
(尝试rake --tasks
获取完整列表)
如果你想了解更多关于运行规格说明的其他模式、测试的哲学和内容的详细信息,请查看wiki中的测试Shoes条目。
行为准则
很久很久以前,有一个叫_why的人。他创建了一个名为Hackety Hack的项目,目的是教所有人编程。为了覆盖地球的各个角落,_why决定让Hackety Hack在Windows、Mac OS X和Linux上运行。这是一项艰巨的工作,所以_why决定与世界分享他的工具包。于是,Shoes诞生了。
Shoes的诞生是为了教地球各个角落的每个人编程。对新程序员或英语不好的程序员因为他们的Ruby/英语写得不好而苛刻是不酷的。显然,任何针对他人宗教、种族、性别认同或任何个人问题的反社会评论在这片充满chunky-bacon的土地上都是不被容忍的!如果社区成员觉得你在任何项目空间(代码、问题、聊天室、邮件列表)的评论不当,他们会根据我们的行为准则友好地告诉你如何改进。
底线是:玩转Shoes,享受乐趣!
Shoes在网络上的足迹
如果你想了解Shoes的最新动态,可以在以下地方找到我们:
联系方式
想要与Shoes社区取得联系?太好了!你可以通过以下方式联系我们:
- 你可以在http://lists.mvmanila.com/listinfo.cgi/shoes-mvmanila.com加入邮件列表。([旧邮件列表的存档也还在。](http://librelist.com/browser/shoes/))
- 我们还有一个IRC频道,在freenode上的#shoes - 那里有很多人挂机,可能需要一些时间才会有反应
但是我们尽量将大多数关于开发的讨论保持在这个仓库/问题中,这样每个人都可以看到并查找它们。