最近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にアクセスする。
上記の画面が出ればセットアップ完了。
今日はここまで。