Ubuntu Ruby Ruby-install chruby rails 环境配置

原文网址:https://ryanbigg.com/2014/10/ubuntu-ruby-ruby-install-chruby-and-you

Ubuntu,Ruby,ruby-install,chruby,Rails和You

2014年10月5日

最后更新:2017年7月13日

本初学者指南将使用chruby + ruby​​-install和Rails 5.1.2为您的机器设置Ruby 2.4.1,它专门为Ubuntu 17.04上开发环境编写,但可能适用于许多其他操作系统,包括旧版/新版Ubuntu和Debian版本。因人而异。

在任何情况下,您都不应该从apt-get安装Ruby,Rubygems或任何与Ruby相关的软件包。这个系统已经过时并且导致重头重脚轻。避免使用与Ruby相关的软件包。我们做Ruby,我们知道什么是最好的。相信我们。

本指南将涵盖安装几件事情:

  • ruby-install:在同一个系统上安装多个Rubies的非常轻量级的方法。
  • chruby:一种轻松切换这些Ruby安装的方法
  • Ruby 2.4.1:在编写最新的当前稳定版本的Ruby时。
  • Bundler:Ruby社区中使用的包依赖关系管理器
  • Rails 5.1.2:编写最新的当前稳定版本的Rails。

在本指南结束时,您将安装这些东西,并且有一些非常简单的方法来管理不同应用程序/库的gem依赖关系,并且可以同时安装和使用多个Ruby版本。

我们假设你可以sudo访问你的机器,并且你已经理解了Ruby的基本概念,比如“什么是RubyGems?” 更重要的是“如何打开这台电脑的东西?”。通过阅读任何Ruby书籍的第一章可以获得这些知识

如果你正在寻找一本好的Rails书,我写了一本名为Rails 4 in Action的书

家政

首先,我们要运行,sudo apt-get update以便我们的盒子上有最新的资源,这样我们就不会遇到任何包相关的问题,比如不能安装某些包。

接下来,我们将运行另一个命令,它将安装用于安装Ruby的基本构建工具:

sudo apt-get install build-essential

现在我们准备安装ruby-install。

ruby安装

安装说明可以在ruby-install的README中找到,但我会在这里重复它们,所以你不必去那里:

wget -O ruby-install-0.6.1.tar.gz \
  https://github.com/postmodern/ruby-install/archive/v0.6.1.tar.gz
tar -xzvf ruby-install-0.6.1.tar.gz
cd ruby-install-0.6.1/
sudo make install

首先,我们获取ruby-install文件,将其解压缩到一个目录中,然后创建它。您可以通过运行以下命令验证这些步骤是否有效:

$ ruby-install -V

如果你看到这个,那么你已经成功安装了ruby-install:

ruby-install: 0.6.1

ruby

我们的下一步是安装Ruby本身,我们可以用这个命令来完成:

ruby-install ruby 2.4.1

这个命令需要几分钟,所以抓住你的$ DRINKOFCHOICE并去外面或者其他的东西。完成后,我们将安装Ruby 2.4.0。为了使用这个Ruby版本,我们还需要安装chruby。这些说明也可以在chruby的README中找到,但我会在这里重现它们:

wget -O chruby-0.3.9.tar.gz \
  https://github.com/postmodern/chruby/archive/v0.3.9.tar.gz
tar -xzvf chruby-0.3.9.tar.gz
cd chruby-0.3.9/
sudo make install

安装完成后,我们需要自动加载chruby,我们可以使用以下命令将这些行添加到shell配置文件中:

cat >> ~/.$(basename $SHELL)rc <

为了使其生效,我们将重新加载shell

exec $SHELL

或者,打开一个新的终端选项卡/窗口也会做同样的事情。

要验证chruby是否已安装并检测到我们的Ruby安装,请运行chruby如果你看到这一点,那么它的工作:

ruby-2.4.1

现在,我们需要将该Ruby作为我们系统的默认Ruby,我们可以通过创建一个~/.ruby-version使用此内容调用的新文件来完成此操作:

ruby-2.4.1

这个文件告诉chruby我们默认使用哪个Ruby。要改变我们使用的ruby版本,我们可以运行chruby ruby-2.4.1例如 - 假设我们先安装了Ruby 2.4.0!

这是否工作?让我们通过跑步找出ruby -v

ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

轨道

现在我们已经安装了一个Ruby版本,我们可以安装Rails。因为我们的Ruby被安装到我们的主目录,所以我们不需要使用那个讨厌的sudo东西来安装东西; 我们有写入权限!要安装Rails gem,我们将运行以下命令:

gem install rails -v 5.1.2 --no-rdoc --no-ri

这将安装rails ruby和它及其依赖包,包括Bundler。

MySQL的

如果您打算将mysql2 ruby用于您的应用程序,那么您需要在安装libmysqlclient-dev之前安装该软件包。如果没有它,当gem试图编译它的原生扩展时会出错:

Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    /home/ryan/.rubies/ruby-2.3.0/bin/ruby extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

使用安装这个软件包sudo apt-get install libmysqlclient-dev,然后该mysql2 ruby将安装正常。

PostgreSQL的

mysql2上面的ruby错误类似,pg如果您没有libpq-dev安装软件包,您也会在ruby上遇到错误,您会收到此错误消息:

Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

    /home/ryan/.rubies/ruby-2.3.0/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

使用安装此软件包sudo apt-get install libpq-dev

sqlite3

就像之前的MySQL和PostgreSQL一样,试图安装sqlite3gem会导致这样的结果:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /home/ryan/.rubies/ruby-2.3.0/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

通过运行修复此问题sudo apt-get install libsqlite3-dev

JavaScript Runtime

Rails需要JavaScript运行时为资产管道运行预编译步骤。如果您尝试在rake assets:precompile没有其中之一的情况下运行,您会看到以下消息:

ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See
https://github.com/sstephenson/execjs for a list of available runtimes.

为了解决这个错误安装nodejs,它附带一个JavaScript运行时:

sudo apt-get install nodejs

最后

就是这样!现在您已经拥有了一个Ruby环境,您可以使用它轻松地编写您的(第一个?)Rails应用程序。此后的良好阅读将成为Ruby on Rails官方指南

chruby和ruby-install的组合是如此强大的工具,可用于日常的Ruby开发。使用它,而不是来自apt的软件包过着奢华的生活。


你可能感兴趣的:(Ruby)