web开发基础笔录(2)-Ruby疑难点(1)

这篇具有很好参考价值的文章主要介绍了web开发基础笔录(2)-Ruby疑难点(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
    • 关于 Ruby
    • rbenv
      • rbenv是类Unix系统上Ruby编程语言的版本管理工具
      • 使用程序包管理器
      • 安装ruby
      • 安装gems
      • 卸载Ruby版本
      • 设置path
      • 安装rails
  • 集成字符串
  • 注释与变量内插
  • 字典HASH
  • 数组
  • times迭代

关于 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

集成字符串

<<-保持原样

irb(main):036:0" str2 = <<~MYDREAM
irb(main):037:0"   健康平安
irb(main):038:0"   事业赚钱 
irb(main):039:0"   生活幸福
irb(main):040:0> MYDREAM
=> "健康平安\n事业赚钱 \n生活幸福\n"
irb(main):041:0> print str2
健康平安
事业赚钱                                          
生活幸福                                          
=> nil                                            
irb(main):042:0> 

<<~删除缩进

irb(main):042:0" str1 = <<~MYDREAM
irb(main):043:0"   健康平安
irb(main):044:0"   事业赚钱 
irb(main):045:0"   生活幸福
irb(main):046:0> MYDREAM
=> "健康平安\n事业赚钱 \n生活幸福\n"
irb(main):047:0> print str1
健康平安
事业赚钱                   
生活幸福
=> nil
irb(main):048:0> 

只是删除缩进,并不是删除所有空格

irb(main):048:0" str3 = <<~MYDREAM
irb(main):049:0"   健康  平安
irb(main):050:0"   事业  赚钱 
irb(main):051:0"   生活  幸福
irb(main):052:0> MYDREAM
=> "健康  平安\n事业  赚钱 \n生活  幸福\n"
irb(main):053:0> print str3
健康  平安
事业  赚钱                                        
生活  幸福                                        
=> nil                                            
irb(main):054:0> 

注释与变量内插

[maisipu@fedora learn]$ ruby learn4.rb
hello,world

你好,张三
[maisipu@fedora learn]$ 

ruby源码

#我是一行注释
puts "hello,world"
=begin
我是多行注释
第二行注释
第三行注释
=end
name="张三"
hello="你好,#{name}"
puts hello

单引号不能完成内插文章来源地址https://www.toymoban.com/news/detail-518359.html

irb(main):001:0> name="王五"
=> "王五"
irb(main):002:0> puts 'hello,#{name}'
hello,#{name}
=> nil                                           
irb(main):003:0> 

字典HASH

[maisipu@fedora learn]$ ./learn4.rb
25
28
33
23

31
[maisipu@fedora learn]$ 

#!/usr/bin/ruby

studentAge={
zhangsang:25,
lisi:28,
"wangwu":33,
"liuqing"=>23,
:wangling=>31,
test:21
}
puts studentAge[:zhangsang]
puts studentAge[:lisi]
puts studentAge[:wangwu]
puts studentAge["liuqing"]
puts studentAge["test"]
puts studentAge[:wangling]


数组

irb(main):018:0> x=[1,2,3]
=> [1, 2, 3]
irb(main):019:0> x[0]
=> 1
irb(main):020:0> x[2]
=> 3
irb(main):021:0> x[1]
=> 2
irb(main):022:0> 

irb(main):014:0> x1,x2=1,2
=> [1, 2]
irb(main):015:0> x1,x2,x3=1,2,3
=> [1, 2, 3]
irb(main):016:0> x1
=> 1
irb(main):017:0> x2
=> 2
irb(main):018:0> 

times迭代

irb(main):022:1* 4.times {|x|
irb(main):023:1*   puts x+5
irb(main):024:0> }
5
6                                                  
7                                                  
8                                                  
=> 4                                               
irb(main):025:0> 
                        
irb(main):025:1* 50.times{|x|
irb(main):026:2*   if (x%5==0 and x%3==0)
irb(main):027:2*     puts x
irb(main):028:1*   end
irb(main):029:0> }
0
15                                                   
30                                                   
45                                                   
=> 50                                                
irb(main):030:0> 

irb(main):044:1* 10.times{|x|
irb(main):045:2*   if (x==5)..(x==9)
irb(main):046:2*     puts x+200
irb(main):047:2*   else
irb(main):048:2*     puts x
irb(main):049:1*   end
irb(main):050:0> }
0
1
2
3
4
205
206
207
208
209
=> 10

到了这里,关于web开发基础笔录(2)-Ruby疑难点(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 你好visual studio 2019:关于vs2019的安装和疑难杂症

    目录 一.Visual Studio 2019安装方法 二.Visual Studio 2019的基础操作 ①.新建项目 ②.调整Visual Studio 主题颜色 ③.调整Visual Studio 字体 ④.Visual Studio 字体选择 三.关于#define_CRT_SECURE_NO_WARNINGS问  1.首先打开window自带的Microsoft Store Microsoft Store 也就是俗称的微软商城。 2.在Microsoft Store的搜

    2024年02月10日
    浏览(50)
  • [ruby on rails] ruby使用vscode做开发

    ruby插件推荐用这个来实现,但是现在这个在加载文件索引时候,特别慢,时好时坏,所以现在推荐用Solargraph实现 ruby LSP要求ruby版本3以上,如果在旧版本中使用,需要指定bundleGemfile路径 旧版本ruby使用ruby LSP教程 setting中配置 安装ruby插件 0.27.0,高版本的在vscode新版本中启动

    2024年04月15日
    浏览(74)
  • web架构师编辑器内容-数据结构设计上面的难点

    组件的属性应该怎样设计 业务组件分为:样式属性和其他属性,样式属性就是css,其他属性拿文本来说,就是比如test还有点击事件等。 有两种方案: 方案一:把css作为统一的对象传入: 方案二:将所有的属性全部平铺传入 这两种方案,第二种方案相比于第一种比较好,第

    2024年01月22日
    浏览(56)
  • Ruby语言基础知识

    Ruby是一种简单快捷的面向对象脚本语言,由日本人松本行弘(Yukihiro Matsumoto)在20世纪90年代开发,遵守GPL协议和Ruby License。它的灵感和特性来自于Perl、Smalltalk、Eiffel、Ada以及Lisp语言。 以下是Ruby语言的一些特点: 面向对象:在Ruby中,一切皆是对象。这意味着所有的数据和

    2024年02月07日
    浏览(34)
  • 红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01

    书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。 Ruby是一门在面向对象层面无所不用其极的解释型编程语言。 我们可以把编写Ruby代码看作是一场行为上的艺术,编码就像跳舞一样,Ruby的每一步都很优雅,几乎没有一步是多余的

    2024年01月20日
    浏览(60)
  • 红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础数据类型(data types)EP02

    Ruby是强类型动态语言,即Ruby中一旦某一个对象被定义类型,如果不通过强制转换操作,那么它永远就是该数据类型,并且只有在Ruby解释器运行时才会检测对象数据类型,它的一切皆为对象(包括 nil 值对象),可以通过调用内置class属性来获取该对象的具体数据类型。对于

    2024年01月20日
    浏览(45)
  • Flask开发简易网站疑难点梳理

    Flask是python的web框架, 首先python本身开发效率就高,再因为Flask是轻量级的,相比Django容易很多。 部署python项目时减少依赖包遗漏的情况,使用venv模块为每个项目创建独立的python环境,实现依赖的隔离。 在工程目录下运行:(xxxxxx是运行环境目录) 安装第三方python库和启动我

    2024年02月08日
    浏览(40)
  • Web自动化测试进阶:网页中难点之等待机制 —— 强制等待,隐式等待

    为什么要添加等待 避免页面未渲染完成后操作,导致的报错 经常会遇到报错:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {\\\"method\\\":\\\"xpath\\\",\\\"selector\\\":\\\"//*[text()=\\\'个人中心\\\']\\\"} 页面还在加载时,就在进行查收元素,此时元素还没显示加载出来,而报

    2024年02月05日
    浏览(73)
  • 《Python-基础》练习笔记:难点与错题分享

    1、以下关于Python缩进的描述中,错误的是: A.Python用严格的缩进表示程序的格式框架,所有代码都需要在行前至少加一个空格 B.缩进是可以嵌套的,从而形成多层缩进 C.缩进表达了所属关系和代码块的所属范围 D.判断、循环、函数等都能够通过缩进包含一批代码 2、以下代码

    2024年01月20日
    浏览(36)
  • Ruby软件外包开发语言特点

    Ruby 是一种动态、开放源代码的编程语言,它注重简洁性和开发人员的幸福感。在许多方面都具有优点,但由于其动态类型和解释执行的特性,它可能不适合某些对性能和类型安全性要求较高的场景。下面和大家分享 Ruby 语言的一些主要特点以及适用的场景,希望对大家有所

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包