File: //opt/alt/python37/lib/python3.7/site-packages/clwizard/modules/__pycache__/ruby.cpython-37.pyc
B
�E0����� @ s� d dl mZ d dlZd dlmZ d dlmZmZmZ d dl m
Z
d dlmZ d dl
mZ d dlmZ d d
lmZ G dd� de�ZdS )
� )�absolute_importN)�Feature)�ExternalProgramFailed�get_passenger_package_name�is_litespeed_running)�
get_ui_config)�MODULES_LOGS_DIR)�InstallationFailedException)�installed_interpreters_list� )�WizardInstallerc sd e Zd Zej�ed�Zej Z
� fdd�Zdd� Zdd� Z
dd � Zd
d� Zdd
� Zedd� �Z� ZS )�
RubyInstallerzruby.logc s t t| ��� d S )N)�superr
�__init__)�self)� __class__� �py/clwizard/modules/ruby.pyr s zRubyInstaller.__init__c
C s~ g }x&|D ]}d|� dd� }|�|� q
W | j�dd�|�� y| j|� W n* tk
rx } zt� |�W d d }~X Y nX d S )Nzalt-ruby�.� z-Try to install Ruby package with versions: %s�,)�replace�appendZ
app_logger�info�joinZ_install_groupsr r )r �versions�groups�vZpackage_name�er r r �_install_ruby_versions s
z$RubyInstaller._install_ruby_versionsc
C sV d}t j�|�sdS y| �d|g� W n* tk
rP } zt� |�W dd}~X Y nX dS )a
In order to make ruby apps work on Litespeed server, we need to run an
extra script
See docs for details:
https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cloudlinux:enable_passenger
:return:
z9/usr/local/lsws/admin/misc/enable_ruby_python_selector.shNZsh)�os�path�isfile�_run_commandr r )r Zlitespeed_scriptr r r r �_configure_for_litespeed_server) s z-RubyInstaller._configure_for_litespeed_serverc C s2 | � t� �}t� p(t� �di ��d� }|o0|S )a�
Check that the Ruby Selector is ready to work
All configurations were done and Passenger is installed
We always have at least one ruby package installed, because it's a
dependency of the Passenger package, so we can skip that check
If the config file does not exist, we ignore the uiSettings
:return: already_configured status
:rtype: bool
Z
uiSettingsZhideRubyApp)Z_is_package_installedr r �get)r Zpassenger_installedZ
configs_okr r r �_is_already_configured<