Ubuntu22.04 + Ruby on Rails + PostgreSQL
【安装】
更新系统:
sudo apt-get update && sudo apt-get upgrade -y
安装必要的三方库:
sudo apt-get install -y wget vim build-essential openssl libreadline-dev libmysqlclient-dev curl git zlib1g zlib1g-dev libssl-dev libyaml-dev libxml2-dev libxslt1-dev libcurl4-openssl-dev autoconf automake libtool imagemagick libmagickwand-dev libpcre3-dev nodejs libpq-dev gcc g++ make bison build-essential libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev
安装 rbenv:
自行安装rbenv。将rbenv存储库从GitHub克隆到目录~/.rbenv中:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
接下来,添加~/.rbenv/bin到您的$PATH以便您可以使用rbenv命令行实用程序。通过更改~/.bashrc文件以便响应将来的登录会话来执行此操作:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
然后将命令~/.rbenv/bin/rbenv init添加到您的~/.basrc文件中,以便rbenv自动加载:
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
接下来,将您对~/.bashrc文件所做的更改应用于当前的shell会话:
source ~/.bashrc
使用该type命令验证是否已正确设置rbenv,该命令将显示有关该rbenv命令的更多信息:
type rbenv
您的终端窗口将显示以下内容:
rbenv is a function rbenv () { local command; command="${1:-}"; if [ "$#" -gt 0 ]; then shift; fi; case "$command" in rehash | shell) eval "$(rbenv "sh-$command" "$@")" ;; *) command rbenv "$command" "$@" ;; esac }
更新 rbenv:
由于您使用Git手动安装了rbenv,因此您可以使用~/.rbenv目录中的git pull命令随时将安装升级到最新版本:
cd ~/.rbenv git pull
这将确保使用最新版本的 rbenv。
卸载 rbenv:
如果您已经决定不再使用rbenv,则可以将其从系统中删除。
为此,首先在编辑器中打开~/.bashrc文件:
nano ~/.bashrc
在文件中查找并删除以下两行:
export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)"
保存文件并退出编辑器。
然后使用以下命令删除rbenv和所有已安装的Ruby版本:
rm -rf `rbenv root`
注销并重新登录以将更改应用到shell。
安装 ruby-build 插件:
这个插件添加了rbenv install命令,简化了新版Ruby的安装过程:
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
使用 ruby-build 安装 Ruby:
列出Ruby的所有可用版本:
rbenv install -l
输出可供安装的多个版本:
2.7.7 3.0.5 3.1.3 jruby-9.4.0.0 mruby-3.1.0 picoruby-3.0.0 rbx-5.0 truffleruby-22.3.0 truffleruby+graalvm-22.3.0 Only latest stable releases for each Ruby implementation are shown. Use 'rbenv install --list-all / -L' to show all local versions.
现在安装 Ruby 3.0.5:
rbenv install 3.0.5
安装Ruby可能是一个漫长的过程,因此安装需要一些时间来完成。
安装成功后输出:
To follow progress, use 'tail -f /tmp/ruby-build.20221220105025.33541.log' or pass --verbose Downloading openssl-1.1.1s.tar.gz... -> https://dqw8nmjcqpjn7.cloudfront.net/c5ac01e760ee6ff0dab61d6b2bbd30146724d063eb322180c6f18a6f74e4b6aa Installing openssl-1.1.1s... Installed openssl-1.1.1s to /root/.rbenv/versions/3.0.5 Downloading ruby-3.0.5.tar.gz... -> https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.5.tar.gz Installing ruby-3.0.5... Installed ruby-3.0.5 to /root/.rbenv/versions/3.0.5 NOTE: to activate this Ruby version as the new default, run: rbenv global 3.0.5
安装完成后,使用global子命令将其设置为默认版本的Ruby :
rbenv global 3.0.5
通过检查其版本号来验证Ruby是否已正确安装:
ruby -v
输出:
ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [x86_64-linux]
如果需要安装和使用不同版本的Ruby:
运行 rbenv 指定版本号的命令,如 rbenv install 2.3.0 和 rbenv global 2.3.0。
卸载Ruby版本:
当您下载其他版本的Ruby时,您可能会累积比~/.rbenv/versions目录中更多的版本。使用ruby-build插件的’ uninstall子命令删除这些以前的版本。
例如,输入以下命令将卸载Ruby版本2.1.3:
rbenv uninstall 2.1.3
使用Gems:
Gems是Ruby库的分布方式。可以使用 gem 命令来管理这些gems。将使用此命令安装Rails。
安装gem时,安装过程会生成本地文档。这可能会为每个gem的安装过程增加大量时间,因此请通过创建一个包含配置设置以关闭此功能的~/.gemrc文件来关闭本地文档生成:
echo "gem: --no-document" > ~/.gemrc
Bundler(https://bundler.io)是一个管理项目的gem依赖项的工具。
安装Bundler gem。因为Rails依赖于它:
gem install bundler
输出:
Fetching bundler-2.3.26.gem Successfully installed bundler-2.3.26 1 gem installed
可以使用该gem env命令(子命令env是environment的简称)来了解有关gem的环境和配置的更多信息。您可以使用home参数查看gems的安装位置,如下所示:
gem env home
输出:
/root/.rbenv/versions/3.0.5/lib/ruby/gems/3.0.0
设置好gems后,即可安装Rails。
安装Rails:
安装最新版本的Rails:
gem install rails
该gem命令将安装您指定的gem以及每个依赖项。Rails是一个复杂的Web开发框架,具有许多依赖关系,因此该过程需要一些时间才能完成。最终,您将看到一条消息,指出已安装Rails。及其依赖:
... Successfully installed rails-7.0.4 35 gems installed
注意:如果您想安装特定版本的Rails,可以通过搜索列出Rails的有效版本,这将输出一长串可能的版本。然后我们可以安装特定版本,例如4.2.7:
gem search '^rails$' --all gem install rails -v 4.2.7
rbenv的工作原理是创建一个shims目录,它指向当前启用的Ruby版本使用的文件。通过rehash子命令,rbenv在该目录中维护填充程序,以匹配服务器上每个已安装的Ruby版本的每个Ruby命令。每当你安装新版本的Ruby或提供命令的gem(如Rails)时,你应该运行:
rbenv rehash
使用以下命令打印其版本,验证是否已正确安装Rails:
rails -v
输出:
Rails 7.0.4
安装PostgreSQL数据库软件:
参考:https://amon.org/ubuntu-pgsql
【参考】
参考:https://cloud.tencent.com/developer/article/1352641
参考:https://cloud.tencent.com/developer/article/1356851
参考:https://bynss.com/linux/941243.html
教程:https://www.ruby-lang.org/zh_cn/
教程:https://zhuanlan.zhihu.com/p/103633703