Railsアプリケーションの作成

動機

RailsアプリケーションでGitHub Actionsを試そうと思い、その準備のために空のRailsアプリケーションを作成する必要がありました。その時のメモです。

Dockerを利用したほうがよいのでは?

publicなDocker imageを利用して誰でも作成できるようにしたほうがよいと思います。

こちらのコンテナを落としてみたんですが、Rubyのバージョンが2.3.3p222でした…他を探すにしても数が多すぎてよくわからなかったので、今回はローカル(Mac)に作成します。

Rubyのインストール

ローカルにanyenvをインストールしていました。最新バージョンのRubyをインストールするためにupdateします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ anyenv update
Updating 'anyenv'...
Updating 'anyenv/anyenv-update'...
Updating 'ndenv'...
Updating 'ndenv/ndenv-yarn-install'...
Updating 'ndenv/node-build'...
Updating 'rbenv'...
| From https://github.com/rbenv/rbenv
| c2cfbd1..c879cb0 master -> origin/master
Updating 'rbenv/ruby-build'...
| From https://github.com/rbenv/ruby-build
| 637ddf3..69ccbf4 master -> origin/master
| * [new tag] v20200518 -> v20200518
| * [new tag] v20200519 -> v20200519
| * [new tag] v20200520 -> v20200520

anyenvのupdateについてはこちら

インストールできるRubyを確認します

1
2
3
4
5
6
7
8
9
10
11
12
$ rbenv install -l
2.5.8
2.6.6
2.7.1
jruby-9.2.12.0
maglev-1.0.0
mruby-2.1.1
rbx-5.0
truffleruby-20.1.0

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all' to show all local versions.

メッセージにあるようにstableの最新しか表示されないようになったようです。

最新の2.7.1をインストールします。

1
2
3
4
5
6
7
8
9
10
11
$ rbenv install 2.7.1
Downloading openssl-1.1.1g.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46
Installing openssl-1.1.1g...
Installed openssl-1.1.1g to /Users/username/.anyenv/envs/rbenv/versions/2.7.1

Downloading ruby-2.7.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.bz2
Installing ruby-2.7.1...
ruby-build: using readline from homebrew
Installed ruby-2.7.1 to /Users/username/.anyenv/envs/rbenv/versions/2.7.1

2.7.1を利用するようにします。

1
2
3
$ rbenv local 2.7.1
$ ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19]

Railsアプリケーションの作成

Gemfileの作成

bundler initします

1
2
$ bundler init
Writing new Gemfile to ~/github/github_actions_for_rails/Gemfile

Gemfileの更新

作成したGemfileを更新します。MySQLを利用する予定なのでmysql2を追加します。

1
2
gem 'rails'
gem 'mysql2'

bundle install

bundle installします

1
2
3
4
5
6
7
8
9
10
11
Installing mysql2 0.5.3 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

(中略)

linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

いつものようにエラーが出ます。毎回忘れるのですが、bundle configします。

1
$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"

再度bundle installして完了です。

Railsアプリケーションの作成

rails newします。

1
$ bundle exec rails new . -d mysql

conflictするファイル(.gitignore, Gemfileなど)はoverwriteするようにします。不要なgemなどはスキップをするようにしたほうがよいと思いますが、今回はGitHub Actionsを試すためなので特に指定していません。GitHub ActionsのワークフローでMySQLと接続する処理を行おうと思うのでデータベースにmysqlを指定しています。

webpacker:installでメッセージが…

1
2
3
rails  webpacker:install
Webpacker requires Node.js >= 8.16.0 and you are using 8.9.4
Please upgrade Node.js https://nodejs.org/en/download/

ということで最新版にします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ ndenv install v12.18.2
Downloading node-v12.18.2-darwin-x64.tar.gz...
-> https://nodejs.org/dist/v12.18.2/node-v12.18.2-darwin-x64.tar.gz
Installing node-v12.18.2-darwin-x64...
Installed node-v12.18.2-darwin-x64 to /Users/username/.anyenv/envs/ndenv/versions/v12.18.2

Installing Yarn...
/Users/username/.anyenv/envs/ndenv/versions/v12.18.2/bin/yarn -> /Users/username/.anyenv/envs/ndenv/versions/v12.18.2/lib/node_modules/yarn/bin/yarn.js
/Users/username/.anyenv/envs/ndenv/versions/v12.18.2/bin/yarnpkg -> /Users/username/.anyenv/envs/ndenv/versions/v12.18.2/lib/node_modules/yarn/bin/yarn.js
+ yarn@1.22.4
added 1 package in 0.82s
Installed Yarn 1.22.4
$ ndenv local v12.18.2
$ node -v
v12.18.2

再度webpacker:installを実行します。

1
2
3
4
5
6
7
8
$ rails webpacker:install
create config/webpacker.yml
Copying webpack core config
create config/webpack

(中略)

Webpacker successfully installed 🎉 🍰

最後に動作確認します

1
2
3
4
5
6
7
8
9
10
$ ./bin/rails s -b 0.0.0.0
=> Booting Puma
=> Rails 6.0.3.2 application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 4.3.5 (ruby 2.7.1-p83), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

TOPページにアクセスするとデータベースがないというエラーが発生。config/database.ymlに書かれているデータベースを作成して無事TOPページを表示することができました。

まとめと次回

今回テスト用のRailsアプリケーションを作成しました。次回はこれを用いてGitHub Actionsでワークフローを作成したいと思います。