ちぎっては投げるブログ

Programming, Android, RaspberryPi, Digital Devices, Kinkuma Hamster...

RaspberryPiにRuby on Railsをセットアップ

最近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にアクセスする。

f:id:mczh:20161030234010p:plain

上記の画面が出ればセットアップ完了。

今日はここまで。