2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails のプロジェクト作成方法まとめ (Ubuntu 22.04)

Posted at

Railsプロジェクトの作り方を忘れてしまいがちなので、復習として記事にしておきます。

環境

  • Ubuntu 22.04
  • rbenv インストール済み
  • ruby-build インストール済み

インストール方法はこちらに記載してあります。インストールしていない方は事前にインストールしてください。

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="~/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
rbenv -v
 
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
sudo apt install -y build-essential libssl-dev zlib1g-dev
rbenv install --list
rbenv install 3.2.1
rbenv global 3.2.1
ruby -v

gem update
gem install bundler
bundle -v

Ruby のインストール

Ruby の最新安定バージョンが 3.2.1 なので今回はそれを使いましょう。.ruby-version ファイルを作成して使いたいバージョンを書き込みます。Ruby の最新バージョンは https://www.ruby-lang.org/ja/downloads/ で確認できます。

.ruby-version
3.2.1
$ rbenv version
rbenv: version '3.2.1' is not installed (set by /path/to/repository/.ruby-version)
$ rbenv install # 必要なバージョンがインストールされていない場合はこちらを実行
$ rbenv version
3.2.1 (set by /path/to/repository/.ruby-version)

Rails のインストール

グローバルに rails がインストールされていない想定で、Gemfile を書いて rails コマンドを使えるようにしましょう。

$ bundle init

# gem "rails" のコメントアウトを外します。
バージョンを指定しなければ最新バージョンがインストールされるので、バージョン指定はなくても大丈夫です。

Gemfile
# frozen_string_literal: true

source "https://rubygems.org"

gem "rails"

備考:バージョン指定する場合は gem "rails", "~> 6.0.1" のように記載してください。このようにすると、6.0.x まではアップデートできるようになります。

Gemfile を更新したら bundle install を実行すると、rails コマンドが使えるようになります。

$ bundle install

備考:--path vendor/bundle オプションは付けても付けなくても大丈夫です。付ける場合は後で .gitignorevendor/bundle を追加するのを忘れないようにしましょう。

Rails リポジトリの初期化

rails new を実行します。Gemfile は Y を押して上書きしてしまって大丈夫です。webpack を使うかどうかなどをオプションで設定できます。

$ bundle exec rails new . -B -d mysql --skip-turbolinks --skip-test --skip-git
       exist  
      create  README.md
      create  Rakefile
   identical  .ruby-version
      create  config.ru
    conflict  Gemfile
Overwrite /path/to/repository/Gemfile? (enter "h" for help) [Ynaqdhm] Y

......(以下省略)

バージョンを指定する場合は以下のようにします。

$ bundle exec rails new _6.0.1_ . -B -d mysql --skip-turbolinks --skip-test --skip-git

備考:オプションはこちらを参考にしました。

もし --skip-git を指定しなかった場合はブランチが main に変わってしまうので、元のブランチを checkout します。

$ git checkout master

代わりに --skip-git を指定すると .gitignore が作成されないようです。それでは困るので用意しましょう。

.gitignore
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
#   git config --global core.excludesfile '~/.gitignore_global'

# Ignore bundler config.
/.bundle
/vendor/bundle

# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep

# Ignore pidfiles, but keep the directory.
/tmp/pids/*
!/tmp/pids/
!/tmp/pids/.keep

# Ignore uploaded files in development.
/storage/*
!/storage/.keep
/tmp/storage/*
!/tmp/storage/
!/tmp/storage/.keep

/public/assets

# Ignore master key for decrypting credentials and more.
/config/master.key

Rails の最新バージョンがインストールされていることを確認しましょう。

$ cat Gemfile | grep '"rails"'
# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
gem "rails", "~> 7.0.4", ">= 7.0.4.2"

.gitignorevendor/bundle を追加する場合はこのタイミングで行います。

Rails の依存パッケージをインストールします。

$ bundle install

DBの初期化と起動

パスワードは空でも良いのですが、最近のUbuntuではmysqlに空のパスワードを設定することを許可してくれないので、今回はデータベースのパスワードを設定しましょう。.env にパスワードを記載して、環境ごとに読み込めるようにします。

Gemfile
gem 'dotenv-rails'
$ bundle install
.env
MY_APP_DATABASE_PASSWORD='<ここにmysqlのrootパスワードを記載>'
.env.sample
MY_APP_DATABASE_PASSWORD=
config/database.yml
default: &default
  password: "<%= ENV.fetch("MY_APP_DATABASE_PASSWORD") { "" } %>"
.gitignore
.env

参考:

$ bundle exec rails db:create
$ bundle exec rails db:migrate

ここで db/schema.rb が作成されます。

$ bundle exec rails server

http://localhost:3000 にアクセスできるか確認しましょう。
(URL が https になっていてアクセスできない場合があるようなので注意)

slim のインストール

Gemfile
gem 'slim-rails'
gem 'html2slim'
$ bundle install

# erb を slim に変換して erb を削除
$ bundle exec erb2slim app/views/ app/views/ --delete --trace

補足:undefined method 'exists?' for File:Class (NoMethodError) というエラーが出た場合は、 File.exist? に書き換える。

$ bundle exec erb2slim app/views/ app/views/ --delete --trace
bundler: failed to load command: erb2slim (/home/yuinore/.rbenv/versions/3.2.1/bin/erb2slim)
/home/yuinore/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/html2slim-0.2.0/lib/html2slim/converter.rb:17:in `initialize': undefined method `exists?' for File:Class (NoMethodError)

      erb = File.exists?(file) ? open(file).read : file
                ^^^^^^^^
Did you mean?  exist?

vendor/bundle/ruby/3.2.0/gems/html2slim-0.2.0/lib/html2slim/converter.rb
-       erb = File.exists?(file) ? open(file).read : file
+       erb = File.exist?(file) ? open(file).read : file

最近修正がマージされたようなのでしばらくしたら rubygems にも降ってくると思います。

rubocop のインストール

Gemfile
group :development do
  gem 'rubocop', require: false
  gem 'rubocop-performance', require: false
  gem 'rubocop-rails', require: false
end

.rubocop.yml を作成します。

.rubocop.yml
require:
  - rubocop-performance
  - rubocop-rails

AllCops:
  NewCops: enable

Style/Documentation:
  Enabled: false
$ bundle install
$ bundle exec rubocop --autocorrect
$ bundle exec rubocop --autocorrect-all

annotate のインストール

annotate を使うとスキーマ情報をモデルに書き出してくれます。

Gemfile
group :development do
  gem 'annotate'
end
$ bundle install
$ bundle exec rails g annotate:install
$ bundle exec rails db:migrate
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?