はじめに
RailsGilrsや万葉さまの新人社員教育用カリキュラムである [el-training]など、(https://github.com/everyleaf/el-training) Rubyを勉強しようとしている方で、Macを持っていないもしくは貧弱なPCスペックの方向けの環境構築ガイドです。
RailsGirlsについては対象が参加向けではなく、コーチやってみたいなぁと思っているけど環境構築は得意じゃないよって方向け(いるのかそんな人?)ですのでご注意ください
RailsGirlsってどんな感じですすめるのだろう?とサイトに手順通り試してみようと普段使わないwindowsマシンを引っ張り出しWSL上に構築したらrailsの動作確認までに1時間かかってしまった(PCが非力なのは当然として、多分SSDじゃなくてHDDだったのが大きな原因)ので、Cloud9上で構築してみました。
ネット上で探すと同じ内容のものがいくらでも出てきますが、自分の欲しい環境とは異なっていたのでメモを兼ねて。なお、本記事公開から時間が経っても参考になるように注意しながらまとめてみました。
本構築記事のゴール
- RailsGirlsでの到達点
- 「インストールガイド」完了相当
- 違いはPostgresqlのインストール(railsgirlsでは本来不要)
- 「インストールガイド」完了相当
- el-trainingでの到達点
- 「ステップ1: Railsの開発環境を構築しよう」完了相当
条件
- AWSアカウントの作成やIAMの設定などは事前に終わっている前提です。
- 2020/5/15~2020/5/16に試しました。
- ruby/rails環境は以下の通り
- ruby2.6.6
- railsgirlsだと最新(いまだと2.7系)なので読み替えてください
- rails6.0.3
- postgresqlを利用する(Cloud9環境にはmysqlが導入済みなので置き換えます)
- webpackerを利用する
- ruby2.6.6
- Clound9の設定
- Platformでは
Ubuntu Server 18.04 LTS
を選択
- Platformでは
構築手順
Cloud9の起動とターミナルの起動まで
NewTerminalを開きます。
開くと ~/environment
ディレクトリをカレントディレクトリとしてターミナルが起動します。どうやら、Cloud9ではプロジェクトファイルなどはこのディレクトリ配下に置くのがお作法のようです。
タイムゾーンの変更
日付が日本時間となっていない(UTC)ですね。
y-amadatsu:~/environment $ date
Sat May 16 02:29:10 UTC 2020
先にタイムゾーンを変更しておきましょう。
y-amadatsu:~/environment $ timedatectl list-timezones | grep -i tokyo
Asia/Tokyo
設定するタイムゾーンを確認すると Asia/Tokyo
のようですね。
y-amadatsu:~/environment $ sudo timedatectl set-timezone Asia/Tokyo
y-amadatsu:~/environment $ date
Sat May 16 11:33:46 JST 2020
date
コマンドで、日本時間に変更されたことが確認できました。
Rubyのインストールまで
Rubyのバージョンを確認。ちょっと古いので新しいバージョンをインストールする準備を行います。
y-amadatsu:~/environment $ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
y-amadatsu:~/environment $ which ruby
/home/ubuntu/.rvm/rubies/ruby-2.6.3/bin/ruby
デフォルトではrvmがインストールされていたのですが、普段rbenvを使っているのでインストールしなおします。
まずはrvmさま、さようなら
y-amadatsu:~/environment $ rvm implode
Are you SURE you wish for rvm to implode?
This will recursively remove /home/ubuntu/.rvm and other rvm traces?
(anything other than 'yes' will cancel) > yes
Removing rvm-shipped binaries (rvm-prompt, rvm, rvm-sudo rvm-shell and rvm-auto-ruby)
Removing rvm wrappers in /home/ubuntu/.rvm/bin
Hai! Removing /home/ubuntu/.rvm
/home/ubuntu/.rvm has been removed.
Note you may need to manually remove /etc/rvmrc and ~/.rvmrc if they exist still.
Please check all .bashrc .bash_profile .profile and .zshrc for RVM source lines and delete or comment out if this was a Per-User installation.
Also make sure to remove `rvm` group if this was a system installation.
Finally it might help to relogin / restart if you want to have fresh environment (like for installing RVM again).
最後に不要なファイルなどを削除するように指示がありますが、初めてのenvironment1として起動した私の環境では単にrailsを動かすだけなら不都合なさそうなのでこのまま進めます。もし後でrubyのコマンドが見つからない、実行しているrubyのバージョンが異なるなどの不都合が発生した場合は上記の設定を見直すこととしましょう。
ではrbenvをインストールします。
本家サイトのインストール手順を見ながら進めます。
y-amadatsu:~/environment $ sudo apt-get update
y-amadatsu:~/environment $ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
y-amadatsu:~/environment $ cd ~/.rbenv && src/configure && make -C src
make: Entering directory '/home/ubuntu/.rbenv/src'
gcc -fPIC -c -o realpath.o realpath.c
gcc -shared -Wl,-soname,../libexec/rbenv-realpath.dylib -o ../libexec/rbenv-realpath.dylib realpath.o
make: Leaving directory '/home/ubuntu/.rbenv/src'
今回はインストール手順のとおり試しましたが、これからは sudo apt-get update
は sudo apt update
に置き換えて慣れたほうが良いと思います2。
あと、Bashなんでついでに cd ~/.rbenv && src/configure && make -C src
を試してみました。コンパイルしているので速度向上となると思いますが、通常は不要です3。
カレントディレクトリ ~/.rbenv
に変わりましたが気にせずに続けます…
y-amadatsu:~/.rbenv (master) $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
y-amadatsu:~/.rbenv (master) $ ~/.rbenv/bin/rbenv init
# Load rbenv automatically by appending
# the following to ~/.bash_profile:
eval "$(rbenv init -)"
指示の通り .bash_profile
に追加します。
y-amadatsu:~/.rbenv (master) $ echo eval "$(rbenv init -)" >> ~/.bash_profile
指示通りターミナルをいったん閉じて開きなおして4続きを。
brew docker
みたいな診断プログラムですね。
y-amadatsu:~/environment $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for `rbenv' in PATH: /home/ubuntu/.rbenv/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: not found
Unless you plan to add Ruby versions manually, you should install ruby-build.
Please refer to https://github.com/rbenv/ruby-build#installation
Counting installed Ruby versions: none
There aren't any Ruby versions installed under `/home/ubuntu/.rbenv/versions'.
You can install Ruby versions like so: rbenv install 2.2.4
Checking RubyGems settings: OK
Auditing installed plugins: OK
ruby-build
は入れてないから当然
Checking `rbenv install' support: not found
なのですが、rbenvのインストール手順ではすでに導入済みの状態でサンプルが示されているのでちょっと混乱しそうなポイント。
とはいえ、指示通り https://github.com/rbenv/ruby-build#installation を見ながらすすめましょう。
今回は一般的と思われるrbenvのプラグインとしてインストールを進めます。
y-amadatsu:~/environment $ mkdir -p "$(rbenv root)"/plugins
y-amadatsu:~/environment $ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
Cloning into '/home/ubuntu/.rbenv/plugins/ruby-build'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 10844 (delta 1), reused 3 (delta 0), pack-reused 10835
Receiving objects: 100% (10844/10844), 2.28 MiB | 16.79 MiB/s, done.
Resolving deltas: 100% (7158/7158), done.
y-amadatsu:~/environment $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for `rbenv' in PATH: /home/ubuntu/.rbenv/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /home/ubuntu/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20200401-11-g12af1c3)
Counting installed Ruby versions: none
There aren't any Ruby versions installed under `/home/ubuntu/.rbenv/versions'.
You can install Ruby versions like so: rbenv install 2.2.4
Checking RubyGems settings: OK
Auditing installed plugins: OK
これでよし。それではrubyをインストールします。今回はruby2.6系の最新版である2.6.6をインストールしました。
EC2がt2.microだと時間がそれなりにかかります
私の時には10分くらいかかった…かも(記憶が飛んでいる)
y-amadatsu:~/environment $ rbenv install 2.6.6
Downloading ruby-2.6.6.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.6.tar.bz2
Installing ruby-2.6.6...
Installed ruby-2.6.6 to /home/ubuntu/.rbenv/versions/2.6.6
y-amadatsu:~/environment $ rbenv global 2.6.6
y-amadatsu:~/environment $ ruby -v
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux]
よし、インストールまで完了しました!
必要なパッケージのインストールと不要なパッケージ(mysql)への対応
今回はrails6を動かすので、必要なパッケージをインストールします。
- postgresql
- redis
- yarn
事前準備として、yarnをapt経由でインストールできるようにします。 公式サイト を参考にまずはDebian package repository用の公開鍵を登録&aptの設定をしてからインストールしましょう。
y-amadatsu:~/environment $ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
OK
y-amadatsu:~/environment $ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
deb https://dl.yarnpkg.com/debian/ stable main
リポジトリを追加した場合は必ず sudo apt update
してください。
y-amadatsu:~/environment $ sudo apt update
Hit:1 https://download.docker.com/linux/ubuntu bionic InRelease
Get:2 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
Hit:3 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease
Get:4 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:5 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:6 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Get:7 https://dl.yarnpkg.com/debian stable/main amd64 Packages [9953 B]
Get:8 https://dl.yarnpkg.com/debian stable/main all Packages [9953 B]
Fetched 289 kB in 1s (499 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
30 packages can be upgraded. Run 'apt list --upgradable' to see them.
最新のパッケージリストを取り込んだところ、更新できるパッケージがたくさんありそうなのでこのタイミングで更新しておきます。
y-amadatsu:~/environment $ sudo apt upgrade -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
...省略...
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
The sys schema is already up to date (version 1.5.2).
Checking databases.
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.
Setting up mysql-server (5.7.30-0ubuntu0.18.04.1) ...
Processing triggers for initramfs-tools (0.130ubuntu3.9) ...
update-initramfs: Generating /boot/initrd.img-5.3.0-1017-aws
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for systemd (237-3ubuntu10.40) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for dbus (1.12.2-1ubuntu1.1) ...
Processing triggers for ureadahead (0.100.0-21) ...
更新完了です…と のログで気づいたのですがmysqlはすでにいそうですね…
y-amadatsu:~/environment $ ps aux | grep [m]ysql
mysql 27099 0.1 17.7 1161948 178088 ? Sl 12:36 0:00 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
やはり、入っていました。 宗教上の理由により 今回は不要なので先に対応しておきます。
まずはサービスを止めてからパッケージをサービスを無効化しておきます。
サービスを止めてから…
y-amadatsu:~/environment $ sudo systemctl stop mysql
動いていないことを確認して…
y-amadatsu:~/environment $ sudo systemctl status mysql
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2020-05-15 12:47:38 UTC; 11s ago
Main PID: 27099 (code=exited, status=0/SUCCESS)
May 15 12:36:21 ip-10-10-10-180 systemd[1]: Starting MySQL Community Server...
May 15 12:36:22 ip-10-10-10-180 systemd[1]: Started MySQL Community Server.
May 15 12:47:36 ip-10-10-10-180 systemd[1]: Stopping MySQL Community Server...
May 15 12:47:38 ip-10-10-10-180 systemd[1]: Stopped MySQL Community Server.
y-amadatsu:~/environment $ ps aux | grep [m]ysql
サービスを無効化(起動時の自動起動設定をOFF)します。
y-amadatsu:~/environment $ sudo systemctl disable mysql.service
Synchronizing state of mysql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable mysql
y-amadatsu:~/environment $ sudo systemctl list-unit-files mysql.service
UNIT FILE STATE
mysql.service disabled
1 unit files listed.
それでは必要なパッケージインストールします。
y-amadatsu:~/environment $ sudo apt install postgresql libpq-dev redis yarn -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
...省略...
Adding user postgres to group ssl-cert
Creating config file /etc/postgresql-common/createcluster.conf with new version
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
Removing obsolete dictionary files:
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /lib/systemd/system/postgresql.service.
Setting up libsensors4:amd64 (1:3.4.0-4) ...
Setting up postgresql-client-10 (10.12-0ubuntu0.18.04.1) ...
update-alternatives: using /usr/share/postgresql/10/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode
Setting up redis-tools (5:4.0.9-1ubuntu0.2) ...
Setting up libpq-dev (10.12-0ubuntu0.18.04.1) ...
Setting up sysstat (11.6.1-1ubuntu0.1) ...
Creating config file /etc/default/sysstat with new version
update-alternatives: using /usr/bin/sar.sysstat to provide /usr/bin/sar (sar) in auto mode
Created symlink /etc/systemd/system/multi-user.target.wants/sysstat.service → /lib/systemd/system/sysstat.service.
Setting up postgresql-10 (10.12-0ubuntu0.18.04.1) ...
Creating new PostgreSQL cluster 10/main ...
/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "C.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /var/lib/postgresql/10/main ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default timezone ... Etc/UTC
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 down postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: using /usr/share/postgresql/10/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
Setting up postgresql (10+190ubuntu0.1) ...
Setting up redis-server (5:4.0.9-1ubuntu0.2) ...
Created symlink /etc/systemd/system/redis.service → /lib/systemd/system/redis-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/redis-server.service → /lib/systemd/system/redis-server.service.
Setting up redis (5:4.0.9-1ubuntu0.2) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for systemd (237-3ubuntu10.40) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for ureadahead (0.100.0-21) ...
postgresはただしくpostgresユーザが作られていることが確認できます。あと Creating new PostgreSQL cluster 10/main ...
とか気になる記載も。今のpostgresはデフォルトでクラスタ作るんですかね
postgresはあとで動作確認しますので、それ以外が正しくインストールできているか確認しましょう。
y-amadatsu:~/environment $ redis-cli --version
redis-cli 4.0.9
y-amadatsu:~/environment $ redis-server --version
Redis server v=4.0.9 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=9435c3c2879311f3
y-amadatsu:~/environment $ yarn --version
1.22.4
redisはクライアントとサーバのどちらも4系が入っていますね。sidekiq6だと4以上が要求されるのでこれで安心
また、postgresとredisはサーバとして動作させますのでサービスとして有効化されているか確認します。
y-amadatsu:~/environment $ sudo systemctl list-unit-files redis*.service
UNIT FILE STATE
redis-server.service enabled
redis-server@.service disabled
redis.service enabled
3 unit files listed.
y-amadatsu:~/environment $ sudo systemctl list-unit-files postgres*.service
UNIT FILE STATE
postgresql.service enabled
postgresql@.service indirect
2 unit files listed.
問題なさそうですね!
postgresとredisを起動しておきましょう。
起動状態を確認します。
y-amadatsu:~/environment $ sudo systemctl status redis-server
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-05-16 01:34:28 UTC; 32min ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Main PID: 962 (redis-server)
Tasks: 4 (limit: 1121)
CGroup: /system.slice/redis-server.service
└─962 /usr/bin/redis-server 127.0.0.1:6379
May 16 01:34:27 ip-10-10-10-180 systemd[1]: Starting Advanced key-value store...
May 16 01:34:28 ip-10-10-10-180 systemd[1]: redis-server.service: Can't open PID file /var/run/redis/redis-server.pid (yet?) after start: No such file or directory
May 16 01:34:28 ip-10-10-10-180 systemd[1]: Started Advanced key-value store.
y-amadatsu:~/environment $ sudo systemctl status postgresql.service
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2020-05-16 01:34:31 UTC; 33min ago
Main PID: 1386 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 1121)
CGroup: /system.slice/postgresql.service
May 16 01:34:31 ip-10-10-10-180 systemd[1]: Starting PostgreSQL RDBMS...
May 16 01:34:31 ip-10-10-10-180 systemd[1]: Started PostgreSQL RDBMS.
ちなみに上記ログですが、確認の前後でCloud9の再起動が入ってしましました(インストールの翌日に確認した)。おそらくどちらも起動していないと思いますのでその場合は起動しましょう。
y-amadatsu:~/environment $ sudo systemctl start redis-server.service
y-amadatsu:~/environment $ sudo systemctl start postgresql.service
きちんと動作しているか、 sudo systemctl status ...
コマンドで確認すれば完璧です!
なお、postgresqlについては、インストール時のログで
Success. You can now start the database server using:
/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start
とありましたがUbuntu環境では systemctl
を経由して起動・停止したほうが便利ですのでこちらを利用しました。
必要なパッケージは(ひとまず 5 )これで揃いました。
テストでrails6を動かしてみる
railsgarlsを参考にサンプルのrails6アプリを作りながら動作確認してみましょう。動作確認ですので詳細の説明は省きます
Railsのインストール
y-amadatsu:~/environment $ gem install rails --no-document -v "6.0.3"
サンプルのrailsアプリの作成
y-amadatsu:~/environment $ rails new sample
ちなみに rails new sample
は私の環境では約5分くらいかかりました。
動作確認
y-amadatsu:~/environment $ cd sample/
y-amadatsu:~/environment/sample (master) $ rails g scaffold book
y-amadatsu:~/environment/sample (master) $ rails db:migrate
y-amadatsu:~/environment/sample (master) $ rails server
=> Booting Puma
=> Rails 6.0.3 application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 4.3.3 (ruby 2.6.6-p146), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:8080
* Listening on tcp://[::1]:8080
Use Ctrl-C to stop
ブラウザで確認してみましょう。上部メニューの Preview
から Preview Running Application
をクリックしてください。
クリックすると以下のエラー画面が表示されます(一部塗りつぶしで消してます)
これはRails6の新しいセキュリティ機構によって表示されるエラーです。詳しくは下記を参照してください。
Rails6 のちょい足しな新機能を試す78(Guard DNS rebiding attacks編)
エラー画面で表示された config.hosts << "xxxxxxxxxxxxxx.vfs.cloud9.us-east-1.amazonaws.com"
をコピーして /sample/config/environments/development.rb
に以下のように追記して保存してください。
今立ち上がっているサーバを Ctrl-C
で停止します。
y-amadatsu:~/environment/sample (master) $ rails server
=> Booting Puma
=> Rails 6.0.3 application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 4.3.3 (ruby 2.6.6-p146), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:8080
* Listening on tcp://[::1]:8080
Use Ctrl-C to stop
^C- Gracefully stopping, waiting for requests to finish
=== puma shutdown: 2020-05-16 17:31:18 +0900 ===
- Goodbye!
Exiting
そして再度 rails server
で起動してpreviewを再確認してください。なお、Cloud9上のブラウザではなぜか接続できません…これはググってみても誰も解決できていなさそう。間違いなくネットワークの設定なんだけどな…
なので、接続できていない画面のURLの右に「矢印と重なったウィンドウのボタン」(マウスオーバーで「Pop Out Into New Window」と表示される)がありますのでクリックしてください。下記の画像右端のボタンです。
するとお使いのブラウザのタブで表示できると思います。
ここまででrailsgirlsのインストール作業としては完了です!
以下postgresqlへの接続を試す
現時点ではDBがsqliteとなっていますので、postgresqlに置き換えます。
まず database.yml
ファイルは下記の内容でまるっと置き換えてください6
default: &default
adapter: postgresql
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: postgres
password: postgres
host: localhost
timeout: 5000
development:
<<: *default
database: sample_development
test:
<<: *default
database: sample_test
production:
<<: *default
database: sample_production
Gemfileは sqlite3
の行を見つけてコメントアウトし、 gem 'pg'
を追加して下さい。
#gem 'sqlite3', '~> 1.4'
gem 'pg'
Gemfileを修正したので bundle install
しなおしましょう7。
y-amadatsu:~/environment/sample (master) $ bundle install
今回は開発環境なのでDBのユーザはpostgresのままでパスワードも簡易的に設定します。
y-amadatsu:~/environment/sample (master) $ sudo -u postgres psql
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.
postgres=# alter role postgres with password 'postgres';
ALTER ROLE
postgres=# \q
y-amadatsu:~/environ
\q
でコンソールに戻ります。
なお、他のサイトでは pg_hba.conf
の修正が必要と書いてありますが、今回インストールされたPostgreSQL 10系だとインストール時に最低限の設定をしてくれていたのでスキップします。下記がインストール時のログの抜粋です。
Creating new PostgreSQL cluster 10/main ...
/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
これでDBの設定も問題ないはずです8。一気に行きます。
y-amadatsu:~/environment/sample (master) $ rake db:create
y-amadatsu:~/environment/sample (master) $ rake db:migrate
y-amadatsu:~/environment/sample (master) $ rails server
簡素な画面ですが、きちんと /books
も一覧表示できることを確認しました。
お疲れさまでした!
-
Cloud9の動作環境(environment)のことです。 ↩
-
https://linuxfan.info/package-management-ubuntu を参照。aptが推奨されるようになってかなり立つのですが、このようにネット上では最新でない記載も多々あります。 ↩
-
そのままでも十分早いので問題ないと思います。むしろ、今後rbenv自体をアップデートするときにも再度コンパイルが必要だと思われますが、たぶんその時には忘れていると思います ↩
-
ネットで探すと
source ~/.bash_profile
を実行する手順での説明が多いと思います。間違いではないのですが、ソフト提供元のインストールの指示(一次情報とも言います)どおりやったほうが未知の問題への遭遇確率が減るので慣れるまでは愚直に指示通りする方法をお勧めします。あと、ここではディレクトリ移動の説明を省きたかったのもあります。 ↩ -
Gemfileのbundle install時にnativeコンパイルが走る場合、別途ライブラリのインストールが必要になる場合があります ↩
-
本来は同じrailsバージョンで
rails new appname --database=postgresql
した結果のdatabase.ymlをベースに修正したほうが無難です。 ↩ -
ここは
bundle update
でも同じです。個人的にはbundle update
は個別パッケージのみバージョンを上げるときに利用しています。 ↩ -
インストール時に作られた
postgres
ユーザはいわゆるなんでもできるスーパーユーザなので、ローカルでの開発以外ではこのような使い方はNGです。別途アプリ用のユーザを作成してください。 ↩