【Ruby】無難にCentOSにインストールする方法は・・・(無かった

Ruby関連の記事をあさっていると・・・
中には「最近はMacで開発する人も多い」(前世紀の方か?)のような内容もあったので、記事の作成年をよ~く確認してみると、2015年以降はメンテナンスされていないのが多く、そのせいか、飛び先のURLやコマンドのURIにも「時代の古さ」がたっぷりと含まれていて実際コマンドを叩くとエラるのはご愛嬌。
ま、そんな感じなのでまともなRuby環境は整わなかったけど、
Ruby関連の用語はこんな感じらしい。

  •  rbenv
    • rubyのバージョンを管理するコマンド。
      • 環境変数のPATHを書き換え動くrubyを切り替えられる。
  • gem
    • rubyで作ったモジュール(ソース)を管理するコマンド。
      • GEnerate-Moduleの頭文字なんだろう。
  • bundler
    • rubyで作ったモジュールの依存関係ダケを管理するコマンド。
      • モジュールの依存関係を紐づけるダケ
  • passenger
    • あたかもapacheと言語(ruby等)を連結しているかのように振る舞うapacheのMOD。
  • Ruby on Rails
    • MVC(Module -View-Contoler)の1セットで画面の処理・表示・制御を作るrubyの開発ツール。
  • RedMine
    • Ruby on Rails で作ったプロジェクト管理ツール。

で、多分、あってると思う。
パッケージ管理の優先度は
bundler >> gem >> rbenv >> ruby
で、困ったことに、いづれも独自のフォルダでパッケージを管理するので
ついつい、パッケージを記事の通りにgemやbundlerでインストしてしまうと、
互いに「独自のフォルダ」でパッケージを管理するので混在しないのは救いだが
使い物にならないモノが出来上がってしまう。
インストールの順序は
git >> bundle、gem、rbenv >> ruby
になるようだ。
また、passengerについては、存在自体がイミフ。
※Windows版とLinux版のApacheの実装の差を埋めようとした様に思えだけど(キノセイ
Ruby on Railsは雛形サンプルファイル作成コマンドでいいだろう。
という訳でRuby on Rails で作ったRedMineを
CentOS7にインストするRuby環境を作るのが・・・
一番無難な気がしてきた。
だって、色々調べてみたら、これが本筋!というのが作れても、
RedMineが動かなかったら、そんなのは「実用性が無い」!
と評価されても仕方が無いからだ。
でも、開発歴史的には「こうなってしまった」んだろうけど、
今風なら「kれだよね?」という環境は作ってみたいと思う。
※Eclipseにもう入っている様な気がする。(書いた後に気が付いた。
⇒今までやっていたことは全くの無駄。orz … 道理で記事が古くなっている訳だ。
と云うのも

  • rubyという言語はrbenvコマンドでバージョンを管理
  • rubyで作ったソースはgemコマンドでパッケージ管理
  • rubyで作ったソースの参照パッケージはbundlerで依存関係(バージョン含む)を管理
  • GUIはruby on railsでコマンドでひな形管理

って、あー云えば、こー云う式でコマンドを繋いで叩く。
思いっきし、CUIの地の果てそのもの。

「その場凌ぎでコマンドを繋いだ結果⇒多重階層の迷路」

GUIの「⇒だらけのプルダウンメニュー」同様に全体の見通しが悪い。
毎度のことですが、Windows10のコントロールパネルなども、大型アップデートでドドーンと構成が入れ変わると、

大不評ですよね?

※現在(ビルド1803)のコントロールパネルは「スタート・メニュー」の「Windowsシステムツール」の中です(見つかりましたか?灯台基暗しですね?
直観的に「五里霧中」の状況に(自分も)陥りやすいことが、
ググってみて、よーく判りましたねぇ。(今回は(大笑
ps.
この環境は実行環境なので、Ruby on Rails 自体は入っていませんでしたが、ググってみると
# gem install rails
で追加できるハズです。
しかし、例えcat /etc/redhat-release でCentOS Linux release 7.5.1804 (Core)と表示するサーバーでも、 yum のリポジトリィは 2.0.0.648-33.el7_4 なので
ERROR: Error installing rails:
activesupport requires Ruby version >= 2.2.2.
と、はじかれます。
先のページの通りにrbenvをインストールしてrubyをインストするのが無難です。
また、ググったページではこの先のRubyOnRailsアプリの作り方の説明が
bundlerを使って bundle init して、Gemfileを
# frozen_string_literal: true
source “https://rubygems.org”
gem ‘rails7’, ‘>=3.2.1’
と書いて、
bundle install
で取り込む方式を採用しています。
というのも、安易に
# rails    new  アプリ名
とアプリの雛形を作ると、古いバージョンのsqlite3依存のGemfileができてしまい、厄介この上ないので
MySQLなら
# rails new アプリ名 -d mysql
postgreSQLなら
# rails new アプリ名 –database=postgresql
と書かないと何時間も無駄にしてしますので、そんな目には遭わせたくないという善意なのでしょう。
とりあえず、アプリに画面が無いと動きがわからないので
MVCのコントローラを作っておきます。
# cd アプリ名
# bundle install で、まだ設定やDL忘れているものを処理。
# rails g controller 画面名
でもまだ、MVC、データベースなど何も正しい設定をしていません。
Viewクラスつまり画面は、app/views/画面名/index.html.erbに作られるので
ブラウザに表示した時に判る様に適当に書き換えます。
データベースの設定は、config/database.yml に書きます。
host: localhost
username: pguser
password: password
のあたりを使うデータベース名、ユーザ名、パスワードに変えておきます。
もし、データベースが無かったら
# rake db:create
で作成します。※もちろん万能ユーザを使う場合だけです。
# rails s
とテスト用のサーバーを起動し、
ブラウザで、「サーバー名:3000/アプリ名/画面名/index/show」と入力すると、先のindex.htmlが表示。
長すぎるので
config/routes.rbに、
root ‘画面名#index’
と追加して、ブラウザでは、「サーバー名:3000/アプリ名」 だけで済むようにします。
ここで大体安定したらApacheとmod_passegerを使って表示するようにします。
/etc/httpd/httpd.dにアプリ名.confファイルを作り、
LoadModuleなどのシステム系の設定は各サーバーで変わるので
# passenger-install-apache2-module –snippet で探し出し

LoadModule passenger_module /home/webmaster/.rbenv/versions/2.1.2/lib/ruby/
gems/2.1.0/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot …
PassengerDefaultRuby …
</IfModule>

まるごとconfファイルに追記します。
何かエラったらlog/passenger.3000.logを見ます。
 
 
・・・
とまだまだ続きます
こんなのを書いていくと、
Railsのレールを轢くのがとても大変なことが判ります。
 
真っ当な結論としては
普通にWindowsにRubyを入れてEclipseでソースをイジった方が数段楽そうです。
Rubyアプリ用の公開サーバーをCentOSで作るのは仕方が無いとしても

CentOSでRubyの開発環境を作ったり使ったりするのはお勧めしません。

# rbenv install 2.2.3
Installing ruby-2.2.3…
WARNING: ruby-2.2.3 is past its end of life and is now unsupported.
It no longer receives bug fixes or critical security updates.
■ ※追記:このままカーソルがブリンクしたままいつまでたっても先に進みません。
の文字を読めば・・・
サーバーをリプレースしようとすると・・・
確実に心が折れると思われるからです。
同じことを繰り返さない。
⇒但し、サポート期間の終了を除く。
⇒・・・(何も成長していない)・・・(某校長風に
以上。(この項終了




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA