前端学 Ruby:安装Ruby、Rails

简介: 前端学 Ruby:安装Ruby、Rails

Ruby 是什么

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

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

除此之外,他还提到:

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

如何安装 ruby

笔者所用的电脑是 window,在此基础上有多种方法安装、使用 ruby,一是直接下载 window 版的 ruby;二是先安装 docker,后下载 Linux 镜像,在 Linux 环境中安装 ruby;三是安装 docker 后,直接下载 ruby 镜像

如果是在 Window 中,可以在官网或者国内镜像源处下载使用

如果是在 Linux 中,可以在官网里下载

  1. 下载最新版的 Ruby 压缩文件
wget https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.3.tar.xz
# curl https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.3.tar.xz
  1. 下载 Ruby 之后,使用下面的命令解压:
tar -xvzf ruby-3.1.3.tgz    
cd ruby-3.1.3
  1. 配置并编译源代码
./configure
make
sudo make install
  1. 安装后,通过在命令行中输入以下命令来确保一切工作正常
ruby -v
ruby 3.1.3

如果用 docker

  1. 拉取 ruby 镜像
docker pull ruby
  1. 基于 ruby 镜像生产一个容器
docker run -it

当然,也可以用 vscode + dev-container 来在 vscode 中生成一个 Linux,Linux 安装 ruby 来做开发

除了直接下载 ruby 外,还可以下载 RVM,它可以管理多个版本的 Ruby,就像前端概念里的 nvm

RVM

RVM 能在系统中安装和管理多个 Ruby 版本。同时还能管理不同的 gem 集。支持 macOS、Linux 和其它类 UNIX 操作系统

gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | sudo bash -s stable
# 当 rvm 安装好后,看下图的提示操作
sudo usermod -a -G rvm johan # 将当前用户添加到 rvm 组中
su root # 切换到root,相当于先注销 johan
su johan # 切换会johan,相当于登录 johan
source /etc/profile.d/rvm.sh # 让命令生效

安装完rvm后的提示

# 设置为系统默认版本
rvm use --default 2.2.3
# 在其他版本之前切换
rvm use 2.2.1
# 卸载一个指定版本
rvm uninstall 2.2.1

Gems

RubyGems 是 Ruby 项目的包管理工具。有很多有用的代码库(包括 Rails)都可以通过包(或叫做 gem)的形式获取

因为下载了 ruby,自带了 gem,就好比下载了 node,自带了 npm

gem -v 
#3.3.26

有意思的是:ruby 的英语意思是红宝石,gem 的意思是宝石

Ruby镜像源替换

添加镜像的目的是为了下载依赖包的时候速度更快,就好比 npm 的国内镜像 cnpm

查看当前镜像

gem source l # 或者 gem source
# 结果
# *** CURRENT SOURCES ***
# https://rubygems.org/

添加国内镜像:

gem sources --add https://gems.ruby-china.com/

再次查看镜像:

gem sources -l
# *** CURRENT SOURCES ***
# https://rubygems.org/
# https://gems.ruby-china.com/

用 --add 添加地址,--remove 删除地址

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

国内其他镜像源

在部署时,ruby-china 的源会抖动连接不上,可以通过换源或者在开发时将源下载下来,用本地源来代替(唐诗项目遇到的坑)

中科大:http://mirrors.ustc.edu.cn/help/rubygems.html

清华:https://mirrors.tuna.tsinghua.edu.cn/help/rubygems/

阿里:https://mirrors.aliyun.com/rubygems/

gem 命令

  • gem list:查看所有的包
  • gem install xx:下载应用包
  • gem uninstall:卸载应用包
  • gem sources:查看当前镜像

命令行

当安装完 ruby 后,打开命令行输入 irb,即可进入irb 运行环境,这就像输入 node 进入 node 运行环境,输入 python ,进入 python 运行环境

安装 Rails

Rails 是什么?

Rails 是使用 Ruby 语言写的 Web 应用框架。它有两大指导“思想”

  • 不要自我重复(DRY)
  • 多约定,少配置(约定大于配置)

因为有包管理工具,所以下载就可以

github 源码地址:https://github.com/rails/rails

gem install rails

安装完毕后,执行 rails -v 检查是否安装成功

rails -v
# Rails 7.0.4

当然, rails 还有很多命令,如

rails new blog # 生成一个 blog 项目
rails new --api blog # 以 API 形式生成一 blog 项目
rails new --css bootstrap blog # 以 bootstrap 作为css生成一 blog 项目
rails new --database postgresql blog # 以 postgressql 作为数据库生成项目
rails new -h # 查看所有命令行选项
rails new --api --database=postgresql --skip-test blog # 创建一个数据库为 postgresql 的跳过测试的 api 博客(blog)项目

第一个程序

使用 rails 新建项目,它就像 express-generator 一样,所有的配置都帮你弄好,你要写代码就可以

rails new first_app

目录结构

文件/文件夹 作用
app/ 包含应用的控制器、模型、视图、辅助方法、邮件程序、频道、作业和静态资源文件。这个文件夹是本文剩余内容关注的重点。
bin/ 包含用于启动应用的 rails 脚本,以及用于安装、更新、部署或运行应用的其他脚本。
config/ 配置应用的路由、数据库等。详情请参阅配置 Rails 应用。
config.ru 基于 Rack 的服务器所需的 Rack 配置,用于启动应用。
db/ 包含当前数据库的模式,以及数据库迁移文件。
Gemfile, Gemfile.lock 这两个文件用于指定 Rails 应用所需的 gem 依赖。Bundler gem 需要用到这两个文件。关于 Bundler 的更多介绍,请访问 Bundler 官网。
lib/ 应用的扩展模块。
log/ 应用日志文件。
public/ 仅有的可以直接从外部访问的文件夹,包含静态文件和编译后的静态资源文件。
Rakefile 定位并加载可在命令行中执行的任务。这些任务在 Rails 的各个组件中定义。如果要添加自定义任务,请不要修改 Rakefile,直接把自定义任务保存在 lib/tasks 文件夹中即可。
README.md 应用的自述文件,说明应用的用途、安装方法等。
test/ 单元测试、固件和其他测试装置。详情请参阅Rails 应用测试指南。
tmp/ 临时文件(如缓存和 PID 文件)。
vendor/ 包含第三方代码,如第三方 gem。
.gitignore 告诉 Git 要忽略的文件(或模式)。详情参见 GitHub 帮助文档。

其中 Gemfile 相当于前端中的 package.jsonGemfile.lock相当于package.lock

但当你使用初始化项目时,会报错:

初始化项目报错

其原因是在路径中使用了中文,所以换个路径就好

下载依赖是通过 bundle install ,相当于前端的 npm install

bundle install

可以使用 bundle --help 查看 bundle 的其他命令行,笔者会用 bundle install --verbose 查看下载过程

如何启动项目呢,在前端开发中,有 package.json,能在 script 中写命令。而 rails 不同,它的 Gemfile 没有运行文件的命令,但它自带了很多命令行,如:

rails server # 启动服务
rails s -p 8080 # s 为 server 缩写,-p 8080 表示指定8080的端口

如此, rails 应用就启动了

ruby on rails运行成功

总结

本文的主要目的是让 Ruby on Rails 能运行,在 window 上运行确实还有坑,即使没有几年前那么多,但还是有个坑让我踩进去了,这里作记录

我们现在已经安装了 ruby、rails,并且启动项目,但到现在一行代码都不会写,下一篇,我们熟悉 ruby 的语法

参考资料

  • Rails 入门
相关文章
|
4月前
|
前端开发 关系型数据库 MySQL
【前端学java】MySQL数据库的本地安装
【8月更文挑战第12天】MySQL数据库的本地安装
49 3
|
2月前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
151 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
2月前
|
JavaScript 前端开发 Docker
前端的全栈之路Meteor篇(一):开发环境的搭建 -全局安装或使用容器镜像
本文介绍了如何搭建 Meteor 开发环境,包括全局安装 Meteor 工具和使用 Docker 镜像两种方法,以及创建和运行一个简单的 Meteor 项目的基本步骤。 Meteor 是一个全栈 JavaScript 框架,适用于构建实时 Web 应用程序。文章还提供了遇到问题时的解决建议和调试技巧。
|
6月前
|
应用服务中间件 开发工具 nginx
Mac M1/M2/M3 芯片环境配置以及常用软件安装-前端
Mac M1/M2/M3 芯片环境配置以及常用软件安装-前端 最近换了台新 Mac,所有的配置和软件就重新安装下,顺便写个文章。
643 1
|
2月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
758 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
2月前
|
缓存 JavaScript 前端开发
拿下奇怪的前端报错(三):npm install卡住了一个钟- 从原理搞定安装的全链路问题
本文详细分析了 `npm install` 过程中可能出现的卡顿问题及解决方法,包括网络问题、Node.js 版本不兼容、缓存问题、权限问题、包冲突、过时的 npm 版本、系统资源不足和脚本问题等,并提供了相应的解决策略。同时,还介绍了开启全部日志、使用替代工具和使用 Docker 提供 Node 环境等其他处理方法。
1293 0
|
2月前
|
前端开发 JavaScript 小程序
前端新人,入职新公司需要注意安装什么软件
前端新人,入职新公司需要注意安装什么软件
24 0
|
4月前
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
113 2
【前端学java】全网最详细的maven安装与IDEA集成教程!
|
4月前
|
前端开发 Oracle Java
【前端学java】java开发的依赖安装与环境配置(1)
【8月更文挑战第8天】java开发的依赖安装与环境配置
62 1
|
4月前
|
前端开发 测试技术 数据库
使用Ruby on Rails进行快速Web开发的技术探索
【8月更文挑战第12天】Ruby on Rails以其高效、灵活和易于维护的特点,成为了快速Web开发领域的佼佼者。通过遵循Rails的约定和最佳实践,开发者可以更加专注于业务逻辑的实现,快速构建出高质量的Web应用。当然,正如任何技术框架一样,Rails也有其适用场景和局限性,开发者需要根据项目需求和个人偏好做出合适的选择。