我是 Ruby 新手,也是编程新手。我已经学习了 Ruby 和 HTML 的基础知识,但是随着我越来越接近开始从事一个项目,我很难理解我们编写的 Ruby 代码如何与 Ruby gems、vcs(特别是 Git)、应用程序交互像 gembundler 和我们编写的 HTML 一样,用于构建功能性网站。我搜索了这个过程的广泛概述,但没有运气。有人有一些很好的类比、模型或解释吗?非常感激!
2 回答
事实上,Ruby 只是 Web 开发所涉及的技术堆栈中的一部分。这是我的世界观。
Gems 是 Ruby 代码的包。它们可能包含库、实用程序和应用程序。当你时require 'x'
,我们说你依赖于x
图书馆。要使该require
调用生效,您必须x
安装 gem。
确保安装代码所依赖的所有 gem 的正确版本的过程称为依赖管理。Bundler是一个 Ruby 应用程序,它本身被打包为一个 gem,这使得该过程变得更加容易。它允许您通过Gemfile
甚至导入在 gem 规范中声明的依赖项来跟踪所有依赖项。Bundler 对于 gem 开发非常有用。它允许您:
- 确保每个人都将使用您正在使用的相同版本的 gem
- 以受控方式升级依赖项
- 无需在本地将其作为 gem 安装即可轻松执行和测试您的代码
版本控制系统是单独的应用程序,它们跟踪对代码所做的更改、更改人员以及更改时间。对代码的更改可能包括但不限于:添加的行、删除的行、更改的字符、添加的文件、删除的文件、更改的权限。提交是一个变更单元。分支是项目的快照,它们分别发展并具有单独的变更集。合并是整合在两个不同分支中所做的所有更改并解决出现的任何冲突的行为。
版本控制系统可以是集中式或分布式的。后者类似于在您的文件系统上本地工作。这很直观。不同之处在于您提交更改,并在完成后将它们推送到某个中央服务器。我从来没有使用过集中的版本控制系统,所以我不会说什么。
一般来说,从 Web 开发的角度来看,Ruby 代码将运行在 Ruby 虚拟机上,接受来自各种来源的请求并提供数据服务。这些请求包含确定服务器返回的响应所需的信息。诸如您尝试访问的资源类型、可用于识别该资源的数据以及您希望数据采用的格式等信息。
然后代码将与数据库交互以获取请求的信息,并且信息将按照指定的格式进行格式化。如果浏览器以 HTML 页面的形式请求用户的个人资料,Ruby 将生成一个,将请求的用户个人资料信息放入正确的标签中。移动客户端可能会收到以json编码的相同信息。
Ruby 代码可能会受到许多依赖项的支持,这些依赖项在 Bundler 的帮助下开发并由版本控制系统跟踪。它可能会在接受请求并提供以各种方式格式化的信息的虚拟机上运行。
如果我正确理解您的问题,您想知道 gems 是如何工作的,例如 gems 如何扩展您的类方法等。
如果是真的,我可以向您推荐一本书“Ruby 中的元编程” http://pragprog.com/book/ppmetr/metaprogramming-ruby
很多有用的信息和现实生活中的例子