はじめに
サーバーサイドの知識があまりなかったため、Railsをなんとなーく導入してみようと思い、なんとなーく環境構築を勧めていたら、無知も相まって色々と悩んだのでメモを残しておく。今回予め、Gitlab,Redmineあたりを勉強ついでに導入しており、その関係でRails側の設定やインストール工程を一部省いたりもしたため、rubyとかbundlerとかpostgresqlとかをrailsのためにインストールし直したりはしていない。
Railsを導入するにあたって参考にしたサイト
環境
- OS (CentOS7)
- ruby (2.4.1)
- bundler (1.17.3)
- gem (3.0.4)
- rails (5.2.3)
- postgresql (9.2.24)
本題
bundler command not found: spring
Bundle complete! 18 Gemfile dependencies, 60 gems now installed.
Gems in the groups development and test were not installed.
Bundled gems are installed into `./vendor/bundle`
run bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`
rails new 'アプリ名' -d postgresqlを実行した時に出たエラー。
単純にspringというコマンドがなく、次の工程に進めないという話なのだけど、なぜ存在しないのかが分からなかった。
結論から言うとbundlerのconfigに問題があり、developmentとtestグループがBUNDLE_WITHOUTに設定されていたため、Gemfileの特定の行を通っていなかった。
参考URL(http://ruby.studio-kingdom.com/bundler/bundle_config/)
---
BUNDLE_PATH: "vendor/bundle"
BUNDLE_WITHOUT: "development:test"
ひとまず以下の様に修正
---
BUNDLE_PATH: "vendor/bundle"
BUNDLE_WITHOUT: "test"
これでspringコマンド含め、諸々インストールされた。
Could not find a JavaScript runtime
JSのランタイムがないとかなんとか。nodejsインストールで解決した。
参考URL(http://djandjan.hateblo.jp/entry/2018/07/25/224929)
Address already in use
正しくは
Address already in use - bind(2) for "127.0.0.1" port 3000 (Errno::EADDRINUSE)
と出力されていた。
多分3000番ポートが既に使用されているので、ポートの使用状況を lsof -i:3000 で確認してみたら、どうやらGitlabで使われてるっぽい...のでRailsのポートを変更することにした。
以下のコマンドでひとまず解決。
$ rails s -p 3001
Linux上ではひとまず起動したようなので、よしこれでページアクセスできるわ!と思い、ブラウザーにアドレス入力。エンターキーに渾身の力をこめてターンッしたら想定していたページが表示されない。このサイトにアクセスできませんとのこと。
これについては、下のURLに詳しいことが書いてあった。
参考URL
結果
$ rails s -b 0.0.0.0 -p 3001
これでアクセス"は"できるようになった。
あとファイアウォールのポートの設定忘れてるとアクセスできないので注意。
role "ユーザー名" does not exist
データベース側の設定ができておらんのでアクセスできてもページの表示ができなかった。
まずはユーザーが存在しないところから。下記URLの通りにすれば作成できた。ユーザー名はRails sを実行しているユーザー名にすればいい思う。(多分)
自分の場合はrootでやっていたので、
$ sudo su – postgres
$ createuser -s -r root
で作成は完了。
参考URL(https://kirohi.com/rails_pg_error_role_doesnotexist)
データベースが存在しない。
下記URLの通り設定していきましょう。"Rails の設定とか"の辺りに詳しく書いてある。
データベースの名前はエラーページに表示されている通り。(***の部分はrails new で作成したアプリの名前)
***_development
***_test
***_production
参考URL
余談
改めて記事にしてみて、アドレスの指定のところとか、そもそもDBまわりの知識があまりないとかちらほらあったので改めて調べ直したら記事にして考えを整理したいと思う。
また、もし誤った情報があれば、ご指摘いただけると幸いです。