最近Ruby on Railsをちょっとだけ触っている。 そこで、Railsの勉強のために自宅でも何か建ててみようと思う。
せっかくなので実際に使うものが良い。
そこで、家のRaspberryPiで動かしているもろもろのプログラムをローカルLAN公開のWEBページで制御できるようにすることにした。
たとえば、家の照明制御をラズパイからできるようにしている。 これをスマホからブラウザアクセスで操作するとか、cronで動いているプログラム群の時間を制御するとか、センサーの値を確認できるようにするとか…。
まずは、RaspberryPi上にRuby on Railsの環境構築をする。 RaspberryPiはRaspberryPi2である。3も持っているが、3より2で動かしているアプリのほうが多いので2にした。
Rubyのインストール
apt-getでインストールするRubyはバージョンが古い。 rbenvでちゃんといれることにする。
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc source ~/.bashrc
PATHが通ったか確認する。
rbenv
動けばOK。
続けてRubyのインストール準備
git clone git://github.com/sstephenson/ruby-build.git ruby-build
sudo ruby-build/install.sh
rbenv rehash
sudo apt-get install -y libssl-dev ruby-dev libreadline-dev
現在公開されいているバージョンを確認する。 ここでは2.3.1にした。
rbenv install --list
必殺の4コア並列ビルド!
MAKE_OPTS="-j 4" rbenv install 2.3.1
[pi@ras01: ~ 21:27:47] $ MAKE_OPTS="-j 4" rbenv install 2.3.1 Downloading ruby-2.3.1.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2 Installing ruby-2.3.1... Installed ruby-2.3.1 to /home/pi/.rbenv/versions/2.3.1 [pi@ras01: ~ 22:11:29] $
……そんなに早くはないようだ。
最後に、通常使用するRubyのバージョンを指定する。
rbenv global 2.3.1
Rubyのインストールにかかる時間は1時間ほど。
bundlerのインストール
gem install bundler bundle config --global --jobs 4 rbenv rehash
railsのインストール
gem install rails
動作確認Railsを動かす
rails new rasp-web
An error occurred while installing sqlite3 (1.3.12), and Bundler cannot continue. Make sure that succeeds before bundling.
SQLiteがないと怒られてしまった。
気を取り直して
sudo apt-get instal -y libsqlite3-dev gem install sqlite3 -v '1.3.12'` rails new rasp-web rails s
=> Booting Puma => Rails 5.0.0.1 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.6.0 (ruby 2.3.1-p112), codename: Sleepy Sunday Serenity * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://localhost:3000 Use Ctrl-C to stop
これだとRaspberryPi自身以外から見れないことに気がついたので、IPに0.0.0.0を指定する。
rails s -b 0.0.0.0
私のRaspberryPiはras01.localで参照できるように設定しているので、 WindowsPCのブラウザからras01.local:3000にアクセスする。
上記の画面が出ればセットアップ完了。
今日はここまで。