ども、遠藤です。
そろそろアドベントカレンダーの時期が近づいてきましたね!
アドベントカレンダーといえば Qiita が定番ですが、イントラ環境で動かしたい人など向けに Ruby on Rails 製の radvent というアプリケーションがあり、勤務先の社内アドベントカレンダーで使われています。
nanonanomachine/radvent: Advent calendar app for programmers like Qiita
このアプリはとても素晴らしいアプリなのですが、機能追加のリクエストとして 「新着コメントをトップページで見れるようにしてほしい」という声が上がっていました。 GitHub を見てみたところ issue も上がっているようでしたが、作者様ご多忙のようなので、自分で改良しようと考えました。
アプリを改良するためにはまず検証用に手元で radvent を起動してみたいところですが、 rails 初心者にはいくつかハマりどころがあったので、試行錯誤の顛末を簡単にまとめます。
(1) ruby 環境のインストール + Rails インストール
そもそも Rails を動かすために、ruby を入れる必要があります。 まっさらの環境で ruby が入っていなかったので、下記サイトを参考にインストールしました。
rbenvでRubyを管理し、Rails開発環境を構築する | maesblog
ここでポイントは、システムに入っている ruby を使うのではなく、rbenv を使うということでした。 Python もそうですが、LL言語はバージョン間の違いが激しかったりするので、rbenv や pyenv のように 柔軟にバージョンを切り替えられるシステムは必須だと感じました。
なお、 radvent では ruby 2.1.5 が要求されている と言うのがちょっとしたハマリポイントでした。
(2) Javascript 実行環境のインストール
上記サイトの手順通りに Rails をインストールしたら、 $ bundle exec rails s
でアプリケーションを立ち上げます。
しかし、エラーが出て立ち上がってくれません。
Gem Load Error is: Could not find a JavaScript runtime. ちーん
— Neppo Telewisteria (@jo7ueb) November 8, 2017
アプリケーションの実行に Javascript 実行環境が必要なのに、インストールされていないという問題でした。
Node.js をインストールするなどの手順がありますが、今回はなるべく環境を汚したくなかったので、
bundle install
コマンドですべてがインストールできるようにしました。
手順は Gemfile を一行コメントアウトして、 therubyracer
というパッケージを入れるだけでした。
詳細は下記PRを見てください。
add missing dependency: therubyracer by jo7ueb · Pull Request #39 · nanonanomachine/radvent
(3) 鍵の生成
次に bundle exec rails s
をすると、鍵がないとのことで怒られてしまいます。
Unexpected error while processing request: Missing `secret_key_base` for 'development' environment, set this value in `config/secrets.yml`
— Neppo Telewisteria (@jo7ueb) November 8, 2017
友人と Google 先生の助言より、鍵生成とコンフィグファイルの生成がわかりました。
bundle exec rake secret で鍵を生成して、config/secrets.yml をまず作るとhttps://t.co/sxKvYrUYHB
— Neppo Telewisteria (@jo7ueb) November 8, 2017
(4) データベースの初期化
次に bundle exec rails s
を実行すると、また別のエラーで怒られてしまいました。
ActiveRecord::PendingMigrationError -
— Neppo Telewisteria (@jo7ueb) November 8, 2017
Migrations are pending. To resolve this issue, run:
bin/rake db:migrate RAILS_ENV=development
はいはいやりますよ
今度は何を実行すればいいかがエラーメッセージに書いてあったので、素直に実行します。
$ bundle exec rake db:migrate RAILS_ENV=development
— Neppo Telewisteria (@jo7ueb) November 8, 2017
(5) Finish!!
満を持して bundle exec rails s
を実行したら、やっと動きました!
喜びが溢れます。
うおおおおお、radvent 動いたあああ
— Neppo Telewisteria (@jo7ueb) November 8, 2017
ruby 初心者には若干ハマリポイントがありましたが、なんとか手元で環境を立ち上げることができました。 次は、暇な時に色々と弄ってみて、コメント表示機能が追加できればいいな、と思います。
では。