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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介:

想要开发 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
IDE Ubuntu Java
百度搜索:蓝易云【Ubuntu快速搭建单步调试openjdk环境】
现在,你已经成功在Ubuntu上搭建了OpenJDK的单步调试环境,可以使用Eclipse IDE方便地进行Java程序的调试。请注意,Eclipse IDE提供了丰富的调试功能,使得调试过程更加高效和准确。
26 0
|
3月前
|
Ubuntu 网络协议 Linux
如何在无公网IP环境使用Windows远程桌面Ubuntu
如何在无公网IP环境使用Windows远程桌面Ubuntu
59 0
|
11天前
|
Ubuntu 开发工具 git
ubuntu18.04下配置muduoC++11环境
以上步骤将在Ubuntu 18.04下配置C++11环境,并编译安装muduo库。请根据实际情况对配置步骤进行调整。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
15 0
|
2月前
|
关系型数据库 MySQL Apache
Ubuntu22.04搭建LAMP环境
LAMP是一个用于构建Web应用程序的技术堆栈,你可以用它开发很多Web程序,比如WordPress。如果你想手工在VPS上搭建WordPress的话,那么你就需要先搭建LAMP环境。这篇文章讲解如何在Ubuntu22.04上搭建LAMP环境。首先,你需要先注册一台VPS服务器,然后登录VPS安装Apache服务、安装MySQL数据库,以及安装PHP。
48 0
Ubuntu22.04搭建LAMP环境
|
2月前
|
安全 应用服务中间件 开发工具
Ubuntu20安装docker并部署相关漏洞环境
Ubuntu20安装docker并部署相关漏洞环境
51 0
|
2月前
|
并行计算 Ubuntu 异构计算
百度搜索:蓝易云【Ubuntu环境下的cuda安装】
安装完成后,CUDA就成功安装在Ubuntu系统中了,你可以开始使用CUDA来进行GPU加速的计算。请注意,安装CUDA可能会影响系统的稳定性,建议在安装前备份重要数据,并确保对操作有足够的了解。如果不确定如何操作,建议寻求专业的帮助或咨询。
39 7
|
2月前
|
存储 Ubuntu Docker
百度搜索:蓝易云【在Ubuntu上安装Discourse开发环境】
请注意,以上只是概述,并不包含详细的步骤和指令。安装Discourse开发环境是一个复杂的过程,需要对Ruby、Ruby on Rails和Docker等技术有深入的理解,并且需要熟悉系统管理和网络配置。建议在安装Discourse之前,先学习相关知识并查阅官方文档和教程,以确保正确搭建和配置Discourse开发环境。
28 5
|
2月前
|
Ubuntu 应用服务中间件 nginx
ubuntu环境下 nginx 怎么配置文件
ubuntu环境下 nginx 怎么配置文件
|
3月前
|
Ubuntu Linux Windows
window10 虚拟机 linux ubuntu 环境下samba服务器配置
本文的目的是在windows 10 系统,使用samba服务实现 windows 10共享虚拟机ubuntu系统的文件。
44 0
|
4月前
|
Ubuntu C++ Docker
Ubuntu基于Docker快速配置GDAL的Python、C++环境
Ubuntu基于Docker快速配置GDAL的Python、C++环境