对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版本管理器)。 这是我用于安装它的步骤:

  1. 安装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