Rails7.1の初期セットアップ
株式会社TECH LUCKという会社で代表兼エンジニアをしている齊藤です。
DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら弊社HPからご相談をいただけますと幸いです。
以下のような問題に対応することが可能です。
- プロジェクトでRailsエンジニアが足りなくて困っている
- Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
- オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい
また、Railsエンジニアも募集しておりますので、興味がありましたら弊社HPからご連絡いただけますと幸いです。
前提
Rails7.1でrails new
をするところからやっていくことをリストアップします。
随時更新していきます。
rails newのオプション
基本的に以下のコマンドで実行している。
rails _7.1.3.2_ new test_project -d mysql --css tailwind
CSSはBootstrapを使いたい場合は、bootstrap
、Tailwindを使いたい場合はtailwind
を指定する。
DBのオプションは何も指定しない場合はPostgreSQLになる。MySQLを利用したいため、mysql
を指定する。
他にも様々なオプションも指定できますが、長くなるので他の記事を参考にしてください。
.gitignoreの設定
Jetbrains社のエディターを使っている場合は、.gitignore
に以下の記述を追記します。
.idea/*
しかし、上記の方法ではすでにコミットされているファイルをignoreの対象にすることはできません。そのため、すでにコミットしてしまった場合には、以下のコマンドを実行して無視するようにします。
git rm -r --cached .idea/*
不要なファイルが作成されないようにする
rails g
などのコマンドの際に、~~~_helper.rb
や~~~_spce.rb
などの、自身では利用しないようなファイルが作成されるため、これらを作成されないように設定します。
config/application.rb
の特定の箇所に以下の記述を追記します。
これによって、rails generate
などのgenerateコマンドの際に、不要なファイルが作成されなくなります。
class Application < Rails::Application
...(省略)
config.generators do |g|
g.stylesheets false
g.javascripts false
g.helper false
g.test_framework false
end
end
参考サイト
様々なgemの導入
画面系
- haml-rails or slim
デバッグ系
- pry-rails
- 導入方法:Gemfileに記述して、
bundle install
するだけ
- 導入方法:Gemfileに記述して、
- pry-byebug
- 最近では
pry-rails
よりも、pry-byebug
を利用している。 - 導入方法:Gemfileに記述して、
bundle install
するだけ - 詳細な違いなどは以下の記事がよかった。
- https://techtechmedia.com/debug-summary-rail/
- 最近では
- bullet
- letter_opener_web
テスト系
- rspec
- factory_bot_rails
- faker
ユーザー管理系
- devise and devise-i18n
コード品質管理系
- rubocop
- 導入方法はこの記事に記載
- brakeman
- rails_best_practices
Rubocop導入方法
group :development do
gem 'rubocop', require: false
gem 'rubocop-performance', require: false
gem 'rubocop-rails', require: false
gem 'rubocop-rspec', require: false
end
bundle install
次にrubocopで必要な設定ファイルを作成するために、以下のコマンドを実行します。
bundle exec rubocop --auto-gen-config
これにより、プロジェクト配下に.rubocop.yml
と.rubocop_todo.yml
が作成されます。
以下の.rubocop.yml
は、私がいつもプロジェクトで導入する設定ファイルになります。
inherit_from: .rubocop_todo.yml
require:
- rubocop-rails
- rubocop-rspec
- rubocop-performance
AllCops:
TargetRubyVersion: 3.1.0
TargetRailsVersion: 6.1.4.4
Exclude:
- node_modules/**/*
- vendor/**/*
- bin/*
- db/migrate/*
- db/schema.rb
Metrics/AbcSize:
Max: 65
Metrics/ClassLength:
Max: 160
Metrics/CyclomaticComplexity:
Max: 10
Layout/LineLength:
Max: 200
Metrics/MethodLength:
Max: 50
Metrics/PerceivedComplexity:
Max: 11
Style/ClassAndModuleChildren:
Enabled: false
Style/Documentation:
Enabled: false
Style/GuardClause:
Enabled: false
# Use only ascii symbols in comments.
Style/AsciiComments:
Enabled: false
Layout/EmptyLinesAroundAttributeAccessor:
Enabled: true
Layout/SpaceAroundMethodCallOperator:
Enabled: true
Lint/RaiseException:
Enabled: true
Lint/StructNewOverride:
Enabled: true
Style/ExponentialNotation:
Enabled: true
Style/HashEachMethods:
Enabled: false
Style/HashTransformKeys:
Enabled: true
Style/HashTransformValues:
Enabled: true
Style/SlicingWithRange:
Enabled: true
Style/EmptyMethod:
EnforcedStyle: expanded
Rails/UnknownEnv:
Environments:
- production
- staging
- development
- test
Style/SymbolArray:
Enabled: false
Rails/LexicallyScopedActionFilter:
Enabled: false
Style/RescueStandardError:
EnforcedStyle: implicit
RSpec/ExampleLength:
Enabled: false
RSpec/NestedGroups:
Enabled: false
すでにあるファイルの警告を無視するコマンドを実行。これにより.rubocop_todo.yml
がプロジェクトのルート配下に作成される。
rubocop --auto-gen-config
日本語化対応
画面の文字などを日本語で表示されるように設定します。
以下の記事がわかりやすかったです。
flashメッセージの設定
不要なルーティングの削除
※これはrails routes
を実行した際に、不要なルーティングがある場合に行います。
config/application.rb
にrequire "rails/all"
があるので、それを以下の記述に変更して不要な機能をコメントアウトします。
# 変更前
require "rails/all"
# 変更後
# 以下の中で不要な機能をコメントアウトする
require "active_record/railtie"
require "active_storage/engine"
require "action_controller/railtie"
require "action_view/railtie"
require "action_mailer/railtie"
require "active_job/railtie"
require "action_cable/engine"
require "action_mailbox/engine"
require "action_text/engine"
require "rails/test_unit/railtie"
require "sprockets/railtie"
タイムゾーン周りの設定
以下の記事に記載しました。参考にしていただけると幸いです。
404, 500エラーなどのエラーメッセージの作成
Discussion