首页 > 编程语言 >Ruby进阶手册(1)

Ruby进阶手册(1)

时间:2023-06-19 21:03:35浏览次数:45  
标签:安装 Ruby 进阶 rbenv 手册 install 版本 ruby

目录

关于 Ruby

想知道 Ruby 为什么会如此受欢迎吗?在粉丝眼中,Ruby 是一门优美而巧妙的语言,他们还认为 Ruby 易于使用,能解决实际问题。想知道受到这些赞誉的原因吗?
Ruby 发明者的理想

Ruby 是一个注重均衡的语言,它的发明者松本行弘(Yukihiro “Matz” Matsumoto),混合了他喜欢的多门语言(Perl、Smalltalk、Eiffel、Ada 和 Lisp),创造出了一种兼具函数式编程和命令式编程特色的新语言。

他常说,他是“试着让 Ruby 更自然,而不是更简单”,让一切符合生活常规。

除此之外,他还提到:

Ruby 就像人的身体一样,表面上看来简单,但是内部却相当复杂。

Ruby 还有众多特性,下面列举一些:

  • Ruby 的异常处理特性与 Java 和 Python 类似,易于处理错误。

  • Ruby 拥有一个针对所有对象的标识-清扫(mark-and-sweep)式垃圾回收程序)。使用者无需维护扩展库中的引用计数。正如
    Matz 所说:“这对您的健康有益。”

  • 为 Ruby 写 C 扩展比 Perl 和 Python 容易,因为 Ruby 有一个非常雅致的 API,能从 C 语言中调用
    Ruby。例如,调用软件中内嵌的 Ruby,当做脚本语言使用。此外,还有 SWIG 接口可用。

  • 如果操作系统允许,Ruby 可以动态加载扩展库。

  • Ruby 提供不依赖操作系统的线程。所以,不管操作系统是否支持,Ruby 支持的所有操作系统都可以使用多线程,甚至是 MS-DOS!

  • Ruby 高度可移植:它主要在 GNU/Linux 上开发,但也支持很多类型的 UNIX,以及
    macOS,Windows,DOS,BeOS,OS/2 等。

rbenv

rbenv是类Unix系统上Ruby编程语言的版本管理工具

这对于在同一台机器上的多个Ruby版本之间切换以及确保您正在处理的每个项目始终在正确的Ruby版本上运行非常有用。

在安装时rbenv将自己注入PATH后,任何对ruby、gem、bundler或其他与ruby相关的可执行文件的调用都将首先激活rbenv。然后,rbenv扫描当前项目目录以查找名为.rub-version的文件。如果找到,该文件将确定该目录中应使用的ruby版本。最后,rbenv在~/.rbenv/versions/下安装的Ruby版本中查找该Ruby版本。

您可以为您的项目选择Ruby版本,例如:

cd myproject
# choose Ruby version 3.1.2:
rbenv local 3.1.2

这样做将使用您选择的版本在当前目录中创建或更新.ruby版本文件。您的另一个项目,即另一个目录,可能完全使用不同版本的Ruby。当您切换项目时,rbenv将无缝地从一个Ruby版本转换到另一个版本。

最后,rbenv机制的几乎每个方面都可以通过bash编写的插件进行自定义。

在带有Homebrew包管理器的系统上,建议使用“使用包管理器”方法。在其他系统上,“Basic Git Checkout”可能是确保始终安装最新版本的rbenv的最简单方法。

使用程序包管理器

使用以下方法之一安装r
安装rubybenv。

  • 在macOS或Linux上,我们建议使用Homebrew安装rbenv。
brew install rbenv ruby-build
  • Debian、Ubuntu及其衍生产品
    在Debian和Ubuntu存储库中打包和维护的rbenv版本已经过时。要安装最新版本,建议使用git安装rbenv。
    https://github.com/rbenv/rbenv
sudo apt install rbenv
  • Arch Linux及其衍生产品

Archlinux有一个用于rbenv的AUR包,您可以使用此wiki页面中的说明从https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_and_upgrading_packages安装它。

在shell中加载rbenv

rbenv init

关闭“终端”窗口并打开一个新窗口,以便您的更改生效q!

就是这样!现在已经准备好安装Ruby版本了。

安装ruby

在尝试安装Ruby之前,检查构建环境是否具有必要的工具和库。然后:

# list latest stable versions:
rbenv install -l

# list all local versions:
rbenv install -L

# install a Ruby version:
rbenv install 3.2.2

从官方下载进行编译,非常慢
https://cache.ruby-china.com/pub/ruby/找到对应版本下载到~/.rbenv/cache

如果找不到rbenv-install命令,您可以将ruby build作为插件安装:

git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

设置一个Ruby版本以完成安装并开始使用Ruby:

rbenv global 3.2.2   # set the default Ruby version for this machine
# or:
rbenv local 3.2.2    # set the Ruby version for this directory

rbenv global 3.2.2 通过将版本名称写入~/.rbenv/version文件,设置要在所有shell中使用的Ruby的全局版本。此版本可以由特定于应用程序的.ruby版本文件覆盖,也可以通过设置RBENV_version环境变量来覆盖。

特殊版本名系统告诉rbenv使用系统Ruby(通过搜索$PATH检测到)。

当在没有版本号的情况下运行时,rbenv全局报告当前配置的全局版本。

除了rbenv-install命令,还可以手动下载并编译Ruby作为~/.rbenv/versions的子目录。该
目录中的条目也可以是安装在文件系统其他位置的Ruby版本的符号链接。

安装gems

按照正常方式继续安装gems:

cd ~/.rbenv/versions/3.2.2/bin
./gem install bundler
./gem update

使用gem env安装gem的位置:

./gem env home
# => ~/.rbenv/versions/<version>/lib/ruby/gems/...

执行rehash。

rbenv rehash

显示rbenv在运行给定命令时将调用的可执行文件的完整路径。

$ rbenv which irb

卸载Ruby版本

随着时间的推移,安装的Ruby版本将累积在~/.rbenv/versions目录中。

要删除旧的Ruby版本,只需rm-rf要删除的版本的目录。您可以使用rbenv prefix命令找到特定Ruby版本的目录,例如rbenv-pprefix 2.7.0。

ruby构建插件提供了一个rbenv uninstall命令来自动执行删除过程。

设置path

rbenv which ruby查看路径

  • LINUX

/root/.rbenv/versions/3.2.2/bin增加进~/.bashrc~/.bash_profile

  • freebsd麻烦一些

/etc/profile~/.profile这是FREEBSD的bash

  • freebsd的root使用tsch,在/etc/csh.cshrc 中

/etc/csh.cshrc 所有用户的设置
root用户的设置/root/.cshrc

安装rails

gem list --remote
gem install rails

标签:安装,Ruby,进阶,rbenv,手册,install,版本,ruby
From: https://www.cnblogs.com/waterperl/p/17492142.html

相关文章

  • python进阶手册(2)
    目录语法细节函数参数默认参数传引用可变(数量)参数列表解析正则表达式仅查找第一次匹配的文本串编译后的正则表达式对象多重匹配函数参数位置参数关键字参数可变(数量)关键字参数函数作为函数的参数函数工厂匿名函数正则表达式语法细节编码声明Python脚本第一或第二行的注释匹......
  • Android中高级开发进阶必备资料(附:PDF+视频+源码笔记)
    前言Android开发学习过程中要掌握好基础知识,特别是java语言的应用,然后逐步提升开发者在学习过程中遇到的一些细致化的问题,把一些难点进行解决,在开发过程中把容易出现的一些难点进行合理化控制,避免在程序生成产品后出现问题,从而导致崩溃,这是非常重要的一点。架构师筑基必备技能作为......
  • 强化学习从基础到进阶-常见问题和面试必知必答[1]:强化学习概述、序列决策、动作空间
    强化学习从基础到进阶-常见问题和面试必知必答[1]:强化学习概述、序列决策、动作空间定义、策略价值函数、探索与利用、Gym强化学习实验1.强化学习核心概念强化学习(reinforcementlearning,RL):智能体可以在与复杂且不确定的环境进行交互时,尝试使所获得的奖励最大化的算法。动......
  • Android进阶宝典 -- JetPack Navigation的高级用法(解决路由跳转新建Fragment页面问题)
    相信有相当一部分的伙伴,在项目开发中依然使用Activity作为页面承载体,有10个页面就会有10个Activity,这种方式当然没问题,但是如果涉及到页面间数据共享,那么使用多Activity就不是很方便了,需要Activity传递各种数据,涉及到数据的序列化与反序列化;因此产生了单Activity和多Fragment架构,所......
  • 腾讯薪选T9级Android进阶学习路线(内含全套学习笔记+视频资料)
    随着android系统的迭代更新和开源api的强大,相信大部分开发者技术的瓶颈很难突破。想要突破瓶颈,我们就需要搭建完备的知识体系,让学到的知识体系化。这里,我整理了Android开发中的一些知识点,包括架构师筑基必备技能、源码解析、性能优化、Kotlin、高级UI、NDK模块、Flutter及微信小程......
  • Android进阶宝典 -- CoordinatorLayout协调者布局原理分析并实现吸顶效果
    1CoordinatorLayout功能介绍首先我们先从源码中能够看到,CoordinatorLayout只实现了parent接口(这里如果不清楚parent接口是干什么的,建议看看前面的文章,不然根本不清楚我讲的是什么),说明CoordinatorLayout只能作为父容器来使用。publicclassCoordinatorLayoutextendsViewGroupim......
  • python 进阶
    isinstance()函数来判断一个对象是否是一个已知的类型,类似type()。isinstance(object,classinfo)>>>a=2>>>isinstance(a,int)True>>>isinstance(a,str)False>>>isinstance(a,(str,int,list))#是元组中的一个返回TrueTrue ......
  • Android性能优化知识脑图总结+学习手册文档,超干分享!
    近几年,Android开发技术不断发展,岗位要求不断升高,导致程序员的面试也进一步向更深、更广处延伸,比如原先很少涉及的性能优化,现已成为大厂的高频面试题。熟悉性能优化相关内容,就相当于拿到大厂的敲门砖,更是工作中最能突显价值的金字招牌。但众所周知,想要学习和掌握性能优化,就必须有实......
  • [ARM 汇编]进阶篇—异常处理与中断—2.4.2 ARM处理器的异常向量表
    异常向量表简介在ARM架构中,异常向量表是一组固定位置的内存地址,它们包含了处理器在遇到异常时需要跳转到的处理程序的入口地址。每个异常类型都有一个对应的向量地址。当异常发生时,处理器会自动跳转到对应的向量地址,并开始执行异常处理程序。异常向量表的位置ARM处理器的异常向......
  • 网络流入门手册
    前言由于网络流极其庞大而资料有限,我决定用这个博客先记录一下我学习的大纲,在后期有可能补上内容。对于网上可以找到的,我就一笔带过,只是说明应该了解这个东西;而对于网上难以找到的一些资料,我会尽我所能写出来。大纲基本概念网络最大流-增广路类最大流最小割定理:内容与证......