メモ書き程度に詰まったところなど、更新していきます。
更新は大分ゆっくりになると思います。
やること
https://railstutorial.jp/
上記サイトを参考にチュートリアル終了まで進める。
リポジトリ
https://github.com/kzyamax/rails-tutorial
環境構築 (Vagrant)
チュートリアルではCloud9推奨ですが、同時にインフラ構成も理解したいので、環境構築にはVagrantを使います。
Dockerは勉強中です。別で記事にするかも。
構成
- CentOS (6.9)
- Nginx
- puma
- Ruby (2.4.3)
- RubyOnRails (5.1.4)
※上記構成の予定(更新中)
つまったところ
Rubyがmakeできない
最初、何も考えずに最新版Ruby2.5.0をinstallしようとしたら
どうやらCentOS6.9にはRuby2.5.0はinstallできない模様。2.5.1では治るらしいよ。
(参考:https://bugs.ruby-lang.org/issues/14234)
妥協して2.4.3で進めます。
補足:VagrantfileのRubyのverを2.5.0に書き換えると再現できます。興味ある方は一度お試しください。
Nginxがpumaのsockを参照できない
2018/03/30 05:00:22 [crit] 8985#8985: *5 connect() to unix:///home/vagrant/hello_app.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.33.1, server: rails-tutorial, request: "GET /hello_app/ HTTP/1.1", upstream: "http://unix:///home/vagrant/hello_app.sock:/hello_app/", host: "rails-tutorial"
2018/03/30 05:00:22 [error] 8985#8985: *5 open() "/etc/nginx/html/500.html" failed (2: No such file or directory), client: 192.168.33.1, server: rails-tutorial, request: "GET /hello_app/ HTTP/1.1", upstream: "http://unix:///home/vagrant/hello_app.sock/hello_app/", host: "rails-tutorial"
原因はpumaサーバを起動するユーザと、Nginxを起動するユーザが異なることによるpermissionエラー
nginx.confのuserをvagrant
に書き換えてrestartしたら繋がりました。
hello_app
さて、実際の開発に入ります。
つまったこと
rails-serverが立ち上がらない
[vagrant@rails-tutorial hello_app]$ rails server
/usr/local/src/rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:84:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
Backtrace for gem load error is:
・・・
・・・
Gemfileにgem 'therubyracer'
を記載してbundle install
したら立ち上がりました。
toy_app
つまったこと
特につまることもなく終了
sample_app
更新中