PPAP
ペンパイナッポーアッポーペン
ではなく、私の使えるWeb言語。
PHP、Perl、Ajax(JS)、Python
10年前に「Ruby」と「Python」の人気度合いを調査して「Python」を選択した。
機械学習でも利用しているし、GitHub上にも多くのサンプルがあるしPythonを選んで間違ってなかったと思ってる。
困った時は「P」を選択する。
今では、これは私のジンクスだ。
このジンクスが出来たのは忘れもしない 1995年。
私は高校生。
ファミコンもスーファミも買ってくれなかった母親が、弟と妹が第一志望に合格したことを期に最新ゲーム機を買うと言い出した。
私は滑り止め以外の受験校には縁がなかったけどね・・・・
兄の威厳は皆無だ。
最新ゲーム機というのは
「セガサターン(SEGA SATURN)」 と「プレイステーション(PlayStation )」
私に、どちらのゲーム機を購入するかの責務が託された。
責任重大だが、そんなもの微塵も分からない。
仕方なく、ゲーム販売店の店員に確認した。
店員「どっちも一緒、違いは無いっす!」
店員「値段が高い方が作りがしっかりしてるしセガサターンがオススメっす!」
耳から脳みそが流れ落ちてそうな金髪のマイルドヤンキー兄ちゃんのアドバイスだったが、それを信じて購入した。だから倒産するんだよ!ブルート!!
その後、世間に「ファイナルファンタジーⅦ」が支持され、プレステの売上が激増。
結局これが最後の最後まで尾を引き、このハード戦争はプレステが勝つ事になったのは言うまでもない。
おかげで「ぷよぷよ」「ストリートファイターZero」「ボンバーマン」ぐらいしか遊んだ経験がない。
オタク機となったセガサターンは弟が所有。その後、どうなったのか把握してない。
とある担当者に自分の習得技術を説明する中で、
「私はP(Python、Perl、PHP)しか知らん!」
と言い切ったら、
「Ruby使ったこと無いとかRailsが使えないとか、Web開発者として価値がない」
と罵られれたので、心で大泣きしながら多少かじってみる。
もはや「Railsは終わった」と言われているが、世の中では未だ「Ruby」を使ったエンジニアを望んでいるらしい。
環境作りから必要か・・・長そうだ。
WindowsにRubyをインストール
Windows10へのインストールは大量に見つかる。
ここから安定版を持ってきてインストール。
終わったら次のようなダイアログが出る。
DEVKIT(MSYS2)のインストールに対して質問があるので、チェックを入れて完了。
Cygwin からインストールできるようにパス変更して、下記のコマンドで動作を確認。
1 2 |
# # ruby -v ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x64-mingw32] |
うん、簡単だ。
FreeBSDにRubyをインストール
さくらサーバーには標準でRubyが入っている。
1 2 |
$ ruby -v ruby 1.8.7 (2013-06-27 patchlevel 374) [amd64-freebsd11] |
古いね、8年前なので自前でインスールしてみるか。
rbenvとruby-buildの準備
ググったら、複数バージョンの Ruby を切り替えるだけでなく、ローカルディレクトリ毎に Ruby のバージョンを指定できる「 rbenv 」をインストールする方法が複数見つかった。
なので、rbenv使って自前で入れる。
併せてrbenv のプラグイン「 ruby-build 」もインストールする。
1 2 3 4 5 6 |
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile $ source ~/.bash_profile $ mkdir -p ~/.rbenv/plugins $ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build |
サクサク終わるね。
OpenSSLを自前ビルド
Ruby2.4以降はOpenSSL自前で用意しないとビルドが通らないらしい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
$ mkdir -p openssl/src $ cd openssl/src $ wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz $ tar -zxvf openssl-1.1.1a.tar.gz $ cd openssl-1.1.1a $ ./config --prefix=/home/hoge/openssl/src/openssl-1.1.1a/openssl/openssl Operating system: amd64-whatever-freebsd Configuring OpenSSL version 1.1.1a (0x1010101fL) for BSD-x86_64 Using os-specific seed configuration Creating configdata.pm Creating Makefile ********************************************************************** *** *** *** OpenSSL has been successfully configured *** *** *** *** If you encounter a problem while building, please open an *** *** issue on GitHub <https://github.com/openssl/openssl/issues> *** *** and include the output from the following command: *** *** *** *** perl configdata.pm --dump *** *** *** *** (If you are new to OpenSSL, you might want to consult the *** *** 'Troubleshooting' section in the INSTALL file first) *** *** *** ********************************************************************** |
こちらもサクサク完了したね、調子良いぞ!
ruby 2.7.2 をインストールする
rbenvでインストール可能なバージョンを確認すると「2.7.2」が存在した(「3.0.0」はまだ正式リリースではない)。
1 2 3 4 5 6 7 8 9 10 11 |
rbenv install --list 2.5.8 2.6.6 2.7.2 3.0.0 jruby-9.2.14.0 mruby-2.1.2 rbx-5.0 truffleruby-21.0.0 truffleruby+graalvm-21.0.0 |
では、2.7.2 をインストール。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
% TMPDIR=/home/hoge/tmp RUBY_CONFIGURE_OPTS=--with-openssl-dir=/home/hoge/openssl/openssl rbenv install 2.7.2 Downloading ruby-2.7.2.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.2.tar.bz2 Installing ruby-2.7.2... pkg: Unable to open '/usr/local/etc/pkg/repos//sakura11-repo.conf':Permission denied pkg: Insufficient privileges to query the package database pkg: Unable to open '/usr/local/etc/pkg/repos//sakura11-repo.conf':Permission denied pkg: Insufficient privileges to query the package database BUILD FAILED (FreeBSD 11.2-RELEASE-p14 using ruby-build 20210119) Inspect or clean up the working tree at /home/hoge/tmp/ruby-build.20210203113634.57041.N55jEM Results logged to /home/hoge/tmp/ruby-build.20210203113634.57041.log Last 10 log lines: /home/hoge/tmp/ruby-build.20210203113634.57041.N55jEM/ruby-2.7.2/tool/lib/vcs.rb:635: syntax error, unexpected ':', expecting '=' ...r, out: NullDevice, exception: false) ^ /home/hoge/tmp/ruby-build.20210203113634.57041.N55jEM/ruby-2.7.2/tool/lib/vcs.rb:641: syntax error, unexpected ':', expecting ')' cmd_pipe(env, cmd, chdir: @srcdir) do |r| ^ /home/hoge/tmp/ruby-build.20210203113634.57041.N55jEM/ruby-2.7.2/tool/lib/vcs.rb:659: syntax error, unexpected kEND, expecting $end from ./tool/file2lastrev.rb:10 gmake: *** [uncommon.mk:1130: revision.tmp] Error 1 gmake: *** Waiting for unfinished jobs.... |
「Permission denied」と表示されているので、そちらが問題なのかと思っていたが「syntax error」が問題のようだ。
これはお手上げ・・・、もう少し古いものをインストールするか。
ruby 2.6.6 をインストールする
1 2 3 4 5 6 7 8 9 |
$ TMPDIR=/home/hoge/tmp RUBY_CONFIGURE_OPTS=--with-openssl-dir=/home/hoge/openssl/openssl rbenv install 2.6.6 Downloading ruby-2.6.6.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.6.tar.bz2 Installing ruby-2.6.6... pkg: Unable to open '/usr/local/etc/pkg/repos//sakura11-repo.conf':Permission denied pkg: Insufficient privileges to query the package database pkg: Unable to open '/usr/local/etc/pkg/repos//sakura11-repo.conf':Permission denied pkg: Insufficient privileges to query the package database Installed ruby-2.6.6 to /home/hoge/.rbenv/versions/2.6.6 |
インストールできた!
rbenvでRubyのバージョンを変えるためには、準備としてターミナルで、下記が実行されている必要がある。
1 |
eval "$(rbenv init -)" |
これにより「.rbenv/shims/ruby」というrbenvでインストールした各バージョンのRubyの情報が保存されているパスを参照できるようになる。
インストールしたRubyのバージョンのリストを確認して切り替えてみる。
1 2 3 4 5 6 7 |
$ rbenv versions system * 2.6.6 (set by /home/ukyo/.rbenv/version $rbenv shell 2.6.6 $ ruby -v ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-freebsd11.2 |
「2.6.6」は「2020年3月31日」のリリースになっている。少し古いけど、まぁいいか。
FreeBSDにRailsをインストール→断念
Node.js+yarn+Ruby+Rails+SQLite3
という途方も無いインストールがRoot権限がない環境で必要となる。
更にググると、
さくらレンタルサーバーでは、Ruby on Railsは動作するが、レスポンスが糞遅いのでやめましょう
書いてある・・前途多難。
こんな面倒な事やりたくないよ・・・。
そもそも「さくらインターネットサーバー」はnode.js動かしても殺されるし、意味ない。やめた!
Ubuntu にRuby on Railsをインストール
これはググって、そのまま。3分クッキングだ。
例えば、下記をスクリプトにして実行。はい、終わり。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# コンパイラおよび必要なツールをインストール sudo apt install build-essential -y sudo apt install -y libssl-dev libreadline-dev zlib1g-dev # rbenv(パッケージ管理ツール)をインストール git clone https://github.com/sstephenson/rbenv.git ~/.rbenv # 環境変数にPathを設定 echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc # シェルを再起動 exec $SHELL -l # ruby-buildをインストール git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build #Rubyをインストール rbenv install 2.6.6 rbenv global 2.6.6 # railsをインストール gem install rails -v "6.0.1" # 動作確認 rails -v # SQLiteをインストール sudo apt install libsqlite3-dev # node.js, npmをインストール sudo apt install -y nodejs npm # n packageをインストール sudo npm install n -g # n packageを使ってnodeをインストール sudo n stable # 最初に入れた古いnode.js, npmを削除 sudo apt purge -y nodejs npm # 再ログイン exec $SHELL -l # yarn packageをインストール sudo npm install yarn -g # node.js のバージョンが最新か確認 node -v |
これでインストールされたもののバージョン確認。
1 2 3 4 5 6 7 8 9 10 |
$ cat /etc/os-release | grep PRETTY_NAME PRETTY_NAME="Ubuntu 18.04.2 LTS" $ rails -v Rails 6.0.1 $ ruby -v ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux] $ yarn -v 1.22.10 $ node -v v14.15.4 |
でも、グローバルへの「gem install rails」はRuby の環境が 汚れるため推奨されないらしい。意味不明・・・。
Railsを使った新規アプリ立ち上げの流れ
とりあえず起動して、動作見ながらソースコードを読めば理解できる・・はず。
1 2 3 4 5 6 7 8 |
# Railsを使った新規アプリ(sample)立ち上げの流れ rails new sample # ディレクトリの移動 cd sample # gemのインストール bundle install # データベースの作成 rails db:create |
これで、ローカルサーバーが起動する。
1 2 3 4 5 6 7 8 9 10 |
$ rails s -b X.X.X.X (IPアドレス) => Booting Puma => Rails 6.0.3.4 application starting in development => Run `rails server --help` for more startup options Puma starting in single mode... * Version 4.3.7 (ruby 2.6.6-p146), codename: Mysterious Traveller * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://X.X.X.X:3000 Use Ctrl-C to stop |
他のPCから閲覧してみる。
おっ、見れた。
ようやくスタートラインだ・・・2日経過。
Railsを使った既存アプリ立ち上げ
ネットに転がってるサンプルコードを読んで学習したい場合は次のような手順を踏む。
YouTubeでも解説しているサンプルがあったので、これを利用する。
学生らしい・・・しっかりしてるなぁ。
1 2 3 4 5 6 7 |
# Bundlerのインストール gem install bundler # Gemfile.lock の内容に従ってライブラリをインストール bundle install # schema_migrationsテーブルを調べ、存在しなければ作成 bundle exec rake db:migrate rails s -b 43.31.111.176 |
Rubyのバージョンエラーが出るが、修正すると起動するようになる。
View以外を更新したら、railsの再起動が必要。
解説ビデオもあった。20歳若い人に技術も及ばない・・・。人生遊びすぎたのかな。
まとめ
インストール方法が面倒だった・・・・。
そしてRuby on Rails の学習を始めてみたが、これ・・・プロラミング言語じゃないよ。
Railsの定義が多くありすぎて、またGem独自の書き方が多すぎて、全く意味が分からない。2日間コード眺めてネットで調べているけどね。
Ruby on Rails 勉強すれば、「Python+Django」「PHP+Laravel」「Java+Play Framework」なども理解できるかも・・・という甘い理解だったが厳しすぎる。
世の中の需要に自分のスキルが追いついてない・・・・。