Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Как предоставить возможность использования Ruby, установленного с помощью rbenv, всем пользователям в Linux Debian

Установка Ruby очень удобно производится с помощью системы rbenv, которая устанавливается для конкретной учётной записи. Предположим, что мы установили Ruby в операционной системе Linux Debian для пользователя rbenv_ruby, соответственно, в каталог /home/rbenv_ruby/.rbenv . Для пользователя rbenv_ruby Ruby будет доступен, а вот для остальных пользователей системы - пока нет, т.е. пока он доступен локально, образно выражаясь.

Создаём файл /etc/profile.d/ruby.sh следующего содержания:

RBENV_ROOT="/home/rbenv_ruby/.rbenv"
export RBENV_ROOT

eval "$(/home/rbenv_ruby/.rbenv/bin/rbenv init - )"

Готово! Сейчас для каждого пользователя, который будет входить в систему, будет доступен интерпретатор Ruby, с помощью обычной команды ruby , т.е. фактически мы сделали общедоступным в системе интерпретатор, установленный локально для одного пользователя.

Все программы Ruby (скрипты) будут выполняться от имени (с правами доступа) того пользователя в системе, кто их запускает. При этом интерпретатор Ruby полностью защищён от любых изменений со стороны других пользователей.

Есть ещё один момент... Если вы хотите запускать в системе задания cron, написанные на Ruby, необходимо вместо запуска самого скрипта Ruby:

* * * * *   ruby ruby_system_script.rb

использовать запуск через shell:

* * * * *  /usr/bin/bash -lc 'ruby ruby_system_script.rb'

в данном случае, предварительно выполняется скрипт /etc/profile.d/ruby.sh как-будто был произведён вход пользователя в систему, соответственно, устанавливаются все необходимые переменные окружения и пути доступа к интерпретатору Ruby.

Единственное, возможно, неудобство состоит в том, что, например, устанавливать дополнительные gem-ы можно только от имени пользователя rbenv_ruby, но в этом заключается и преимущество - управление экосистемой Ruby централизованно и возможно только от имени одного пользователя.

Одним из наиболее значимых преимуществ использования системы rbenv для установки Ruby является возможность использования независимо друг от друга, изолированно, автономно разных версий Ruby, таким образом пользователи в вашей системе смогут использовать для себя любую из установленных версий Ruby - хоть в целом для аккаунта, хоть для отдельных программ и приложений, веб-приложений и интернет-сайтов.

P.S. Естественно, в Linux Debian также есть возможность установки Ruby в виде пакетов системы, представлено множество дополнительных пакетов и gem-ов - Ruby в Linux представлен очень обширно - и это очень радует - Ruby заслуженно занимает своё достойное место в экосистеме Linux.