对Lona的贡献+如何在macOS上设置Ruby环境
本周初,我正在查看Airbnb的开源项目,并且发现了一个名为Lona的项目。
Lona是用于构建设计系统并使用它们生成跨平台UI代码,Sketch文件和其他工件的工具的集合。 (来自Lona的GitHub存储库)
我真的很喜欢这个项目的想法,所以我选择它作为我的开源课程的下一个项目。 没有打开很多问题,而且我不确定一开始是什么好任务。 我使用了项目自述文件中的提示,其中指出:
如果您有兴趣在公司中贡献或使用它,请随时打开GitHub问题或在Twitter @dvnabbott上与我联系。 (Lona README)
因此,我发了推文给正在维护该项目的Devin:
在开放源代码开发方面有一些经验,我知道维护者和贡献者之间的交流非常重要。 我相信,这是围绕该项目建立社区并让人们希望将来做出更多贡献的关键。 我感谢他的时间,并提供了很多帮助。
让我们回到项目本身。 Lona包含3个部分:
- Lona Components —跨平台组件的数据格式
.component
- Lona Studio —用于设计
.component
文件的GUI工具,Swift Mac应用程序。 - Lona Compiler —一种CLI工具和API,用于从.component文件,ReasonML生成UI代码
从上面的推文中可以看到,我选择了Lona Studio作为我的贡献。 我决定在接下来的几个月中专注于Swift开发,因此我想尽可能多地使用这种语言。 另外,我发现它很有趣,因为我以前从未使用过Mac应用程序,据我所知,macOS开发与iOS开发有很大不同。
设置项目
首先,我必须在机器上设置项目。 对我来说这不是小事,因为我没有一个先决条件。 为了从源代码构建Lona Studio,您需要安装以下工具:
- 捆扎机
- 可可豆
- 迦太基
我的Mac上已经安装了CocoaPods和Carthage,但是我没有Bundler,甚至没有听说过。
Bundler通过跟踪和安装所需的确切gem和版本,为Ruby项目提供了一致的环境。 (来自bundler.io)
我以前从未接触过Ruby,因此我必须设置Ruby环境才能安装Bundler。 首先,您需要安装RVM(Ruby版本管理器)。 这是我用于安装它的步骤:
- 安装GnuPG
酿造安装gnupg gnupg2
2.安装RVM的密钥
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
3.运行经过验证的安装
curl -sSL https://get.rvm.io | bash -s
4.取消设置默认的Apple Ruby版本
未设置GEM_HOME
5.将RVM加载到Terminal会话中:
源〜/ .rvm / scripts / rvm
6.禁用自动库(您可以在此处阅读有关此功能的更多信息)
rvm禁用自动库
7.安装OpenSSL
酿造安装openssl
8.安装您要使用的Ruby版本。 我将使用2.4.0。
rvm install 2.4.0 --with-openssl-dir =`brew --prefix openssl`
9.使其成为默认版本。
rvm use 2.4.0-默认
10.最后,安装Bundler🎉
gem安装捆绑器
就是这样
问题
Lona的欢迎屏幕看起来与XCode的欢迎屏幕类似,维护人员要求提供一项功能,在该功能上,在所选项目上按“ Enter”键将打开该项目。 打开项目的唯一方法是双击它。
实作
问题描述非常有帮助,它指定了我应该查看的文件以及应该覆盖的功能。
有一个包含项目列表的实现的RecentProjectList.swift
文件。 我编写了一个函数来处理“ Enter”输入,然后打开所选项目:
覆盖func keyDown(带有事件:NSEvent){
让马车ReturnKeyCode = 36
如果event.keyCode ==马车返回键代码{
onOpenProject?(projects [tableView.selectedRow])
}
}
基本上,我检查按下的键的keyCode是否等于回车键代码(36)。 如果为true,则调用打开指定项目的函数:
onOpenProject?(projects [tableView.selectedRow])
经过维护人员的批准,并成功合并为master
master
但是,后来Devin注意到它将不选择任何行而导致崩溃,因此他迅速创建了一个新的补丁进行修复,在其中他简单地添加了tableView.selectedRow
的检查:
如果event.keyCode ==马车返回键代码,tableView.selectedRow> = 0
下次,我会更加小心并尝试捕获可能的崩溃😬
这是我贡献的最终结果:
摘要
这是为该项目做出贡献的绝佳经历,欢迎维护者加入我们的行列,这也是我要为此项目做出更多贡献的因素之一。 如果您也有兴趣,请查看Lona的GitHub存储库:
airbnb /洛娜
定义设计系统并使用它们生成跨平台UI代码,Sketch文件和其他工具的工具 。github.com