用 Ubuntu 搭建一个 Ruby on Rails 本地开发环境

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介:

想要开发 Ruby on Rails 应用吗?虽然已经有一些(初级的)Ruby on Rails 教程了,但是似乎在如何搭建一个简洁而更新的本地开发环境方面还有些不甚确定的地方。

这个教程将引导你通过几个步骤来搭建一个基于 Ubuntu 的 Ruby on Rails 本地开发环境。而这个教程的即将发布的第二部分,将帮助你搭建一个 Ubuntu VPS。当前你暂时知道 VPS 是虚拟私有服务器的意思就可以了,让我们先将注意力转回到如何搭建本地开发环境中。

Bf Frontpage in Set Up An Ubuntu Local Development Machine For Ruby On Rails

Bf Frontpage in Set Up An Ubuntu Local Development Machine For Ruby On Rails

Ruby On Rails? Ubuntu?

什么是 Ruby on Rails?什么是 Ubuntu 呢?

简单的说,Ruby on Rails 是一个 Web 开发框架,它可以让你使用 Ruby 语言开发 Web 应用。如其官方网站所述:“Ruby on Rails 是一个开源的 Web 开发框架,它可以提高程序员的编程乐趣和开发效率,它让你通过惯例优于配置的方式写出优美的代码。”

而 Ubuntu,是一个“着重于可用性方面的 Debian Linux衍生发行版。”它是这些年最流行的 Linux 发行版。更妙的是,Ruby on Rails 和 Ubuntu 都是开源的,也就是说,它们完全免费!

Bf Ubuntu-300x79 in Set Up An Ubuntu Local Development Machine For Ruby On Rails

Bf Ubuntu-300x79 in Set Up An Ubuntu Local Development Machine For Ruby On Rails

简述

在本教程中,我们使用 Ruby Version Manager (RVM)脚本来安装 Ruby on Rails 和 RubyGems,并使用 RubyGems 来安装 Rails 和 Capostrano。这个机器同时也提供版本控制功能,这是通过 Git 和 PostgreSQL 数据库来实现的。本教程需要一个新安装的 Ubuntu 机器和互联网连接,不过大多数的(Debian 和 Ubuntu 衍生版的)Linux 也应该可以。

在本教程写作时,所用的最新版本是:Ubuntu 10.10、Ruby 1.9.2 和 Rails 3.0.7。本教程也在 Ubuntu 10.04 和即将发布(译注:现已发布)的 Ubuntu 11.04 上测试通过。

在本教程中,我们需要大量使用 Linux 命令行。因此,我在文末附了一篇文中所用到的 Linux 命令的简短词汇表。

更新系统

那么让我们开始吧。首先以管理员身份(或通过 sudo )登录到你的机器,并打开一个终端窗口。下面的命令都需要在该窗口输入。美元符号$就是命令提示符,在其后直接输入命令并按回车即可。

前三个命令将更新软件包列表、升级当前安装的软件包、安装新的软件包并删除冲突的软件包。这样你的机器就会保持最新状态。最后的命令是重启机器,在大量更新了软件包后重启是一个不错的做法。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo reboot

为安装 RVM 做准备

机器重启后,再次登录并打开一个终端窗口。RVM 脚本需要先安装好 Curl 和 Git。Curl 是一个使用多种协议(如 HTTP 或 FTP)进行数据传输的工具。而“Git 是一个免费的开源分布式版本控制系统,适用于从小型项目到非常大的项目,兼顾了速度和效率。”Git是多数 Ruby on Rails 开发者所选择的版本控制系统。

$ sudo apt-get install curl
$ sudo apt-get install git-core

Bf Git in Set Up An Ubuntu Local Development Machine For Ruby On Rails

Bf Git in Set Up An Ubuntu Local Development Machine For Ruby On Rails

配置Git

Git 会在 RVM 脚本中使用,我们也在在本教程的第二部分中使用它。安装之后,我们需要花一点时间来配置它。配置很容易:只要提供一个用户名和邮件地址即可。

$ git config --global user.name "Your Name"
$ git config --global user.email your-email@address.com

如:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@mail.com

安装 RVM

现在我们可以安装 RVM 了。RVM 的意思是 Ruby 版本管理器,“是一个命令行工具,让你容易的安装、管理和使用多个 Ruby 环境及其相应的 Gem 包。”下列命令来安装这个脚本。RVM 将安装在你当前登录用户的主目录里。

$ bash <

Bf Rvm in Set Up An Ubuntu Local Development Machine For Ruby On Rails

切换到主目录,然后修改用户的 bash 设置文件,以确保每次用户登录时候 RVM 脚本都会载入。我们使用 Nano 来编辑 bash 设置文件。Nano 是一个简单的命令行的文本编辑器,以后我们还会使用到它。

$ cd
$ nano .bashrc

在你的 bash 设置文件末尾加入以下行。编辑之后,按下 CTRL + O 保存,然后按 CTRL + X 退出 Nano。如果你希望不保存而退出 Nano,按下 CTRL + X 然后按 N。

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

用以下命令行在当前登录中手动重新载入设置文件,也可以另外打开一个新的终端窗口自动载入。这样 rvm 命令就可以用了。

$ source .bashrc

你可以通过下列命令来检查 RVM 脚本是否可以工作。

$ type rvm | head -1

如果一切正常,命令将返回“rvm is a function”(rvm 是函数)。否则,可以访问 RVM 网站的“Troubleshooting your install”栏目找找解决办法。

为安装 Ruby 和 RubyGems 做准备

在从源代码编译和安装 Ruby 和 RubyGems 时,RVM 可以很方便的查看之间的软件包依赖关系。

$ rvm notes

可以列出标准版的 Ruby 所需的依赖包,和安装它们的命令。有些包也许已经安装好了。

$ sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev

使用 RVM 安装 Ruby 和 RubyGems

首先,我们要安装 Ruby,“一个动态的、开源的简单而高效的编程语言。它的优雅语法便于阅读并很容易编写。”

然后我们要安装 RubyGems,这是一个“首选的 Ruby 软件包系统。它提供了一个分发 Ruby 程序和库的标准格式,一个易于使用的管理 Gem 包的安装工具,一个在任何装有 RubyGems 的机器上提供 Gem 软件包的 Gem 服务器,和发布 Gem 软件包的标准方式。”

Bf Ruby in Set Up An Ubuntu Local Development Machine For Ruby On Rails

Bf Ruby in Set Up An Ubuntu Local Development Machine For Ruby On Rails

像上面的 RVM 命令描述的,RVM 也有一个命令可以看到哪个版本的 Ruby 可安装。通过以下命令查看哪些 Ruby 版本可以安装:

$ rvm list known

安装标准版的 Ruby,由于需要从源代码编译,所以需要一些时间。

$ rvm install 1.9.2

使用安装好的 Ruby 前,需要设置该版本为默认版本。

$ rvm --default use 1.9.2

检查一下 Ruby 和 RubyGems 的版本,来确保正确安装。

$ ruby -v
$ gem -v

如有必要,手动更新一下 RubyGems 和其他需要更新的 Gem 。

$ gem update --system
$ gem update

使用 RubyGems 安装 Rails

Rails 全部都打包在 Rails Gem 中。安装它是这个教程中最容易的部分。使用 RubyGems 来安装它,即 gem 命令。安装完成后,检查其版本来确保正确安装。

$ gem install rails
$ rails -v

Bf Rails-252x300 in Set Up An Ubuntu Local Development Machine For Ruby On Rails

Bf Rails-252x300 in Set Up An Ubuntu Local Development Machine For Ruby On Rails

使用 RubyGems 安装 Capistrano

Capistrano 是 “一个在多个服务器上运行脚本的开源工具。它的主要用途是分发 Web 应用。它自动将应用的新版本分发到一个或多个 Web 服务器上,包括执行相关的支持任务,如修改数据库。”使用 RubyGems 安装 Capistrano ,并检查其版本来确保正确安装。

$ gem install capistrano
$ cap -V

安装 PostgreSQL

PostgreSQL 是 “一个复杂的对象-关系数据库系统,支持绝大多数的 SQL 结构,如子查询、事务和用户定义的类型和函数。”安装 PostgreSQL 及其相关软件包。这些相关软件是稍后要安装的 pg Gem所需要的,pg Gem用于连接 PostgreSQL 和 Ruby on Rails。

$ sudo apt-get install postgresql libpq-dev

Bf Postgresql in Set Up An Ubuntu Local Development Machine For Ruby On Rails

Bf Postgresql in Set Up An Ubuntu Local Development Machine For Ruby On Rails

配置 PostgreSQL

安装好之后,使用增强安全的 pSQL 来配置 PostgreSQL。pSQL 是一个 PostgreSQL 的交互终端,用于管理数据库任务。

默认情况下,pSQL 登录时不需要口令。我们将修改认证模式并重新载入 PostgreSQL 配置。但在这之前,要给PostgreSQL的管理用户 postgres 指定一个口令。登录到 pSQL,给 postgres 指定一个安全的密码,然后退出 pSQL。

$ sudo -u postgres psql
# \password postgres
# \q

现在,将认证模式从 ident 修改为 md5。这将确保登录 pSQL 需要密码,且密码是加密存储的。需要修改的两行位于配置文件的末尾附近。修改后,重新载入 PostgreSQL 的配置。

$ sudo nano /etc/postgresql/8.4/main/pg_hba.conf
$ sudo /etc/init.d/postgresql reload

大多数的 PostgreSQL 的其它配置都存储在另外的配置文件中。那些配置也可以优化,不过不在本教程的范围内。让我们将注意力转回来,如果对其他配置做了修改,也需要重新载入以生效。

$ sudo nano /etc/postgresql/8.4/main/postgresql.conf

现在,本地开发环境已经安装完成!

测试设置

为了确认一切都正常,让我们开发一个非常小的应用,来了解一下 Ruby on Rails。这个过程包括以下步骤:

  • 为测试应用创建一个数据库用户
  • 为测试应用创建一个数据库
  • 使用 PostgreSQL 数据库创建一个测试应用
  • 安装测试应用需要的 Gem
  • 配置测试应用的数据库连接
  • 生成测试应用的简单框架
  • 迁移框架的数据库到测试应用的数据库
  • 启动内建的 Web 服务器
  • 用浏览器访问测试应用
  • 停止内建的 Web 服务器

当以上测试都顺利完成后,我们再进行如下步骤:

  • 删除测试应用的数据库
  • 删除测试应用的数据库用户
  • 删除测试应用

这些测试都在本地测试环境中进行。在VPS中测试的约定如下(数据库用户名和数据库名来自测试应用名):
Box 1.1

    应用名称:test_app
    数据库用户名:test_app
    数据库用户密码:apple
    数据库名:test_app_development

首先,使用 createuser 命令来创建测试应用的数据库用户。我们用 PostgreSQL 的管理用户 postgres 来操作,-P 参数表示交互输入密码。 “>”符号是提问的提示符。

$ sudo -u postgres createuser -P
> Enter name of role to add: test_app
> Enter password for new role: apple
> Enter it again: apple
> Shall the new role be a superuser? (y/n) n
> Shall the new role be allowed to create databases? (y/n) n
> Shall the new role be allowed to create more new roles? (y/n) n
> Password: your-postgres-user-password

然后,创建一个测试应用的数据库用户为属主的数据库。虽然我们可以使用 Rake 来创建数据库,但是我们要使用 PostgreSQL ,所以让我们学习一下基本的 PostgreSQL 管理吧。使用 createdb 命令并通过 -O 选项指定数据库用户名。这里,还会提示输入PostgreSQL 的管理用户的密码。

$ sudo -u postgres createdb -O test_app test_app_development
> Password: your-postgres-user-password

现在,数据库已经建好,可以创建实际的 Ruby on Rails 应用了。切换到你的主目录,创建一个名为 test_app 的 Rails 应用,并使用 PostgreSQL 作为数据库后端。-d 选项允许你指定首选的数据库类型。

$ cd
$ rails new test_app -d postgresql

进入到 Rails 应用目录,使用 Bundler 安装需要的 Gem。Bundler 会处理“一个应用在整个生命周期内跨越多个机器的依赖关系”,并且“只支持 Rails 3。”

$ cd test_app
$ bundle install

使用 Nano 修改数据库配置文件,在开发数据库配置中添加密码:“apple”。按照约定和Box 1.1中的设置,数据库名和数据库用户已经设置好了。

$ nano config/database.yml

现在生成一个基本的框架。这将创建一个 User 模型及其控制器。输入包括 name 和 email 字段,它们将存储在数据库中。

$ rails generate scaffold User name:string email:string

使用 Rake 迁移框架到开发数据库中。Rake 是 Ruby Make 的缩写。它是一个“简单的 Ruby 构建程序,类似于 Make,”允许你创建并迁移数据库。

$ rake db:migrate

现在,需要在浏览器中检查应用是否工作。启动内建的服务器,并用浏览器访问 http://localhost:3000/,特别是,要看看显示的测试应用的环境数据。再访问一下 http://localhost:3000/users,可以创建、编辑、查看和删除一些用户。

$ rails server

如果一切都看起来正常,就可以停止内建服务器了。

$ 按下 CTRL+C

当所有的工作都完成,你就可以删除这个测试应用的数据库及数据库用户了。使用 dropdb 来删除数据库。

$ sudo -u postgres dropdb test_app_development
> Password: your-postgres-user-password

使用 dropuser 来删除数据库用户。

$ sudo -u postgres dropuser
> Enter name of role to drop: test_app
> Password: your-postgres-user-password

最后,切换到你的主目录,删除全部的测试应用目录。主要就恢复到一个干净的本地开发环境了,可以用于开发 Ruby on Rails 应用了。

$ cd
$ rm -r test_app

将在稍后发布的教程的第二部分中,我们将帮助你通过几个步骤来建立一个 Ubuntu VPS,它用于运行(多个)Ruby on Rails 应用。

Linux 命令行参考

本教程中相关的 Linux 命令按照字母顺序列在下方。Linux 命令通常的格式是: 命令 -选项 参数,如:rm -r test_app。更多的细节,可以参考它们的帮助页面,可以用 man [命令]来查看。

  • sudo [command] 用于以管理员身份执行命令。
  • apt-get dist-upgrade 用于当前发行版的升级,它会自动处理依赖关系。
  • apt-get install [package] 用于安装软件包
  • apt-get update 用于更新软件包的索引。
  • apt-get upgrade 用于更新当前已经安装的软件包
  • bash <
  • cd [location] 切换目录,如没有参数则切换到用户主目录。
  • nano [file] 编辑文件。
  • reboot 重启机器。
  • rm -r [directory] 递归地删除目录(及其子目录)。
  • source [script] 手动强制 bash 读取一个脚本。
  • type [command] 显示 shell 中执行的命令类型。

参考链接

深入学习

VIA http://coding.smashingmagazine.com/2011/06/21/set-up-an-ubuntu-local-development-machine-for-ruby-on-rails/

原文发布时间为:2011-06-29

本文来自云栖社区合作伙伴“Linux中国”

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
22天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
194 3
|
22天前
|
Ubuntu
Ubuntu学习笔记(七):ubuntu下jupyter指定虚拟环境
本文介绍了如何在Ubuntu系统下使用Anaconda和Jupyter Notebook指定并切换不同的虚拟环境。
54 0
Ubuntu学习笔记(七):ubuntu下jupyter指定虚拟环境
|
2月前
|
Ubuntu 数据安全/隐私保护
Ubuntu22.04LTS环境部署实战
这篇文章提供了Ubuntu 22.04 LTS操作系统的详细安装步骤,包括选择语言、键盘布局、网络配置、软件源设置、磁盘分区、安装OpenSSH服务以及完成安装和首次登录系统的过程。
190 6
Ubuntu22.04LTS环境部署实战
|
2月前
|
Ubuntu 应用服务中间件 网络安全
Ubuntu 22.04环境下为Odoo开启80端口的方法
通过以上步骤,你应该能够在Ubuntu 22.04环境下为Odoo开启80端口。访问你的域名时,Nginx会将请求代理到Odoo,允许你通过80端口访问Odoo应用。
70 1
|
2月前
|
Ubuntu 开发工具 虚拟化
MacOS系统基于VMware Fusion配置Ubuntu 22.04LTS环境
这篇文章介绍了如何在MacOS系统上使用VMware Fusion虚拟化软件配置Ubuntu 22.04 LTS环境,包括自定义VMware Fusion网段、Ubuntu系统安装、配置root用户登录、设置静态IP地址、修改默认网卡名称、配置PS1变量、设置登录界面为字符界面、修改软件源和进行vim基础优化等步骤。
259 2
|
3月前
|
Ubuntu Shell C++
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
138 1
|
3月前
|
前端开发 测试技术 API
揭秘Ruby on Rails的神秘力量:如何让你的Web应用飞起来?
【8月更文挑战第31天】Ruby on Rails(简称RoR)是一个基于Ruby语言的开源Web应用框架,自2005年发布以来,因简洁的语法、强大的功能和高效的开发效率而广受好评。RoR采用MVC架构,提高代码可读性和可维护性,拥有庞大的社区和丰富的库支持。本文通过示例代码展示其强大之处,并介绍RoR的核心概念与最佳实践,帮助开发者更高效地构建Web应用。
41 0
|
3月前
|
前端开发 API C++
在Ruby世界中寻找你的Web框架灵魂伴侣:Rails vs Sinatra
【8月更文挑战第31天】在Ruby的世界里,选择Web框架如同挑选衣物,需根据场合和需求。Rails与Sinatra是两大热门框架,前者以其“约定优于配置”理念和全面的功能成为企业级应用的首选;后者则以轻量级和灵活性著称,适用于快速原型开发和小规模应用。通过对比两者特性,如Rails的MVC架构与Sinatra的简洁API,我们可以看到它们各有所长。选择合适的框架,如同找到旅途中的最佳伙伴,让开发之路更加顺畅愉悦。这场探索之旅教会我们,没有绝对的好坏,只有最适合的选择。
33 0
|
3月前
|
安全 前端开发 数据安全/隐私保护
如何在Ruby on Rails中打造坚不可摧的OAuth认证机制
【8月更文挑战第31天】在构建现代Web应用时,认证与授权至关重要。本文介绍如何在Ruby on Rails中实现OAuth认证,通过使用`omniauth`和`devise` gems简化流程。首先安装并配置相关gem,接着在`User`模型中处理OAuth回调,最后设置路由及控制器完成登录流程。借助OAuth,用户可使用第三方服务安全地进行身份验证,提升应用安全性与用户体验。随着OAuth标准的演进,这一机制将在Rails项目中得到更广泛应用。
41 0
|
23天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
135 2