Ruby 是什么
Ruby 是一个重视平衡的语言,它的发明者松本行弘,混合了他喜爱的多门语言(Perl、Smalltalk、Eiffel、Ada 和 Lisp),发明出了一种兼具函数式编程和命令式编程特色的新语言
他“试着让 Ruby 更天然,而不是更简略”,让所有合乎生存惯例
除此之外,他还提到:
Ruby 就像人的身材一样,外表上看来简略,然而外部却相当简单
如何装置 ruby
笔者所用的电脑是 window,在此基础上有多种办法装置、应用 ruby,一是间接下载 window 版的 ruby;二是先装置 docker,后下载 Linux 镜像,在 Linux 环境中装置 ruby;三是装置 docker 后,间接下载 ruby 镜像
如果是在 Window 中,能够在官网或者国内镜像源处下载应用
如果是在 Linux 中,能够在官网里下载
- 下载最新版的 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
- 下载 Ruby 之后,应用上面的命令解压:
tar -xvzf ruby-3.1.3.tgz
cd ruby-3.1.3
- 配置并编译源代码
./configure
make
sudo make install
- 装置后,通过在命令行中输出以下命令来确保所有工作失常
ruby -v
ruby 3.1.3
如果用 docker
- 拉取 ruby 镜像
docker pull ruby
- 基于 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 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.json
,Gemfile.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 能运行,在 window 上运行的确还有坑,即便没有几年前那么多,但还是有个坑让我踩进去了,这里作记录
咱们当初曾经装置了 ruby、rails,并且启动我的项目,但到当初一行代码都不会写,下一篇,咱们相熟 ruby 的语法
参考资料
- Rails 入门
系列文章
- 前端学 Ruby:前言