Kanioの日記

ジャンルが定まらず、混沌としています。

最初に confing/application.rb をいじる - Rails7 開発記

最近思い出したことがある。自分はITエンジニアだった。

ということで、特に何もすることのない休日を有効利用すべくサービスを開発することにした。副業をしようかとも思ったけれども、「コードは好きに書きたいんだよ」という内なる欲求に勝てなかった。ちなみに金は無い。

今回は皆んな大好きRailsの時間だ。

Railsも歴史があり、Rails4から触っていたのが今やRails7。ドラクエは2から6まで遊んだので5タイトル、つまりRails8までは触るかもしれない。

本記事とは関係ないが、Rails5と6にあったWebpackerはドラクエにおける特技みたいな感じがする。フロント開発を求められたRailsと戦闘の個性を求められたドラクエ、どちらも世に求められて機能を追加したらイマイチだったという。前者は独自仕様を覚える必要があり、後者はバランスブレイカーになって戦いを大味にしてしまった。Railsは無料で使わしてもらっているので何も言えないが、ドラクエには言える。いらんことすんなよ。

さて、初期設定。

環境
ruby 3.1.2p20
Rails 7.0.2.4

自分は使わない機能はさっさと無効にするタイプのエンジニアである。

Active Storage はイマイチだと思っているので無効にする。一つのフォルダに延々とファイルをアップロードしたり、N+1問題が起きたり、画像処理を入れ込むのが難しかったりとモヤッとすることが多い。職場だと使うが、個人ではあまり使いたくない。

Active Storage を使わないので Action Text は使えない。チャット的なものは想像していないので Action Cable もパス。というかセッションが増えるのが感覚的に怖い。Action Mailboxも使わないわ。

# config/application.rb

# require "rails/all"
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
# require "active_storage/engine"
require "action_controller/railtie"
require "action_mailer/railtie"
# require "action_mailbox/engine"
# require "action_text/engine"
require "action_view/railtie"
# require "action_cable/engine"
require "rails/test_unit/railtie"


Environmentの関連箇所を直さないと 'method_missing' のエラーが出て怒られる。毎回、怒られてる気がする。

application.rbを触っているので、ついでに他の設定も。とりあえずこれで行こう。

# config/application.rb

# TimeZone
config.time_zone = 'Tokyo'
config.active_record.default_timezone = :local

# scaffold
config.generators do |g|
  g.stylesheets false
  g.javascripts false
  g.helper false
  g.template_engine = :slim
  g.jbuilder = false
end

# gzip
config.middleware.use Rack::Deflater

# validation error
# 参照: https://qiita.com/youcune/items/76a50ae3a2863a8f8b00#%E7%B5%90%E6%9E%9C
config.action_view.field_error_proc = Proc.new do |html_tag, instance|
  if instance.kind_of?(ActionView::Helpers::Tags::Label)
    # skip when label
    html_tag.html_safe
  else
    "<div class=\"has-error\">#{html_tag}<span class=\"help-block\">#{instance.error_message.first}</span></div>".html_safe
  end
end

# add path
config.autoload_paths += %W(#{config.root}/app/validators)